这个作业属于哪个课程 | 2020年面向对象程序设计(福州大学 - 数学与计算机科学学院) |
---|---|
这个作业要求在哪里 | 面向对象程序设计寒假作业2 |
这个作业的目标 | 1、继续完成编程题2、新建一个github仓库,并把作业推送到该仓库3、发布博客 |
作业正文 | 如下 |
其他参考文献 | 【教程】使用GitHub Desktop管理你的项目 |
实践题
1、用github desktop上传代码
我按照上文中的参考文献中的教程完成了上传工作
关于用.gitignore文件忽略不要上传的文件,我发现github desktop可直接右键此文件将其加入到.gitignore文件中,相比其他博客里的git的做法好像方便的不少
编程题
与上次相比不知该如何对这次的代码进行进一步的修饰。。。该有的功能已经具备,而面对这几十行的代码,也不知道该怎么进行化简而不破坏它的完整性与应有功能。。。
(把每一小部都重新做一个函数出来吗。。。感觉没这种必要啊。。。)
#include<stdio.h> #include<string.h> char key[6][20]={"整数","钱包","等于","增加","减少","看看"}; char num[11][4]={"零","一","二","三","四","五","六","七","八","九","十"}; int change(char a[20]);//转换 void error(); void print(int n); int main(){ int flag=1,i=0,n=0,m; char a[20]={" "},b[20]={" "},c[20]={" "},d[20]={" "}; while(1){ if(flag==1){ scanf("%s %s %s %s",a,b,c,d); if(strcmp(a,key[0])==0&&strcmp(b,key[1])==0&&strcmp(c,key[2])==0)//初始化 { flag=0; n=change(d); if(n==-1){ error(); flag=0; continue; } } else error(); } else{ scanf("%s %s",a,b); if(strcmp(a,key[1])==0&&strcmp(b,key[3])==0)//增加 { scanf(" %s",c); m=change(c); if(m>=0) n=n+m; else { error(); continue; } } else if(strcmp(a,key[1])==0&&strcmp(b,key[4])==0)//减少 { scanf(" %s",c); m=change(c); if(m>=0) n=n-m; else { error(); continue; } } else if(strcmp(a,key[5])==0&&strcmp(b,key[1])==0)//输出 { print(n); break; } else { error(); scanf(" %s",c); } } } } void error(){ printf("输入错误\n"); }//输入报错情况 int change(char a[20]) { int i,n,sum; char x[10],y[10]; n=strlen(a); if(n==2)//0-10的输入 { for(i=0;i<=11;i++) { if((strcmp(a,num[i])==0)) return i; if(i==11) return -1; } } if(n==4)//11-20以及10的倍数 { for(i=0;i<2;i++){ x[i]=a[i]; } for(i=2;i<4;i++){ y[i-2]=a[i]; } if(strcmp(x,"十")==0){ for(i=0;i<=11;i++){ if(strcmp(y,num[i])==0) return 10+i; if(i==11) return -1; } } else if(strcmp(y,"十")==0){ for(i=1;i<=11;i++){ if(strcmp(x,num[i])==0) return i*10; if (i==11) return -1; } } else return -1; } else if(n==6)//几十几 { for(i=2;i<4;i++){ x[i-2]=a[i]; } if(strcmp(x,num[10])!=0) return -1; for(i=0;i<2;i++){ x[i]=a[i]; } for(i=4;i<6;i++){ y[i-4]=a[i]; } for(i=0;i<=11;i++){ if(strcmp(x,num[i])==0){ sum=i*10; break; } if (i==11) return -1; } for(i=0;i<=11;i++){ if(strcmp(y,num[i])==0){ sum=sum+i; break; } if (i==11) return -1; } return sum; } else return -1; }//文字转换数字 void print(int n)//输出 { if(n<0) printf("你欠债了"); else if(n>99) printf("数字过大这渣渣计算器办不到。。。"); else{ int x,y; x=n/10; y=n%10; if(x==0)//0-9阶段 { printf("%s",num[y]); } else if(x!=0&&y==0)//几十 { if(x==1) printf("十"); else printf("%s十",num[x]); } else if(x==1&&y!=0)//十几 { printf("十%s",num[y]); } else//几十几 { printf("%s十%s",num[x],num[y]); } } }
关于脚本部分。。。我真的不是很懂,关于把txt改为bat这种操作都是看别人的博客才知道的
同时发现,那个示例脚本,我正好能用上
如果对脚本进行修改:gcc one.cpp -o 一.exe
也会有不同的结果
但对于后面的单元测试以及测试脚本还有新功能添加。。。我真的无法进行下去了。。。。是我太菜了。。。
来源:https://www.cnblogs.com/LRlicious/p/12266948.html