面向对象程序设计寒假作业3

这个作业属于哪个课程

https://edu.cnblogs.com/campus/fzu/2020OOP
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/2020OOP/homework/10288
这个作业的目标

 1、优化代码(增加负数的输入输出)

 2、各个函数单元测试

 3、编译代码 

 4、测试代码

作业正文  https:////www.cnblogs.com/cyn522/p/12308410.html

其他参考文献

http://docs.30c.org/dosbat/index.html

https://baike.baidu.com/item/freopen/10942366?fr=aladdin

https://blog.csdn.net/young0325/article/details/7190735

https://blog.csdn.net/weixin_44593822/article/details/89526601

https://blog.csdn.net/li_l_il/article/details/90524733?locationNum=1&fps=1

仓库地址 https://github.com/fzu-cyn/winter-homework-three
文件列表

优化代码:汉字计算.cpp

            汉字计算.exe

单元测试:中文转阿拉伯数字.cpp

     中文转阿拉伯数字.exe

       中文转阿拉伯数字.txt

       中文转阿拉伯数字.bat

       运算符.cpp

       运算符.exe

       运算符.txt

       运算符.bat

       阿拉伯数字转汉字输出.cpp

       阿拉伯数字转汉字输出.exe

       阿拉伯数字转汉字输出.txt

       阿拉伯数字转汉字输出.bat

编译代码:汉字运算.cpp

       汉字运算.exe

       编译脚本.txt

       编译脚本.bat

测试代码:汉字运算(测试代码).cpp

       汉字运算(测试代码).exe

       1.txt

       -7.txt

       124.txt

       -139.txt

第三次作业

  1. 继续完成编程题
  2. 发布博客

编程题(请使用C语言或者C++完成以下题目):

  • 继续完成作业二的编程题。
  • 优化架构,思考代码的拓展性,比如我需要增加其他功能,如选择,循环语句怎么办。
  • 思考:可以参考现有的编程语言,把这些语言的内容加入。如选择、循环语句、函数、或者扩大数字范围,支持负数等。
编程题要求:
  1. 读题,提取出题目的要求。
  2. 分解需求,把需求分解为几个你觉得不太相关的模块。
  3. 思考每个模块怎么写,可以从简单的模块开始写。
  4. 对于不会的问题进行查阅资料。
  5. 对于每一个模块设计测试用例。
  6. 详细记录下以上每一步,并写在博客中。
  7. 不要求完全做出来,但要求记录详细。
  8. 建议博客长度不少于1000字(不包含代码)。
解释

单元测试:对每一个函数进行测试,这代表了你需要把代码分到不同的文件,使用不同的主函数切换测试/运行。
编译脚本:运行该脚本后无需任何输入就能自动编译全部代码,并输出编译结束的代码。
测试脚本:运行该脚本后可以自动的编译并运行所有测试样例,并输出测试结果。

推荐博客

推荐1


在完成了以上作业后,写一篇博客体现你完成作业的过程和内容,推荐包括以下内容:

  • 问答题的答案,和思考过程。
  • 实践题的截图(禁止拍屏),和遇到的问题。
  • 编程题的主要实现过程、思考过程和遇到的问题。
  • 你查阅的资料的网址。
  • 为了方便其他学校的老师或者助教了解课程实况,请大家在作业开头添加抬头,与上次作业格式一致

注意完成本次作业后,你需要在博客顶部写上你的仓库地址。我会尝试运行你的作业。如果你没有作完,请特别注明

思考:

首先将作业分成四部分,优化代码,单元测试,编译脚本,测试脚本。

一、优化代码(在原有的基础上实现了输入输出负数)

输入数字的范围:-10~+10

输出数字的范围:-1000~+1000

这次在编写代码的时候,在原基础上增加了负数的输入输出,输入数字范围为-10~+10,输出数字的范围为-1000~+1000。在输入上,我编写了一个input函数用于实现汉字的输入(由于要返回数字,所以定为int型),不过最开始的实现“整数 钱包 等于 零”这样的语句的输入语句,我将它放在了主函数中,为了安全,将每个字符串的长度定义到了100(实际输入时一般在20以内)。在input函数内又有一个judge函数,用来判断输入的字符串是否为“增加”或“减少”并进行相关运算。在input函数内,输入一个字符串后,通过比较函数比较该字符串与“看看”,如果是“看看”的话继续输入一个字符串后结束输入,如果不是的话继续输入一个字符串后结束输入。(可能描述有些抽象,这是根据例子来写的,具体看代码)(当然不可忽略的就是汉字转阿拉伯数字的函数:change函数)

input函数:

int input()
{
    char a[100],b[100],c[100];
    int sum=0,j,d;
    int judge(char b[100],char c[100]);
    while(1)
    {
        scanf(" %s",a);
        if(strcmp(a,"看看")==0) 
        {
            scanf(" %s",b);
            break;
        }
        scanf(" %s %s",b,c);
        d=judge(b,c);
        sum=sum+d;
    }
    return sum;
}

judge函数:

int judge(char b[100],char c[100])
{
    int sum=0,j;
    int change(char c[]);
    if(strcmp(b,"增加")==0)
    {
        j=change(c);
        sum=sum+j;
    }
    if(strcmp(b,"减少")==0)
    {
        j=change(c);
        sum=sum-j;
    }
    return sum;
}

