王歆瑶20190919-6 结对四则运算
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/7631
git地址:https://e.coding.net/wxyao/sizeyunsuan1.git
结对伙伴:梅小雨
功能1. 四则运算
支持出题4个数的四则运算题目,所有题目要求作者有能力正确回答
1.重难点:随机生成题目以及计算正确题目的数量。
2.编程收获:经过一系列的思考和讨论,我们决定用后缀表达式来实现四则运算,锻炼了解决问题的思维方式。
代码片段:
void First() { int i,test=0,counter=0; float ans; int n=20; while(n--) { //strcpy(str1,GetStr()); //printf("1"); //puts(str); GetStr(); float Tans=Arithmetic(str1); //printf("2"); for(i=0; i<7; i++) { printf("%c",str1[i]); } printf("=\n"); printf("?"); scanf("%f",&ans); if(Tans==ans) { printf("答对啦,你真是个天才!\n"); counter++; } else { printf("再想想吧,答案似乎是%.2f喔!\n",Tans); } } printf("你一共答对%d道题,共20道题。",counter); }
功能2. 支持括号
1.重难点:怎么在加入括号以后程序能正确运行
2.编程收获:我们在加括号期间,出现了很多bug,反复修改了好几次,才终于实现。
代码片段:
switch(KH) { case 0: for(i=7; i>0; i--) str1[i]=str1[i-1]; for(i=8; i>4; i--) str1[i]=str1[i-1]; str1[0]='('; str1[4]=')'; str1[9]='\0'; break; case 1: for(i=7; i>0; i--) str1[i]=str1[i-1]; for(i=8; i>6; i--) str1[i]=str1[i-1]; str1[0]='('; str1[6]=')'; str1[9]='\0'; break; case 2: for(i=7; i>2; i--) str1[i]=str1[i-1]; for(i=8; i>6; i--) str1[i]=str1[i-1]; str1[2]='('; str1[6]=')'; str1[9]='\0'; break; case 3: for(i=7; i>2; i--) str1[i]=str1[i-1]; str1[2]='('; str1[8]=')'; str1[9]='\0'; break; case 4: for(i=7; i>4; i--) str1[i]=str1[i-1]; str1[4]='('; str1[8]=')'; str1[9]='\0'; break; default: break; }
功能3.限定题目数量,"精美"打印输出,避免重复
1.重难点:如何实现输入数字就出现对应数量的题目
2.编程收获:在这一功能里,我和梅小雨绞尽脑汁才实现,但是必须借助记事本
代码片段:
fp=fopen("f.txt","w+"); while(n--) { //strcpy(str1,GetStr()); //printf("1"); //puts(str); flag=false; GetStr(); if(rand()%2==1) { int KH=rand()%5; switch(KH) { case 0: for(i=7; i>0; i--) str1[i]=str1[i-1]; for(i=8; i>4; i--) str1[i]=str1[i-1]; str1[0]='('; str1[4]=')'; str1[9]='\0'; break; case 1: for(i=7; i>0; i--) str1[i]=str1[i-1]; for(i=8; i>6; i--) str1[i]=str1[i-1]; str1[0]='('; str1[6]=')'; str1[9]='\0'; break; case 2: for(i=7; i>2; i--) str1[i]=str1[i-1]; for(i=8; i>6; i--) str1[i]=str1[i-1]; str1[2]='('; str1[6]=')'; str1[9]='\0'; break; case 3: for(i=7; i>2; i--) str1[i]=str1[i-1]; str1[2]='('; str1[8]=')'; str1[9]='\0'; break; case 4: for(i=7; i>4; i--) str1[i]=str1[i-1]; str1[4]='('; str1[8]=')'; str1[9]='\0'; break; default: break; } }
for(int i=0; i<len; i++) { if(string1[i]<'0'||string1[i]>'9') { printf("题目数量必须是正整数。"); flag=false; break; } }
体会与收获:
很感谢我的伙伴——梅小雨同学,她的基础很好,在我们的合作中她对我的帮助很大,也让我学到了很多新东西,我在本科期间也按老师要求和同学组队编写过程序,但是氛围没有和梅小雨同学合作的氛围和谐,两人结对完成项目让我们的思维方式和能力都要有了很大提高,此外,我们的打字速度很慢,打字速度跟不上思维,所以耽误了很多时间,为了完成这次作业,我们走了很多弯路,也请教了学姐,结对也让我意识到我的编程基础还很薄弱,以后需要加强。
至少5项在编码、争论、复审等活动中花费时间较长,给你较大收获的事件:
1.在使用switch语句时我们遇到了困难,怎么运行都有问题,最后是梅小雨发现我们忘记加break了,问题才得以解决。
2.在功能一中,我们一开始一点思路也没有,不知道怎么随机运算,后来请教了学姐才有了一点思路,花费了我们一个下午的时间。
3.我们以前没有接触过单元测试,对这个很不了解,我们请教学姐以后又查了很多资料,在电脑里下载了好几个软件,还是没有成功,不仅浪费了很多时间,电脑运行也变得很卡,我当时特别烦,梅小雨同学很耐心地安慰我。
4.在功能二中,我们添加了括号以后,程序出现了很多bug,我们只好一个语句一个语句的查看,一条一条的改,其中有一处循环我们以为和功能一是一样的,直接粘贴过去,结果发现不可以,修改又用了我们好长时间。
5.在功能三中,我们先后试了for循环,while循环等好几种方法,只实现了功能三的部分功能,这种反复修改又反复失败的经历让我觉得超级心累,最大的收获就是清楚的认识到自己的水平很差。
工作地点:净月校区一食堂二楼
照片: