一.实验题目
让程序能够接受用户输入答案,并能够判断答案的正确与否,并按照要求输出给用户的提示。
二.设计思路
在原有程序的基础上,在每次生成算式的case结尾添加一个输入结果的语句,让用户输入运算结果,再在后面添加一个判断结构,判断是否正确,并给出相应的提示。
三.程序源代码
#include<iostream.h> #include<time.h> #include<stdlib.h> #include<stdio.h> void contain() { int x,y,sum; int right=0; int z,yushu; x=rand()%100; y=rand()%100; z=rand()%4; if(yushu==1) //可以有余数 { switch (z) { case 0: cout<<x<<'+'<<y<<'='<<endl; cin>>sum; if(sum==x+y) { cout<<"恭喜你回答正确!"<<endl; right++; } else { cout<<"对不起回答错误!"<<endl; cout<<"正确答案"<<x+y<<endl; } break; case 1: cout<<x<<'-'<<y<<'='<<endl; cin>>sum; if(sum==x-y) { cout<<"恭喜你回答正确!"<<endl; right++; } else { cout<<"对不起回答错误!"<<endl; cout<<"正确答案"<<x-y<<endl; } break; case 2: cout<<x<<'*'<<y<<'='<<endl; cin>>sum; if(sum==x*y) { cout<<"恭喜你回答正确!"<<endl; right++; } else { cout<<"对不起回答错误!"<<endl; cout<<"正确答案"<<x*y<<endl; } break; case 3: cout<<x<<'/'<<y<<'='<<endl; cin>>sum; if(sum==x/y) { cout<<"恭喜你回答正确!"<<endl; right++; } else { cout<<"对不起回答错误!"<<endl; cout<<"正确答案"<<x/y<<endl; } break; } } else if((x%y)!=0) //无余数 { x=x-x%y; switch (z) { case 0: cout<<x<<'+'<<y<<'='<<endl; cin>>sum; if(sum==x+y) { cout<<"恭喜你回答正确!"<<endl; right++; } else { cout<<"对不起回答错误!"<<endl; cout<<"正确答案"<<x+y<<endl; } break; case 1: cout<<x<<'-'<<y<<'='<<endl; cin>>sum; if(sum==x-y) { cout<<"恭喜你回答正确!"<<endl; right++; } else { cout<<"对不起回答错误!"<<endl; cout<<"正确答案"<<x-y<<endl; } break; case 2: cout<<x<<'*'<<y<<'='<<endl; cin>>sum; if(sum==x*y) { cout<<"恭喜你回答正确!"<<endl; right++; } else { cout<<"对不起回答错误!"<<endl; cout<<"正确答案"<<x*y<<endl; } break; case 3: cout<<x<<'/'<<y<<'='<<endl; cin>>sum; if(sum==x/y) { cout<<"恭喜你回答正确!"<<endl; right++; } else { cout<<"对不起回答错误!"<<endl; cout<<"正确答案"<<x/y<<endl; } break; } } } void nocontain() { int x,y,sum; int z; int right=0; x=rand()%100; y=rand()%100; z=rand()%2; switch (z) { case 0: cout<<x<<'+'<<y<<'='<<endl; cin>>sum; if(sum==x+y) { cout<<"恭喜你回答正确!"<<endl; right++; } else { cout<<"对不起回答错误!"<<endl; cout<<"正确答案"<<x+y<<endl; } break; case 1: cout<<x<<'-'<<y<<'='<<endl; cin>>sum; if(sum==x-y) { cout<<"恭喜你回答正确!"<<endl; right++; } else { cout<<"对不起回答错误!"<<endl; cout<<"正确答案"<<x-y<<endl; } break; } } int main() { srand((unsigned)time(NULL)); int i,num,mul,yushu,jianju; cout<<"****************欢迎使用本程序****************"<<endl; cout<<"请输入打印的间距:(1~5)"<<endl; cin>>jianju; cout<<"----------------------------------------------"<<endl; cout<<"请输入题目的数目:"<<endl; cin>>num; if(num<=0) { cout<<"输入有误,请重新输入:"<<endl; cin>>num; } cout<<"----------------------------------------------"<<endl; cout<<"请选择是否包含乘除法:"<<endl; cout<<"1 .是"<<endl; cout<<"2 .否"<<endl; cin>>mul; while((mul!=1)&&(mul!=2)) { cout<<"请重新输入选择:"<<endl; cin>>mul; } cout<<"----------------------------------------------"<<endl; if(mul==1) { cout<<"请选择除法是否可以有余数:"<<endl; cout<<"1 .是"<<endl; cout<<"2 .否"<<endl; cin>>yushu; while((yushu!=1)&&(yushu!=2)) { cout<<"请重新输入选择:"<<endl; cin>>yushu; } cout<<"----------------------------------------------"<<endl; } if(mul==1) { for(i=0;i<num;i++) { contain(); } } else { for(i=0;i<num;i++) { nocontain(); } } return 0; }
四.运行结果截图
四.实验感想
这已经不是第一次对这个实验的功能进行扩充了,相比前几次的扩展,这次感觉要相对容易了一些,因为在前几次的实验里,每一次的扩充几乎都要丢掉一些原有的功能或者结构,每一次和后续的衔接不是很顺利,原因在于每次的实验都没有为后续的扩展做好准备,而在上次实验后我通过把许多模块独立出来,使得后续的扩展工作更加容易的能够进行,这也是我这几次除了技术方面最大的感触,抛开编程不谈,在做许多事情的时候都要为后来可能发生的各种可能做好充足的打算和准备,这样才能有备无患。
五.PSP0