四则运算练习&竞赛系统(结对编程)
伙伴:2152334
项目要求
小学老师要每周给同学出300道四则运算练习题
一或两个运算符(a+b或a+b+c), 100以内的数字,不需要写答案。需要检查答案是否正确,并且保证答案在0..100之间
尽可能地多设置一些条件。
请两位同学以结对编码(一个同学coding,另一个同学在旁边审核代码,之后再交换角色)的方式完成本次实验,并把程序、运算结果、博客体会等截屏发到其中一位同学的博客上,并在博客中体现另一位同学的学号(仅学号不体现姓名)
增添功能:
- 系统分为练习系统和竞赛系统
- 练习系统更方便同学自己控制练习题数目,也方便老师控制练习题数目
- 竞赛系统还有计时系统,用来限制完成的时间
- 两个系统都有计分功能,用户可以实时了解到自己的目前得分
- 在练习系统内,用户答错题目时可以知道题目的正确答案,而竞赛系统则不行
实现代码(点击下面按钮查看完整项目代码)
点击查看代码
#include<bitsdc++.h>
#include<windows.h>
using namespace std;
int a,b,c;
int ans;
int p;
int cnt;
int score=0;
void practise(){
system("cls");
cout<<"欢迎使用波涛四则运算练习系统!"<<endl<<endl;
cout<<"请输入需要练习的题目数:"<<endl;
cin>>cnt;
system("cls");
cout<<"欢迎使用波涛四则运算练习系统!"<<endl;
cout<<"习题还有3秒到达屏幕,请做好准备!"<<endl;
cout<<"loading..";
for(int i=1;i<=10;i++){
Sleep(300);
cout<<".";
}
while(cnt--){
system("cls");
cout<<"欢迎使用波涛四则运算练习系统!"<<endl;
cout<<endl<<"你当前的分数为"<<score<<endl;
cout<<endl<<"剩余习题数:"<<cnt<<endl<<endl;
srand(time(NULL));
while(1){
a=rand()%99+1;
b=rand()%100;
p=rand()%4+1;
switch(p){
case 1:
ans=a+b;
break;
case 2:
ans=a-b;
break;
case 3:
ans=a*b;
break;
case 4:
ans=rand()%14+1;
b=rand()%7+1;
a=ans*b;
}
if(ans<0||ans>=100) continue;
else{
cout<<a<<(p==1?'+':(p==2?'-':(p==3)?'*':'/'))<<b<<"=";
double in;
cin>>in;
if(in==ans) {
score++;
cout<<"回答正确!"<<endl;
system("pause");
}
else{
cout<<"答案错误QAQ"<<endl;
cout<<"正确答案为:"<<ans<<endl;
system("pause");
}
break;
}
}
if(cnt==0) {
system("cls");
cout<<endl<<"你最终得分为"<<score<<"分"<<endl;
system("pause");
}
}
}
void contest(){
clock_t begin ,end;
system("cls");
cout<<"欢迎使用波涛四则运算竞赛系统!"<<endl<<endl;
cout<<"请在15分钟内完成100道,祝你好运!"<<endl;
cnt=100;
cout<<endl<<"题目还有5秒到达屏幕,请做好准备!"<<endl;
cout<<"loading..";
for(int i=1;i<=10;i++){
Sleep(500);
cout<<".";
}
begin=clock();
while(cnt--){
system("cls");
cout<<"欢迎使用波涛四则运算竞赛系统!"<<endl;
cout<<endl<<"你当前的分数为"<<score<<endl;
cout<<endl<<"剩余习题数:"<<cnt<<endl<<endl;
srand(time(NULL));
while(1){
a=rand()%99+1;
b=rand()%100;
p=rand()%4+1;
switch(p){
case 1:
ans=a+b;
break;
case 2:
ans=a-b;
break;
case 3:
ans=a*b;
break;
case 4:
ans=rand()%14+1;
b=rand()%7+1;
a=ans*b;
}
if(ans<0||ans>=100) continue;
else{
cout<<a<<(p==1?'+':(p==2?'-':(p==3)?'*':'/'))<<b<<"=";
double in;
cin>>in;
if(in==ans) {
score++;
cout<<"回答正确!"<<endl;
system("pause");
}
else{
cout<<"答案错误QAQ"<<endl;
// cout<<"正确答案为:"<<ans<<endl;
system("pause");
}
break;
}
}
if(cnt==0) {
system("cls");
end=clock();
cout<<endl<<"你最终得分为"<<score<<"分"<<endl;
cout<<"你最终耗时"<<(end-begin)/1000<<"秒"<<endl;
if(end-begin>=900000) cout<<"超时!请继续努力"<<endl;
else cout<<"成功在规定时间内完成,请继续加油!"<<endl;
system("pause");
}
}
}
int main()
{
cout<<"欢迎使用波涛四则运算系统!"<<endl;
cout<<"1.练习系统"<<endl<<"2.竞赛系统"<< endl<<"请选择使用的功能(输入1或2):"<<endl;
int op1;
cin>>op1;
if(op1==1) practise();
else contest();
return 0;
}
功能截图
-
目录界面:
-
练习系统
-
竞赛系统
实现方法
-
随机出题
使用随机数函数分别产生两个运算数和一个运算符数(1代表‘+’、2代表‘-’等),并且用%运算保证在100以内产生计算数。
-
判断对错
系统在出题后会自动计算出所出题目的答案,如果算出来答案不符合要求(0~100)则不输出并且重新生成新的题目。算出来的答案将与用户输入的输入相比较,相等则分数加一,不等则分数不变。
-
计算时间
利用clock()函数来获取用户开始答题和结束答题的时间,并判断是否超过规定时间,超过了则成绩无效,未超过则有效。
总结
这次结对编程让我们了解到这种编程模式的优越之处,它能够降低我们的代码出错率,并能够增加代码的编辑效率。未来我们也许会将这种编程方法应用于更多的项目开发过程中。
标签:结对,编程,cout,int,四则运算,系统,100 From: https://www.cnblogs.com/waibiwaibii/p/17311861.html