zoukankan      html  css  js  c++  java
  • 面向对象程序设计寒假作业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;
        }
    }

    测试文本:

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

    测试结果:

     其他几种测试结果:

  • 相关阅读:
    rpm命令详解
    Linux基础提高_系统性能相关命令
    Day004_Linux基础命令之特殊符号与正则表达式通配符
    Linux基础_网站权限规划
    Day005_Linux基础之文件权限
    Day003_linux基础_系统启动过程及系统安装后优化
    win7旗舰版安装不了mysql问题-------win7系统版本选择问题的一点探索
    Java程序结构
    NCRE Java二级备考方案
    NCRE的JAVA二级考试大纲
  • 原文地址:https://www.cnblogs.com/cyn522/p/12308410.html
Copyright © 2011-2022 走看看