这个作业属于哪个课程 |
|
这个作业要求在哪里 |
|
这个作业的目标 |
1、优化代码和命名 2、制作编译脚本 3、学习Windows 批处理 |
作业正文 |
|
其他参考文献 |
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,就可以了