仓库地址 | 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 |
第三次作业
- 继续完成编程题
- 发布博客
编程题(请使用C语言或者C++完成以下题目):
- 继续完成作业二的编程题。
- 优化架构,思考代码的拓展性,比如我需要增加其他功能,如选择,循环语句怎么办。
- 思考:可以参考现有的编程语言,把这些语言的内容加入。如选择、循环语句、函数、或者扩大数字范围,支持负数等。
编程题要求:
- 读题,提取出题目的要求。
- 分解需求,把需求分解为几个你觉得不太相关的模块。
- 思考每个模块怎么写,可以从简单的模块开始写。
- 对于不会的问题进行查阅资料。
- 对于每一个模块设计测试用例。
- 详细记录下以上每一步,并写在博客中。
- 不要求完全做出来,但要求记录详细。
- 建议博客长度不少于1000字(不包含代码)。
解释
单元测试:对每一个函数进行测试,这代表了你需要把代码分到不同的文件,使用不同的主函数切换测试/运行。
编译脚本:运行该脚本后无需任何输入就能自动编译全部代码,并输出编译结束的代码。
测试脚本:运行该脚本后可以自动的编译并运行所有测试样例,并输出测试结果。
推荐博客
在完成了以上作业后,写一篇博客体现你完成作业的过程和内容,推荐包括以下内容:
- 问答题的答案,和思考过程。
- 实践题的截图(禁止拍屏),和遇到的问题。
- 编程题的主要实现过程、思考过程和遇到的问题。
- 你查阅的资料的网址。
- 为了方便其他学校的老师或者助教了解课程实况,请大家在作业开头添加抬头,与上次作业格式一致
注意完成本次作业后,你需要在博客顶部写上你的仓库地址。我会尝试运行你的作业。如果你没有作完,请特别注明
思考:
首先将作业分成四部分,优化代码,单元测试,编译脚本,测试脚本。
一、优化代码(在原有的基础上实现了输入输出负数)
输入数字的范围:-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; } }
测试文本:
整数 钱包 等于 零
钱包 增加 四
钱包 减少 三
看看 钱包
测试结果:
其他几种测试结果: