这个作业属于哪个课程 | 2020年面向对象程序设计 |
---|---|
这个作业要求在哪里 | 面向对象程序设计寒假作业3 |
这个作业的目标 | 继续完成作业2 对原有代码进行进一步的优化,提升功能 |
仓库地址 | (0.0) |
我的代码分成4个模块:数字转换、主函数(囊括判断增加或减少的部分)、余额输出(十位数)、余额输出(个位数)。
我思考过程没有什么疑惑(或许是我没把题目深入思考,我一切都是按照题目的要求来做,比较浅)。
数字转换:
int zuanhuan(char s[])
{
if(strcmp(s,"零") == 0) return 0;
else if(strcmp(s,"一") == 0) return 1;
else if(strcmp(s,"二") == 0) return 2;
else if(strcmp(s,"三") == 0) return 3;
else if(strcmp(s,"四") == 0) return 4;
else if(strcmp(s,"五") == 0) return 5;
else if(strcmp(s,"六") == 0) return 6;
else if(strcmp(s,"七") == 0) return 7;
else if(strcmp(s,"八") == 0) return 8;
else if(strcmp(s,"九") == 0) return 9;
else if(strcmp(s,"十") == 0) return 10;
else return -1;
}
这个比较简单,上网搜了strcmp函数,就解决了。
余额输出(十位数):)
void yue1(int n)
{
int k=0;
if(n>=10){
k=n/10;
}
switch(k)
{
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 yue2(int n)
{
if(n==0){
printf("零"); //0作为特殊情况
}
else{
int k=0;
k=n%10;
switch(k)
{
case 0: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;
}
}
}
主函数:
int main()
{
char a[105],b[105],c[105],d[105],m[105],n[105],s[105],w[105];
scanf("%s %s %s %s",a,b,c,d);
int money = zuanhuan(d);
getchar();
while(1){
scanf("%s",m);
if(strcmp(m,"看看") == 0) break;
scanf("%s %s",n,s);
if(strcmp(n,"增加") == 0) money += zuanhuan(s);//判断增加还是减少(进行加或减)
if(strcmp(n,"减少") == 0) money -= zuanhuan(s);//同上
}
scanf("%s",w);
yue1(money);//先输出十位数
yue2(money);//然后输出个位数
return 0;
}
至于思考添加功能,真的太难了。我实在想不到我的代码哪里需要循环。
And扩大输的范围和添加功能,看了好多同学的代码,都没有思路。呜呜呜..