寒假作业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\陈玉娜\Desktop\c++寒假作业\寒假作业2\编程题\a.txt
ren "C:\Users\陈玉娜\Desktop\c++寒假作业\寒假作业2\编程题\a.txt"  a.exe
if exist "C:\Users\陈玉娜\Desktop\c++寒假作业\寒假作业2\编程题\a.exe" echo 编译成功
if not exist "C:\Users\陈玉娜\Desktop\c++寒假作业\寒假作业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\n");
        else printf("Error\n");
    }
    for(i=0;i<2;i++)
    {
        printf("请输入运算符:");
        scanf(" %s",yunsuanfu); 
        a=judge(yunsuanfu);
        if(a>=0) printf("OK\n");
        else printf("Error\n");
    }
    printf("请输入阿拉伯数字:");
    while(scanf("%d",&a)!=EOF)
    {
        output(a);
        printf("\n");
        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\陈玉娜\Desktop\c++寒假作业\寒假作业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,就可以了

 

posted @ 2020-02-02 17:32  沐沐Y  阅读(166)  评论(0编辑  收藏  举报