change函数:

int change(char c[])
{
    if(strcmp(c,"")==0) return 0;
    if(strcmp(c,"")==0) return 1;
    if(strcmp(c,"")==0) return 2;
    if(strcmp(c,"")==0) return 3;
    if(strcmp(c,"")==0) return 4;
    if(strcmp(c,"")==0) return 5;
    if(strcmp(c,"")==0) return 6;
    if(strcmp(c,"")==0) return 7;
    if(strcmp(c,"")==0) return 8;
    if(strcmp(c,"")==0) return 9;
    if(strcmp(c,"")==0) return 10;
    if(strcmp(c,"负一")==0) return -1;
    if(strcmp(c,"负二")==0) return -2;
    if(strcmp(c,"负三")==0) return -3;
    if(strcmp(c,"负四")==0) return -4;
    if(strcmp(c,"负五")==0) return -5;
    if(strcmp(c,"负六")==0) return -6;
    if(strcmp(c,"负七")==0) return -7;
    if(strcmp(c,"负八")==0) return -8;
    if(strcmp(c,"负九")==0) return -9;
    if(strcmp(c,"负十")==0) return -10;    
}

在输出时,编写了一个output函数用于输出,由于要直接在函数内部实现输出,所以函数无返回值。在output函数中,主要分为负数和非负数两种情况,在非负数的情况中分为0~10,11~20,21~99,100~999,1000,>1000这六种情况,分别写了六个函数输出这六种情况。负数则是在此基础上,先通过绝对值函数取绝对值,同样分为六种情况,输出时先输出“负”,再转到各个函数输出。(由于负数的情况中取绝对值,所以要先考虑非负数情况再考虑负数情况或是改用if ···else语句而非是两个if语句)

void output(int sum)
{
    void shi(int sum);
    void ershi(int sum);
    void yibai(int sum); 
    void yiqian(int sum);
    if(sum>=0)
    {
        if(sum<=10) shi(sum);
        if(sum>10&&sum<=20) ershi(sum);
        if(sum>20&&sum<100) yibai(sum);
        if(sum>=100&&sum<1000) yiqian(sum);
        if(sum==1000) printf("一千"); 
        if(sum>1000) printf("太有钱啦"); 
    }
    if(sum<0) 
    {
        sum=fabs(sum);
        if(sum<=10) 
        {
            printf("");
            shi(sum);
        }
        if(sum>10&&sum<=20) 
        {
            printf("");
            ershi(sum);
        }
        if(sum>20&&sum<100) 
        {
            printf("");
            yibai(sum);
        }
        if(sum>=100&&sum<1000) 
        {
            printf("");
            yiqian(sum);
        }
        if(sum==1000) printf("负一千"); 
        if(sum>1000) printf("负债累累了亲");
        
    }
}

0~10:转到判断十以内数的转换函数。该转换函数主要由switch函数构成。

11~20:转到判断十一至二十数的转换函数。

21~99:转到判断二十一至九十九数的转换函数。其中又分为能被十整除和不能被十整除两种情况。

100~999:转到判断一百至九百九十九的转换函数。其中分为能被一百整除,不能被一百整除但能被十整除,既不能被一百整除也不能被十整除三种情况。在既不能被一百整除也不能被十整除这种情况中,特别分出像101~109这样的情况,这种情况下的输出比较特殊。

1000:直接输出

>1000:(正)输出“太有钱啦”,(负)输出“负债累累了亲”

小结:(每种情况中包含正负情况)

①0~10

②11~20

③21~99

④100~999

⑤1000

⑥>1000

 完整代码:

