zoukankan      html  css  js  c++  java
  • 寒假作业2编程题

    这个作业属于哪个课程

    https://edu.cnblogs.com/campus/fzu/2020OOP

    这个作业要求在哪里

    https://edu.cnblogs.com/campus/fzu/2020OOP/homework/10231

    这个作业的目标

     1、优化代码和命名 2、制作编译脚本 3、学习Windows 批处理

    作业正文

     https://www.cnblogs.com/cyn522/p/12252919.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

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

    继续完成作业一的编程题。

    优化架构,一般要求每个函数长度不超过15行。

    优化规范,尤其是命名规范。

    制作一个编译脚本,运行该脚本可以编译你的代码,可选的脚本语言,python(2.7),windows批处理,powershell,shell。

    进行单元测试,即测试每一个函数,并制作一个测试脚本,运行该脚本可以进行测试,并显示测试结果。

    在作业一编程题的基础上添加以下功能:

    通过命令行读取一个文件,然后运行这个文件。如我的程序叫lang,lang 1.txt代表我要运行1.txt这个文本中的代码。

    假设我的1.txt内容如下:

    整数 钱包 等于 零

    钱包 增加 四

    钱包 减少 三

    看看 钱包

    输入lang 1.txt后,命令行输出一。

    编程题要求:

    读题,提取出题目的要求。

    1、分解需求,把需求分解为几个你觉得不太相关的模块。

    2、思考每个模块怎么写,可以从简单的模块开始写。

    3、对于不会的问题进行查阅资料。

    4、对于每一个模块设计测试用例。

    5、详细记录下以上每一步,并写在博客中。

    6、不要求完全做出来,但要求记录详细。

    7、建议博客长度不少于1000字(不包含代码)。

    思考:

    首先将作业分成四部分,优化代码,制作编译脚本,进行单元测试,添加基础功能。

    一、优化代码(要求每个函数尽量小于十五行)

    在编写代码的时候,我将输入和计算放在一起。题目中的运算数字是十以内的数字,降低了难度,我在编写代码的过程中将数字范围取到了十以内,将运算后的结果取到了一千以内。由于要优化代码,我将输入部分从主函数中分离出来,写了一个input输入函数。因为在上一次的作业中,没能解决输入看看钱包后还要输入一个字符串才能输出结果的情况,这次就考虑了要怎么解决这个问题。之前是直接输入三个字符串,这样就造成在输入“看看 钱包”这条指令的时候要结束输入的时候还要输入一个字符串。这次解决问题是将一句输入语句改成两句,先输入一个字符串,用字符串比较函数判断是不是“看看”,如果是,就退出循环,如果不是就继续输入两个字符串。

    在运算上,首先我考虑的是先判断指令中是“增加”还是“减少”,这次还增加了乘除的判断,这里我用的是字符串的比较函数,通过该函数来确定运算符。接着在数字上,我通过自己编写一个函数来判断数字内容,并将其转化为阿拉伯数字返回,便于运算。函数中确定数字的方法还是用字符串的比较函数来实现,因为将数字的范围设定在十以内,所以还不算特别麻烦。(目前还没想到更简便的方法)。

    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;
        }

    判断:(由于在实际运算中,乘除运算无法实现,所以在完整代码中删去乘除代码)

    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;
        }
        if(strcmp(b,"乘以")==0)
        {
            j=change(c);
            sum=sum*j;
        }
        if(strcmp(b,"除以")==0)
        {
            j=change(c);
            sum=sum/j;
        }
        return sum;
    }

    在输出时,先将输出的总金额分为负数和非负数两种情况。如果是负数,输出“您已负债”,如果是非负数再继续判断。如果总数在0~10,转到判断十以内数的转换函数。该转换函数主要由switch函数构成。

    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;
        }
    }

    如果总数在11~20,转到判断十一至二十数的转换函数。

    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;
        }
    }

    如果总数在21~99,转到判断二十一至九十九数的转换函数。

    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;
        }
    }

    如果总数在100~999,转到判断一百至九百九十九的转换函数。

    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);
            }
        }
    }

    其中分为能被一百整除,不能被一百整除但能被十整除,既不能被一百整除也不能被十整除三种情况。在既不能被一百整除也不能被十整除这种情况中,特别分出像101~109这样的情况,这种情况下的输出不太一样。

    能被一百整除:

    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;
        }
    }

    既不能被一百整除也不能被十整除,情况1:

    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;
        }
    }

    既不能被一百整除也不能被十整除,情况2:

    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;
        }
    }

     在输出上,先判断所得到的数字是否是负数,如果是负数直接输出“您已负债”,如果是非负数转为汉字后输出,其中由于增加了乘除运算,所以如果结果大于1000输出“太有钱了”。

    void output(int sum)
    {
        void shi(int sum);
        void ershi(int sum);
        void yibai(int sum); 
        void yiqian(int sum);
        if(sum<0) printf("您已负债");
        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("太有钱啦"); 
        }
    }

     小结:

    ①结果为负数和非负数的两种情况

     

     ②开始时,钱包里的数不为零的情况

     ③结果为二十至一百的两种情况(不包括一百)(二十以内的情况见①②)

     ④结果为一百至一千的三种情况(不包括一千)

     

     ⑤结果大于一千

     完整代码:

    #include<stdio.h>
    #include<string.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) printf("您已负债");
        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("太有钱啦"); 
        }
    }
    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;
        }
    }
    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;
        }
    }

    二、制作编译脚本

    一开始很迷茫,根本不理解什么是脚本,根据推荐的去看了一下,选择学习Windows 批处理(其实现在还有点懵),后来对题目还是不怎么理解,参考了一下其他同学的作业(太感谢了)

    @echo off
    echo 请输入文件所在位置
    set /p var=
    echo 请输入文件名
    set /p var1=
    echo Hello world!>C:Users陈玉娜Desktopc++寒假作业寒假作业2编程题a.txt
    ren "C:Users陈玉娜Desktopc++寒假作业寒假作业2编程题a.txt"  a.exe
    if exist "C:Users陈玉娜Desktopc++寒假作业寒假作业2编程题a.exe" echo 编译成功
    if not exist "C:Users陈玉娜Desktopc++寒假作业寒假作业2编程题a.exe" echo 编译失败
    pause

     然后在文件夹里生成了一个a.exe文件

    问题:出现乱码

    解决办法:将文件另存为保存时,将编码改为ANSL

     三、进行单元测试

    在设计测试代码时,考虑到输入汉字数字,运算符,汉字转阿拉伯数字几种情况

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        int i,a;
        char number[100],yunsuanfu[100];
        int change(char c[]);
        int judge(char b[]);
        void output(int sum); 
        for(i=0;i<=10;i++)
        {
            printf("请输入中文数字:");
            scanf(" %s",number); 
            a=change(number);
            if(a>=0) printf("OK
    ");
            else printf("Error
    ");
        }
        for(i=0;i<2;i++)
        {
            printf("请输入运算符:");
            scanf(" %s",yunsuanfu); 
            a=judge(yunsuanfu);
            if(a>=0) printf("OK
    ");
            else printf("Error
    ");
        }
        printf("请输入阿拉伯数字:");
        while(scanf("%d",&a)!=EOF)
        {
            output(a);
            printf("
    ");
            printf("请输入阿拉伯数字:");
        }
        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;
            return -1;
    }
    int judge(char b[])
    {
        if(strcmp(b,"增加")==0) return 1;
        if(strcmp(b,"减少")==0) return 0;
        return -1;
    }
    void output(int sum)
    {
        void shi(int sum);
        void ershi(int sum);
        void yibai(int sum); 
        void yiqian(int sum);
        if(sum<0) printf("您已负债");
        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("太有钱啦"); 
        }
    }
    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++寒假作业寒假作业2编程题
    echo 开始测试
    test.exe
    echo 测试结束
    pause

    测试结果:

     四、添加基础功能

    通过大佬的提示,去学习了freopen函数

    freopen(“文件地址”,"r",stdin);

    然后将main函数修改了一下

    int main()
    {
        char file[100]; 
        freopen("C:\Users\陈玉娜\Desktop\c++寒假作业\寒假作业2\编程题\1.txt","r",stdin);
        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;
    }

    编译了一份txt文件,内容为

     然后通过命令行打开就可以了

     原本不知道为什么,每次打开的时候都显示不出结果,后来将txt文档的代码改成ANSL,就可以了

  • 相关阅读:
    服务端增加WCF服务全局异常处理机制
    ASP.NET MVC异常处理方案
    [你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单
    Asp.Net Mvc的几个小问题
    C# 多线程之Thread类
    C#泛型
    c#public、private、protected、internal、protected internal
    ASP.NET并发处理
    GDB调试器的使用
    【多媒体封装格式详解】---MKV
  • 原文地址:https://www.cnblogs.com/cyn522/p/12252919.html
Copyright © 2011-2022 走看看