编程题(请使用C语言或者C++完成以下题目):
* 继续完成作业一的编程题。 * 优化架构,一般要求每个函数长度不超过15行。 * 优化规范,尤其是命名规范。 * 制作一个编译脚本,运行该脚本可以编译你的代码,可选的脚本语言,python(2.7),windows批处理,powershell,shell。 示例脚本: ``` gcc 1.cpp -o lang.exe ``` * 进行单元测试,即测试每一个函数,并制作一个测试脚本,运行该脚本可以进行测试,并显示测试结果。 示例脚本: ``` gcc 1.cpp test.cpp -o test.exe test ```- 在作业一编程题的基础上添加以下功能:
通过命令行读取一个文件,然后运行这个文件。如我的程序叫lang,lang 1.txt
代表我要运行1.txt这个文本中的代码。
假设我的1.txt
内容如下:
整数 钱包 等于 零
钱包 增加 四
钱包 减少 三
看看 钱包
输入lang 1.txt
后,命令行输出一
。
- 汉字->数字
int change(char num[])
{
int h=0;
if(strcmp("一",num)==0)
h=1;
if(strcmp("二",num)==0)
h=2;
if(strcmp("三",num)==0)
h=3;
if(strcmp("四",num)==0)
h=4;
if(strcmp("五",num)==0)
h=5;
if(strcmp("六",num)==0)
h=6;
if(strcmp("七",num)==0)
h=7;
if(strcmp("八",num)==0)
h=8;
if(strcmp("九",num)==0)
h=9;
if(strcmp("十",num)==0)
h=10;
return h;
}
- 数字->汉字
void out(int shu)
{
switch(shu)
{
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;
}
}
测试1:
测试2(汉字到数字):
测试3(数字到汉字):
添加新功能:
完整代码:
//判断两位数的 输入0-10;和小于等于100;
#include <stdio.h>
#include <string.h>
int change(char num[]);
void out(int shu);
int main()
{
char place[100];
printf("请输入地址:
");
scanf("%s",&place);
freopen(place,"r",stdin);
int n,v=0,i=1;
char a[50],b[50],c[50],d[50];
printf("输入的汉字数字在零-十之间:
");
scanf("%s %s %s %s",&a,&b,&c,&d);
if(strcmp("整数",a)==0)
{
if(strcmp("等于",c)==0)
{
n=change(d);
while(1)
{
scanf("%s",&a);
if(strcmp("看看",a)==0)
break;
scanf("%s %s",&b,&c);
if(strcmp("增加",b)==0)
{
n+=change(c);//加
}
if(strcmp("减少",b)==0)
n-=change(c); //减
if(strcmp("增加",b)!=0&&strcmp("减少",b)!=0)
{
printf("输入的增加或减少错误,请重输
");
}
}
scanf("%s",&b);
if(strcmp("看看", a)==0)
{
if(n<=10)//和<=10
out(n);
if(n>10&&n<20)//10-20
{
printf("十");
out(n%10);
}
if(n>=20&&n<100)//20-99
{
int q=0;
if(n%10==0)//整十
{
out(n/10);
printf("十");
}
else
{
out(n/10);
printf("十");
out(n%10);
}
}
if(n==100)
printf("一百");
if(n>100)
{
printf("超出运算范围");
}
}
}
else
printf("ERROR");
}
else
printf("ERROR");
return 0;
}
int change(char num[])
{
int h=0;
if(strcmp("一",num)==0)
h=1;
if(strcmp("二",num)==0)
h=2;
if(strcmp("三",num)==0)
h=3;
if(strcmp("四",num)==0)
h=4;
if(strcmp("五",num)==0)
h=5;
if(strcmp("六",num)==0)
h=6;
if(strcmp("七",num)==0)
h=7;
if(strcmp("八",num)==0)
h=8;
if(strcmp("九",num)==0)
h=9;
if(strcmp("十",num)==0)
h=10;
return h;
}
void out(int shu)
{
switch(shu)
{
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;
}
}
上次是把零到一百的都列出来,这次将它分为几部分,<10,10-20,20-99和100。