#include<stdio.h>
#include<string.h>
#include<math.h> 
int main()
{
    char name1[100],name2[100],name3[100],name4[100];
    int i=0,m,sum=0,j,j0;
    int change(char c[]); 
    int input();
    void output(int sum);
    scanf("%s %s %s %s",name1,name2,name3,name4);
    j0=change(name4);
    sum=input();
    sum=sum+j0;
    output(sum);
    return 0;
}
int input()
{
    char a[100],b[100],c[100];
    int sum=0,j,d;
    int judge(char b[100],char c[100]);
    while(1)
    {
        scanf(" %s",a);
        if(strcmp(a,"看看")==0) 
        {
            scanf(" %s",b);
            break;
        }
        scanf(" %s %s",b,c);
        d=judge(b,c);
        sum=sum+d;
    }
    return sum;
}
int judge(char b[100],char c[100])
{
    int sum=0,j;
    int change(char c[]);
    if(strcmp(b,"增加")==0)
    {
        j=change(c);
        sum=sum+j;
    }
    if(strcmp(b,"减少")==0)
    {
        j=change(c);
        sum=sum-j;
    }
    return sum;
}
void output(int sum)
{
    void shi(int sum);
    void ershi(int sum);
    void yibai(int sum); 
    void yiqian(int sum);
    if(sum>=0)
    {
        if(sum<=10) shi(sum);
        if(sum>10&&sum<=20) ershi(sum);
        if(sum>20&&sum<100) yibai(sum);
        if(sum>=100&&sum<1000) yiqian(sum);
        if(sum==1000) printf("一千"); 
        if(sum>1000) printf("太有钱啦"); 
    }
    if(sum<0) 
    {
        sum=fabs(sum);
        if(sum<=10) 
        {
            printf("");
            shi(sum);
        }
        if(sum>10&&sum<=20) 
        {
            printf("");
            ershi(sum);
        }
        if(sum>20&&sum<100) 
        {
            printf("");
            yibai(sum);
        }
        if(sum>=100&&sum<1000) 
        {
            printf("");
            yiqian(sum);
        }
        if(sum==1000) printf("负一千"); 
        if(sum>1000) printf("负债累累了亲");
        
    }
}
int change(char c[])
{
    
        if(strcmp(c,"")==0) return 0;
        if(strcmp(c,"")==0) return 1;
        if(strcmp(c,"")==0) return 2;
        if(strcmp(c,"")==0) return 3;
        if(strcmp(c,"")==0) return 4;
        if(strcmp(c,"")==0) return 5;
        if(strcmp(c,"")==0) return 6;
        if(strcmp(c,"")==0) return 7;
        if(strcmp(c,"")==0) return 8;
        if(strcmp(c,"")==0) return 9;
        if(strcmp(c,"")==0) return 10;
        if(strcmp(c,"负一")==0) return -1;
        if(strcmp(c,"负二")==0) return -2;
        if(strcmp(c,"负三")==0) return -3;
        if(strcmp(c,"负四")==0) return -4;
        if(strcmp(c,"负五")==0) return -5;
        if(strcmp(c,"负六")==0) return -6;
        if(strcmp(c,"负七")==0) return -7;
        if(strcmp(c,"负八")==0) return -8;
        if(strcmp(c,"负九")==0) return -9;
        if(strcmp(c,"负十")==0) return -10;
    
}
void shi(int sum)
{
    switch(sum)
    {
        case 0 : printf("");break;
        case 1 : printf("");break;
        case 2 : printf("");break;
        case 3 : printf("");break;
        case 4 : printf("");break;
        case 5 : printf("");break;
        case 6 : printf("");break;
        case 7 : printf("");break;
        case 8 : printf("");break;
        case 9 : printf("");break;
        case 10 : printf("");break;
    }
}
void ershi(int sum)
{
    switch(sum)
    {
        case 11 : printf("十一");break;
        case 12 : printf("十二");break;
        case 13 : printf("十三");break;
        case 14 : printf("十四");break;
        case 15 : printf("十五");break;
        case 16 : printf("十六");break;
        case 17 : printf("十七");break;
        case 18 : printf("十八");break;
        case 19 : printf("十九");break;
        case 20 : printf("二十");break;
    }
}
void yibai(int sum)
{
    int a,b;
    void yibai_Situation_one(int sum);
    void yibai_Situation_two1(int a);
    void yibai_Situation_two2(int b);
    if(sum%10==0) yibai_Situation_one(sum);
    else
    {
        a=sum/10;
        b=sum%10;
        yibai_Situation_two1(a);
        yibai_Situation_two2(b);
    }
}
void yibai_Situation_one(int sum)
{
    switch(sum/10)
    {
        case 3 : printf("三十");break;
        case 4 : printf("四十");break;
        case 5 : printf("五十");break;
        case 6 : printf("六十");break;
        case 7 : printf("七十");break;
        case 8 : printf("八十");break;
        case 9 : printf("九十");break;
    }
}
void yibai_Situation_two1(int a)
{
    switch(a)
    {
        case 2 : printf("二十");break;
        case 3 : printf("三十");break;
        case 4 : printf("四十");break;
        case 5 : printf("五十");break;
        case 6 : printf("六十");break;
        case 7 : printf("七十");break;
        case 8 : printf("八十");break;
        case 9 : printf("九十");break;
        }
}
void yibai_Situation_two2(int b)
{
    switch(b)
    {
        case 1 : printf("");break;
        case 2 : printf("");break;
        case 3 : printf("");break;
        case 4 : printf("");break;
        case 5 : printf("");break;
        case 6 : printf("");break;
        case 7 : printf("");break;
        case 8 : printf("");break;
        case 9 : printf("");break;
    }
}
void yiqian(int sum)
{
    void yiqian_Situation_one(int sum);
    void yiqian_Situation_two1(int sum);
    void yiqian_Situation_two2(int sum);
    void yiqian_Situation_three1(int sum);
    void yiqian_Situation_three2(int sum);
    void yiqian_Situation_four1(int sum);
    void yiqian_Situation_four2(int sum);
    void yiqian_Situation_four3(int sum);
    if(sum%100==0)  yiqian_Situation_one(sum);
    if(sum%100!=0&&sum%10==0)
    {
        yiqian_Situation_two1(sum);
        yiqian_Situation_two2(sum);
    }
    if(sum%100!=0&&sum%10!=0)
    {
        if(sum-(sum/100)*100<10)
        {
            yiqian_Situation_three1(sum);
            yiqian_Situation_three2(sum);
        } 
        else
        {
            yiqian_Situation_four1(sum);
            yiqian_Situation_four2(sum);
            yiqian_Situation_four3(sum);
        }
    }
}
void yiqian_Situation_one(int sum)
{
    switch(sum/100)
    {
        case 1 : printf("一百");break;
        case 2 : printf("二百");break;
        case 3 : printf("三百");break;
        case 4 : printf("四百");break;
        case 5 : printf("五百");break;
        case 6 : printf("六百");break;
        case 7 : printf("七百");break;
        case 8 : printf("八百");break;
        case 9 : printf("九百");break;
    }
}
void yiqian_Situation_two1(int sum)
{
    int a=sum/10;
    switch(a)
    {
        case 1 : printf("一百");break;
        case 2 : printf("二百");break;
        case 3 : printf("三百");break;
        case 4 : printf("四百");break;
        case 5 : printf("五百");break;
        case 6 : printf("六百");break;
        case 7 : printf("七百");break;
        case 8 : printf("八百");break;
        case 9 : printf("九百");break;
    }
}
void yiqian_Situation_two2(int sum)
{
    int b=(sum-(sum/100)*100)/10;
    switch(b)
    {
        case 1 : printf("一十");break;
        case 2 : printf("二十");break;
        case 3 : printf("三十");break;
        case 4 : printf("四十");break;
        case 5 : printf("五十");break;
        case 6 : printf("六十");break;
        case 7 : printf("七十");break;
        case 8 : printf("八十");break;
        case 9 : printf("九十");break;
    }
}
void yiqian_Situation_three1(int sum)
{
    int a=sum/100;
    switch(a)
    {
        case 1 : printf("一百");break;
        case 2 : printf("二百");break;
        case 3 : printf("三百");break;
        case 4 : printf("四百");break;
        case 5 : printf("五百");break;
        case 6 : printf("六百");break;
        case 7 : printf("七百");break;
        case 8 : printf("八百");break;
        case 9 : printf("九百");break;
    }
}
void yiqian_Situation_three2(int sum)
{
    int b=sum-(sum/100)*100;
    switch(b)
    {
        case 1 : printf("零一");break;
        case 2 : printf("零二");break;
        case 3 : printf("零三");break;
        case 4 : printf("零四");break;
        case 5 : printf("零五");break;
        case 6 : printf("零六");break;
        case 7 : printf("零七");break;
        case 8 : printf("零八");break;
        case 9 : printf("零九");break;
    }
}
void yiqian_Situation_four1(int sum)
{
    int a=sum/100;
    switch(a)
    {
        case 1 : printf("一百");break;
        case 2 : printf("二百");break;
        case 3 : printf("三百");break;
        case 4 : printf("四百");break;
        case 5 : printf("五百");break;
        case 6 : printf("六百");break;
        case 7 : printf("七百");break;
        case 8 : printf("八百");break;
        case 9 : printf("九百");break;
    }
}
void yiqian_Situation_four2(int sum)
{
    int c1=(sum-(sum/100)*100)/10;
    switch(c1)
    {
        case 1 : printf("一十");break;
        case 2 : printf("二十");break;
        case 3 : printf("三十");break;
        case 4 : printf("四十");break;
        case 5 : printf("五十");break;
        case 6 : printf("六十");break;
        case 7 : printf("七十");break;
        case 8 : printf("八十");break;
        case 9 : printf("九十");break;
    }
}
void yiqian_Situation_four3(int sum)
{
    int c2=sum-(sum/100)*100-((sum-(sum/100)*100)/10)*10;
    switch(c2)
    {
        case 1 : printf("");break;
        case 2 : printf("");break;
        case 3 : printf("");break;
        case 4 : printf("");break;
        case 5 : printf("");break;
        case 6 : printf("");break;
        case 7 : printf("");break;
        case 8 : printf("");break;
        case 9 : printf("");break;
    }
}

二、单元测试

(1)中文转阿拉伯数字

测试代码:

#include<stdio.h>
#include<string.h>
int main()
{
    int i,a;
    char number[100];
    int change(char c[]);
    for(i=0;i<=20;i++)
    {
        printf("请输入中文数字:");
        scanf(" %s",number); 
        a=change(number);
        if(a>=-10) printf("OK
");
        else printf("Error
");
    }
    return 0;
}
int change(char c[])
{
    if(strcmp(c,"")==0) return 0;
    if(strcmp(c,"")==0) return 1;
    if(strcmp(c,"")==0) return 2;
    if(strcmp(c,"")==0) return 3;
    if(strcmp(c,"")==0) return 4;
    if(strcmp(c,"")==0) return 5;
    if(strcmp(c,"")==0) return 6;
    if(strcmp(c,"")==0) return 7;
    if(strcmp(c,"")==0) return 8;
    if(strcmp(c,"")==0) return 9;
    if(strcmp(c,"")==0) return 10;
    if(strcmp(c,"负一")==0) return -1;
    if(strcmp(c,"负二")==0) return -2;
    if(strcmp(c,"负三")==0) return -3;
    if(strcmp(c,"负四")==0) return -4;
    if(strcmp(c,"负五")==0) return -5;
    if(strcmp(c,"负六")==0) return -6;
    if(strcmp(c,"负七")==0) return -7;
    if(strcmp(c,"负八")==0) return -8;
    if(strcmp(c,"负九")==0) return -9;
    if(strcmp(c,"负十")==0) return -10;
    return -11;
}

测试脚本:

@echo off
cd C:Users陈玉娜Desktopc++寒假作业寒假作业3单元测试
echo 开始测试
中文转阿拉伯数字.exe
echo 测试结束
pause

测试结果:

 (2)运算符

测试代码:

#include<stdio.h>
#include<string.h>
int main()
{
    int i,a;
    char yunsuanfu[100];
    int judge(char b[]);
    for(i=0;i<2;i++)
    {
        printf("请输入运算符:");
        scanf(" %s",yunsuanfu); 
        a=judge(yunsuanfu);
        if(a>=0) printf("OK
");
        else printf("Error
");
    }
    return 0;
}
int judge(char b[])
{
    if(strcmp(b,"增加")==0) return 1;
    if(strcmp(b,"减少")==0) return 0;
    return -1;
}

测试脚本:

@echo off
cd C:Users陈玉娜Desktopc++寒假作业寒假作业3单元测试
运算符.exe
echo 测试结束
pause

测试结果:

(3)阿拉伯数字转汉字输出

测试代码:

#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
    int a;
    void output(int sum); 
    printf("请输入阿拉伯数字:");
    while(scanf("%d",&a)!=EOF)
    {
        output(a);
        printf("
");
        printf("请输入阿拉伯数字:");
    }
    return 0;
}
void output(int sum)
{
    void shi(int sum);
    void ershi(int sum);
    void yibai(int sum); 
    void yiqian(int sum);
    if(sum>=0)
    {
        if(sum<=10) shi(sum);
        if(sum>10&&sum<=20) ershi(sum);
        if(sum>20&&sum<100) yibai(sum);
        if(sum>=100&&sum<1000) yiqian(sum);
        if(sum==1000) printf("一千"); 
        if(sum>1000) printf("太有钱啦"); 
    }
    if(sum<0) 
    {
        sum=fabs(sum);
        if(sum<=10) 
        {
            printf("");
            shi(sum);
        }
        if(sum>10&&sum<=20) 
        {
            printf("");
            ershi(sum);
        }
        if(sum>20&&sum<100) 
        {
            printf("");
            yibai(sum);
        }
        if(sum>=100&&sum<1000) 
        {
            printf("");
            yiqian(sum);
        }
        if(sum==1000) printf("负一千"); 
        if(sum>1000) printf("负债累累了亲");
        
    }
}
void shi(int sum)
{
    switch(sum)
    {
        case 0 : printf("");break;
        case 1 : printf("");break;
        case 2 : printf("");break;
        case 3 : printf("");break;
        case 4 : printf("");break;
        case 5 : printf("");break;
        case 6 : printf("");break;
        case 7 : printf("");break;
        case 8 : printf("");break;
        case 9 : printf("");break;
        case 10 : printf("");break;
    }
}
void ershi(int sum)
{
    switch(sum)
    {
        case 11 : printf("十一");break;
        case 12 : printf("十二");break;
        case 13 : printf("十三");break;
        case 14 : printf("十四");break;
        case 15 : printf("十五");break;
        case 16 : printf("十六");break;
        case 17 : printf("十七");break;
        case 18 : printf("十八");break;
        case 19 : printf("十九");break;
        case 20 : printf("二十");break;
    }
}
void yibai(int sum)
{
    int a,b;
    void yibai_Situation_one(int sum);
    void yibai_Situation_two1(int a);
    void yibai_Situation_two2(int b);
    if(sum%10==0) yibai_Situation_one(sum);
    else
    {
        a=sum/10;
        b=sum%10;
        yibai_Situation_two1(a);
        yibai_Situation_two2(b);
    }
}
void yibai_Situation_one(int sum)
{
    switch(sum/10)
    {
        case 3 : printf("三十");break;
        case 4 : printf("四十");break;
        case 5 : printf("五十");break;
        case 6 : printf("六十");break;
        case 7 : printf("七十");break;
        case 8 : printf("八十");break;
        case 9 : printf("九十");break;
    }
}
void yibai_Situation_two1(int a)
{
    switch(a)
    {
        case 2 : printf("二十");break;
        case 3 : printf("三十");break;
        case 4 : printf("四十");break;
        case 5 : printf("五十");break;
        case 6 : printf("六十");break;
        case 7 : printf("七十");break;
        case 8 : printf("八十");break;
        case 9 : printf("九十");break;
        }
}
void yibai_Situation_two2(int b)
{
    switch(b)
    {
        case 1 : printf("");break;
        case 2 : printf("");break;
        case 3 : printf("");break;
        case 4 : printf("");break;
        case 5 : printf("");break;
        case 6 : printf("");break;
        case 7 : printf("");break;
        case 8 : printf("");break;
        case 9 : printf("");break;
    }
}
void yiqian(int sum)
{
    void yiqian_Situation_one(int sum);
    void yiqian_Situation_two1(int sum);
    void yiqian_Situation_two2(int sum);
    void yiqian_Situation_three1(int sum);
    void yiqian_Situation_three2(int sum);
    void yiqian_Situation_four1(int sum);
    void yiqian_Situation_four2(int sum);
    void yiqian_Situation_four3(int sum);
    if(sum%100==0)  yiqian_Situation_one(sum);
    if(sum%100!=0&&sum%10==0)
    {
        yiqian_Situation_two1(sum);
        yiqian_Situation_two2(sum);
    }
    if(sum%100!=0&&sum%10!=0)
    {
        if(sum-(sum/100)*100<10)
        {
            yiqian_Situation_three1(sum);
            yiqian_Situation_three2(sum);
        } 
        else
        {
            yiqian_Situation_four1(sum);
            yiqian_Situation_four2(sum);
            yiqian_Situation_four3(sum);
        }
    }
}
void yiqian_Situation_one(int sum)
{
    switch(sum/100)
    {
        case 1 : printf("一百");break;
        case 2 : printf("二百");break;
        case 3 : printf("三百");break;
        case 4 : printf("四百");break;
        case 5 : printf("五百");break;
        case 6 : printf("六百");break;
        case 7 : printf("七百");break;
        case 8 : printf("八百");break;
        case 9 : printf("九百");break;
    }
}
void yiqian_Situation_two1(int sum)
{
    int a=sum/10;
    switch(a)
    {
        case 1 : printf("一百");break;
        case 2 : printf("二百");break;
        case 3 : printf("三百");break;
        case 4 : printf("四百");break;
        case 5 : printf("五百");break;
        case 6 : printf("六百");break;
        case 7 : printf("七百");break;
        case 8 : printf("八百");break;
        case 9 : printf("九百");break;
    }
}
void yiqian_Situation_two2(int sum)
{
    int b=(sum-(sum/100)*100)/10;
    switch(b)
    {
        case 1 : printf("一十");break;
        case 2 : printf("二十");break;
        case 3 : printf("三十");break;
        case 4 : printf("四十");break;
        case 5 : printf("五十");break;
        case 6 : printf("六十");break;
        case 7 : printf("七十");break;
        case 8 : printf("八十");break;
        case 9 : printf("九十");break;
    }
}
void yiqian_Situation_three1(int sum)
{
    int a=sum/100;
    switch(a)
    {
        case 1 : printf("一百");break;
        case 2 : printf("二百");break;
        case 3 : printf("三百");break;
        case 4 : printf("四百");break;
        case 5 : printf("五百");break;
        case 6 : printf("六百");break;
        case 7 : printf("七百");break;
        case 8 : printf("八百");break;
        case 9 : printf("九百");break;
    }
}
void yiqian_Situation_three2(int sum)
{
    int b=sum-(sum/100)*100;
    switch(b)
    {
        case 1 : printf("零一");break;
        case 2 : printf("零二");break;
        case 3 : printf("零三");break;
        case 4 : printf("零四");break;
        case 5 : printf("零五");break;
        case 6 : printf("零六");break;
        case 7 : printf("零七");break;
        case 8 : printf("零八");break;
        case 9 : printf("零九");break;
    }
}
void yiqian_Situation_four1(int sum)
{
    int a=sum/100;
    switch(a)
    {
        case 1 : printf("一百");break;
        case 2 : printf("二百");break;
        case 3 : printf("三百");break;
        case 4 : printf("四百");break;
        case 5 : printf("五百");break;
        case 6 : printf("六百");break;
        case 7 : printf("七百");break;
        case 8 : printf("八百");break;
        case 9 : printf("九百");break;
    }
}
void yiqian_Situation_four2(int sum)
{
    int c1=(sum-(sum/100)*100)/10;
    switch(c1)
    {
        case 1 : printf("一十");break;
        case 2 : printf("二十");break;
        case 3 : printf("三十");break;
        case 4 : printf("四十");break;
        case 5 : printf("五十");break;
        case 6 : printf("六十");break;
        case 7 : printf("七十");break;
        case 8 : printf("八十");break;
        case 9 : printf("九十");break;
    }
}
void yiqian_Situation_four3(int sum)
{
    int c2=sum-(sum/100)*100-((sum-(sum/100)*100)/10)*10;
    switch(c2)
    {
        case 1 : printf("");break;
        case 2 : printf("");break;
        case 3 : printf("");break;
        case 4 : printf("");break;
        case 5 : printf("");break;
        case 6 : printf("");break;
        case 7 : printf("");break;
        case 8 : printf("");break;
        case 9 : printf("");break;
    }
}

测试脚本:

@echo off
cd C:Users陈玉娜Desktopc++寒假作业寒假作业3单元测试
echo 开始测试
阿拉伯数字转汉字输出.exe
echo 测试结束
pause

测试结果:

、编译脚本

 四、测试脚本

由于我所使用的的方法是直接在代码里写地址,所以要运行不同的文本,每次都要重新编写,更改地址

这里给出其中一种代码:

#include<stdio.h>
#include<string.h>
#include<math.h> 
int main()
{
    char name1[100],name2[100],name3[100],name4[100];
    freopen("C:\Users\陈玉娜\Desktop\c++寒假作业\寒假作业3\测试代码\1.txt","r",stdin);
    int i=0,m,sum=0,j,j0;
    int change(char c[]); 
    int input();
    void output(int sum);
    scanf("%s %s %s %s",name1,name2,name3,name4);
    j0=change(name4);
    sum=input();
    sum=sum+j0;
    output(sum);
    return 0;
}
int input()
{
    char a[100],b[100],c[100];
    int sum=0,j,d;
    int judge(char b[100],char c[100]);
    while(1)
    {
        scanf(" %s",a);
        if(strcmp(a,"看看")==0) 
        {
            scanf(" %s",b);
            break;
        }
        scanf(" %s %s",b,c);
        d=judge(b,c);
        sum=sum+d;
    }
    return sum;
}
int judge(char b[100],char c[100])
{
    int sum=0,j;
    int change(char c[]);
    if(strcmp(b,"增加")==0)
    {
        j=change(c);
        sum=sum+j;
    }
    if(strcmp(b,"减少")==0)
    {
        j=change(c);
        sum=sum-j;
    }
    return sum;
}
void output(int sum)
{
    void shi(int sum);
    void ershi(int sum);
    void yibai(int sum); 
    void yiqian(int sum);
    if(sum>=0)
    {
        if(sum<=10) shi(sum);
        if(sum>10&&sum<=20) ershi(sum);
        if(sum>20&&sum<100) yibai(sum);
        if(sum>=100&&sum<1000) yiqian(sum);
        if(sum==1000) printf("一千"); 
        if(sum>1000) printf("太有钱啦"); 
    }
    if(sum<0) 
    {
        sum=fabs(sum);
        if(sum<=10) 
        {
            printf("");
            shi(sum);
        }
        if(sum>10&&sum<=20) 
        {
            printf("");
            ershi(sum);
        }
        if(sum>20&&sum<100) 
        {
            printf("");
            yibai(sum);
        }
        if(sum>=100&&sum<1000) 
        {
            printf("");
            yiqian(sum);
        }
        if(sum==1000) printf("负一千"); 
        if(sum>1000) printf("负债累累了亲");
        
    }
}
int change(char c[])
{
    
        if(strcmp(c,"")==0) return 0;
        if(strcmp(c,"")==0) return 1;
        if(strcmp(c,"")==0) return 2;
        if(strcmp(c,"")==0) return 3;
        if(strcmp(c,"")==0) return 4;
        if(strcmp(c,"")==0) return 5;
        if(strcmp(c,"")==0) return 6;
        if(strcmp(c,"")==0) return 7;
        if(strcmp(c,"")==0) return 8;
        if(strcmp(c,"")==0) return 9;
        if(strcmp(c,"")==0) return 10;
        if(strcmp(c,"负一")==0) return -1;
        if(strcmp(c,"负二")==0) return -2;
        if(strcmp(c,"负三")==0) return -3;
        if(strcmp(c,"负四")==0) return -4;
        if(strcmp(c,"负五")==0) return -5;
        if(strcmp(c,"负六")==0) return -6;
        if(strcmp(c,"负七")==0) return -7;
        if(strcmp(c,"负八")==0) return -8;
        if(strcmp(c,"负九")==0) return -9;
        if(strcmp(c,"负十")==0) return -10;
    
}
void shi(int sum)
{
    switch(sum)
    {
        case 0 : printf("");break;
        case 1 : printf("");break;
        case 2 : printf("");break;
        case 3 : printf("");break;
        case 4 : printf("");break;
        case 5 : printf("");break;
        case 6 : printf("");break;
        case 7 : printf("");break;
        case 8 : printf("");break;
        case 9 : printf("");break;
        case 10 : printf("");break;
    }
}
void ershi(int sum)
{
    switch(sum)
    {
        case 11 : printf("十一");break;
        case 12 : printf("十二");break;
        case 13 : printf("十三");break;
        case 14 : printf("十四");break;
        case 15 : printf("十五");break;
        case 16 : printf("十六");break;
        case 17 : printf("十七");break;
        case 18 : printf("十八");break;
        case 19 : printf("十九");break;
        case 20 : printf("二十");break;
    }
}
void yibai(int sum)
{
    int a,b;
    void yibai_Situation_one(int sum);
    void yibai_Situation_two1(int a);
    void yibai_Situation_two2(int b);
    if(sum%10==0) yibai_Situation_one(sum);
    else
    {
        a=sum/10;
        b=sum%10;
        yibai_Situation_two1(a);
        yibai_Situation_two2(b);
    }
}
void yibai_Situation_one(int sum)
{
    switch(sum/10)
    {
        case 3 : printf("三十");break;
        case 4 : printf("四十");break;
        case 5 : printf("五十");break;
        case 6 : printf("六十");break;
        case 7 : printf("七十");break;
        case 8 : printf("八十");break;
        case 9 : printf("九十");break;
    }
}
void yibai_Situation_two1(int a)
{
    switch(a)
    {
        case 2 : printf("二十");break;
        case 3 : printf("三十");break;
        case 4 : printf("四十");break;
        case 5 : printf("五十");break;
        case 6 : printf("六十");break;
        case 7 : printf("七十");break;
        case 8 : printf("八十");break;
        case 9 : printf("九十");break;
        }
}
void yibai_Situation_two2(int b)
{
    switch(b)
    {
        case 1 : printf("");break;
        case 2 : printf("");break;
        case 3 : printf("");break;
        case 4 : printf("");break;
        case 5 : printf("");break;
        case 6 : printf("");break;
        case 7 : printf("");break;
        case 8 : printf("");break;
        case 9 : printf("");break;
    }
}
void yiqian(int sum)
{
    void yiqian_Situation_one(int sum);
    void yiqian_Situation_two1(int sum);
    void yiqian_Situation_two2(int sum);
    void yiqian_Situation_three1(int sum);
    void yiqian_Situation_three2(int sum);
    void yiqian_Situation_four1(int sum);
    void yiqian_Situation_four2(int sum);
    void yiqian_Situation_four3(int sum);
    if(sum%100==0)  yiqian_Situation_one(sum);
    if(sum%100!=0&&sum%10==0)
    {
        yiqian_Situation_two1(sum);
        yiqian_Situation_two2(sum);
    }
    if(sum%100!=0&&sum%10!=0)
    {
        if(sum-(sum/100)*100<10)
        {
            yiqian_Situation_three1(sum);
            yiqian_Situation_three2(sum);
        } 
        else
        {
            yiqian_Situation_four1(sum);
            yiqian_Situation_four2(sum);
            yiqian_Situation_four3(sum);
        }
    }
}
void yiqian_Situation_one(int sum)
{
    switch(sum/100)
    {
        case 1 : printf("一百");break;
        case 2 : printf("二百");break;
        case 3 : printf("三百");break;
        case 4 : printf("四百");break;
        case 5 : printf("五百");break;
        case 6 : printf("六百");break;
        case 7 : printf("七百");break;
        case 8 : printf("八百");break;
        case 9 : printf("九百");break;
    }
}
void yiqian_Situation_two1(int sum)
{
    int a=sum/10;
    switch(a)
    {
        case 1 : printf("一百");break;
        case 2 : printf("二百");break;
        case 3 : printf("三百");break;
        case 4 : printf("四百");break;
        case 5 : printf("五百");break;
        case 6 : printf("六百");break;
        case 7 : printf("七百");break;
        case 8 : printf("八百");break;
        case 9 : printf("九百");break;
    }
}
void yiqian_Situation_two2(int sum)
{
    int b=(sum-(sum/100)*100)/10;
    switch(b)
    {
        case 1 : printf("一十");break;
        case 2 : printf("二十");break;
        case 3 : printf("三十");break;
        case 4 : printf("四十");break;
        case 5 : printf("五十");break;
        case 6 : printf("六十");break;
        case 7 : printf("七十");break;
        case 8 : printf("八十");break;
        case 9 : printf("九十");break;
    }
}
void yiqian_Situation_three1(int sum)
{
    int a=sum/100;
    switch(a)
    {
        case 1 : printf("一百");break;
        case 2 : printf("二百");break;
        case 3 : printf("三百");break;
        case 4 : printf("四百");break;
        case 5 : printf("五百");break;
        case 6 : printf("六百");break;
        case 7 : printf("七百");break;
        case 8 : printf("八百");break;
        case 9 : printf("九百");break;
    }
}
void yiqian_Situation_three2(int sum)
{
    int b=sum-(sum/100)*100;
    switch(b)
    {
        case 1 : printf("零一");break;
        case 2 : printf("零二");break;
        case 3 : printf("零三");break;
        case 4 : printf("零四");break;
        case 5 : printf("零五");break;
        case 6 : printf("零六");break;
        case 7 : printf("零七");break;
        case 8 : printf("零八");break;
        case 9 : printf("零九");break;
    }
}
void yiqian_Situation_four1(int sum)
{
    int a=sum/100;
    switch(a)
    {
        case 1 : printf("一百");break;
        case 2 : printf("二百");break;
        case 3 : printf("三百");break;
        case 4 : printf("四百");break;
        case 5 : printf("五百");break;
        case 6 : printf("六百");break;
        case 7 : printf("七百");break;
        case 8 : printf("八百");break;
        case 9 : printf("九百");break;
    }
}
void yiqian_Situation_four2(int sum)
{
    int c1=(sum-(sum/100)*100)/10;
    switch(c1)
    {
        case 1 : printf("一十");break;
        case 2 : printf("二十");break;
        case 3 : printf("三十");break;
        case 4 : printf("四十");break;
        case 5 : printf("五十");break;
        case 6 : printf("六十");break;
        case 7 : printf("七十");break;
        case 8 : printf("八十");break;
        case 9 : printf("九十");break;
    }
}
void yiqian_Situation_four3(int sum)
{
    int c2=sum-(sum/100)*100-((sum-(sum/100)*100)/10)*10;
    switch(c2)
    {
        case 1 : printf("");break;
        case 2 : printf("");break;
        case 3 : printf("");break;
        case 4 : printf("");break;
        case 5 : printf("");break;
        case 6 : printf("");break;
        case 7 : printf("");break;
        case 8 : printf("");break;
        case 9 : printf("");break;
    }
}

测试文本:

整数 钱包 等于 零
钱包 增加 四 
钱包 减少 三 
看看 钱包

测试结果:

 其他几种测试结果:

原文地址:https://www.cnblogs.com/cyn522/p/12308410.html