题目要求
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实验总结:通过该实验,我明白了同伴的重要性。两个人的思维碰撞确实比一个人的苦思冥想要好的多。这次合作让我想到了团体的重要性,使我明白了合作的关键。
时间记录日志:
学陈晨 日期:3/26
教师: 王建民 课程:软件工程概论
日期 |
开始时间 |
结束时间 |
中段时间(分钟) |
净时间 (分钟) |
活动 |
备注 |
|
|
3/21 |
8:00 |
9:50 |
10 |
100 |
上课 |
课间休息 |
|
|
3/22 |
|
|
|
|
|
|
|
|
|
19:00 |
22:00 |
|
120 |
写程序 |
|
|
|
3/23 |
|
|
|
|
|
|
|
|
|
21:30 |
22:20 |
0 |
50 |
写程序 |
|
|
|
3/24 |
20:00 |
22:15 |
|
75 |
编写程序 |
|
|
|
3/25 |
19:30 |
22:30 |
0 |
30 |
编写程序和上网查资料学习 |
|
|
|
3/26 |
10:30 |
5:36 |
0 |
157 |
写程序,查资料 |
|
|
|
工作照: