题目要求
1学生写的程序必须能判断用户的输入答案是否正确
2程序必须能处理四则运算的混合算式
1 设计思路:
产生随机数以及题目中产生的数的个数
通过if判断是否符合条件
通过for循环来实现产生所需要的算式的个数
在具体实现过程中,通过对比用户答案和程序运行答案来判断答案的对错
2源程序代码:
#include<iostream> #include<ctime> #include<cstdlib> using namespace std; void main() { int ProNum; int fanwei; int fushu; int yushu; int chengchu; int kuohao; cout<<"请输入你想要出的题目的个数(请输入整数)"<<endl; cin>>ProNum; cout<<"请输入取值范围的最小值(0~100)"<<endl; cin>>fanwei; cout<<"请选择是否有负数选择1表示有选择0表示没有(请按要求选择1或0)"<<endl; cin>>fushu; cout<<"请选择是否有余数 3表示有选择4表示没有(请按要求选择3或4)"<<endl; cin>>yushu; cout<<"请选择是否有乘除 5表示有选择6表示没有(请按要求选择5或6)"<<endl; cin>>chengchu; cout<<"请选择是否有括号 7表示有选择8表示没有(请按要求选择7或8)"<<endl; cin>>kuohao; int num[10]; int MyAnswer,answer; int RiNum=0; int FaNum=0; int zff=0, fhnum=0; char fs[20]; char fuhao[20]; int weizhi1; int weizhi2; srand(time(0)); for(int i=0;i<ProNum;i++) { int shuzinum=rand()%4+2; for(int j=0;j<=shuzinum;j++) { num[j]=rand()%100+1; for(;;) { if(num[j]<fanwei) num[j]=rand()%100+1; else break; } if(fushu==1){ zff=rand()%2; if(zff==0) fs[j]='-'; if(fs[j]=='-') num[j]=num[j]*(-1); if(zff==1) fs[j]='+'; } if(fushu==0){ fs[j]='+'; } } for(int ii=0;ii<shuzinum;ii++) { if(chengchu==5) { fhnum=rand()%4; if(fhnum==0) fuhao[ii]='+'; if(fhnum==1) fuhao[ii]='-'; if(fhnum==2) fuhao[ii]='*'; if(fhnum==3) { fuhao[ii]='/'; if(yushu==3) { weizhi1=ii; for(;;) { if(num[ii]%num[ii+1]!=0) break; else { num[ii]=rand()%100+1; num[ii+1]=rand()%100+1; } } } if(yushu==4) { weizhi1=ii; for(;;) { if(num[ii]%num[ii+1]!=0) { num[ii]=rand()%100+1; num[ii+1]=rand()%100+1; } else break; } } } } if(chengchu==6) { fhnum=rand()%2; if(fhnum==0) fuhao[ii]='+'; if(fhnum==1) fuhao[ii]='-'; } } cout<<i+1<<": "<<num[0]; if(shuzinum==2) kuohao=8; if(kuohao==7) { weizhi2 =rand()%(shuzinum-2)+1; for(int i=0;i<weizhi2 -1;i++) { cout<<fuhao[i]<<num[i+1]; } cout<<fuhao[weizhi2 -1]<<"("<<num[weizhi2]<<fuhao[weizhi2]<<num[weizhi2 +1]<<")"; for(int i=weizhi2 +1;i<shuzinum;i++) { cout<<fuhao[i]<<num[i+1]; } answer=num[0]; if(fuhao[weizhi2]=='+') { num[weizhi2]=num[weizhi2]+num[weizhi2 +1]; num[weizhi2 +1]=0; } if(fuhao[weizhi2]=='-') { num[weizhi2]=num[weizhi2]-num[weizhi2+1]; num[weizhi2+1]=0; } if(fuhao[weizhi2]=='*') { num[weizhi2]=num[weizhi2]*num[weizhi2]; num[weizhi2+1]=1; } if(fuhao[weizhi2]=='/') { num[weizhi2]=num[weizhi2]/num[weizhi2+1]; num[weizhi2+1]=1; } for(int i=0;i<shuzinum;i++) { if(fuhao[i]=='*') { num[i]=num[i]*num[i+1]; num[i+1]=1; } if(fuhao[i]=='/') { num[i]=num[i]/num[i+1]; num[i+1]=1; } } for(int i=0;i<shuzinum;i++) { if(fuhao[i]=='+') answer=answer+num[i+1]; if(fuhao[i]=='-') answer=answer-num[i+1]; if(fuhao[i]=='*') answer=answer*num[i+1]; if(fuhao[i]=='/') answer=answer/num[i+1]; } } if(kuohao==8) { for(int i=1;i<shuzinum;i++) { cout<<fuhao[i]<<num[i+1]; } answer=num[0]; for(int i=0;i<shuzinum;i++) { if(fuhao[i]=='*') { num[i]=num[i]*num[i+1]; num[i+1]=1; } if(fuhao[i]=='/') { num[i]=num[i]/num[i+1]; num[i+1]=1; } } for(int i=0;i<shuzinum;i++) { if(fuhao[i]=='+') answer=answer+num[i+1]; if(fuhao[i]=='-') answer=answer-num[i+1]; if(fuhao[i]=='*') answer=answer* num[i+1]; if(fuhao[i]=='/') answer=answer/num[i+1]; } } cout<<"="<<endl; cout<<"请输入你的计算结果"<<endl; cin>>MyAnswer; if(answer-MyAnswer<0.00001) { RiNum++; cout<<"恭喜你算对了"<<endl; } else { FaNum++; cout<<"对不起算错了"<<endl; } } cout<<"算对了:"<<RiNum<<"个"<<"算错了:"<<FaNum<<"个"<<endl; }
3运行结果截图
4实验总结:通过该实验,我明白了同伴的重要性。两个人的思维碰撞确实比一个人的苦思冥想要好的多。这次合作让我想到了团体的重要性,使我明白了合作的关键。
5时间记录日志:
学生:孙梅 日期:3/26
教师: 王建民 课程:软件工程概论
日期 |
开始时间 |
结束时间 |
中段时间(分钟) |
净时间 (分钟) |
活动 |
备注 |
C |
U |
3/21 |
8:00 |
9:50 |
10 |
100 |
上课 |
课间休息 |
||
3/22 |
14:00 |
15:00 |
5 |
55 |
看《构建之法》 |
上厕所 |
||
18:00 |
20:00 |
20 |
100 |
写程序 |
休息 |
|||
3/23 |
16:00 |
16:40 |
0 |
40 |
写程序 |
|||
19:00 |
20:00 |
0 |
60 |
写阅读笔记 |
||||
3/24 |
19:00 |
21:30 |
30 |
120 |
编写程序 |
休息 |
||
3/25 |
15:00 |
15:30 |
0 |
30 |
写进度条 |
|||
3/26 |
9:00 |
11:30 |
0 |
150 |
写程序 |
结对照片: