一、题目要求:
用户输入答案,程序自动判定对错,最后给出总共对/错的数量。
二、设计思想:
在原程序基础上增加四则运算结果并用result保存起来,之后用户输入一个结果并与之比较,相等则显示正确,答错则显示正确答案。
三、代码:
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
int answer=0;
int score=0;
int result=0;
void display(int number,int mul,int rage,int neg)//先自定义输出函数
{
int first[1000],second[1000],opt[1000];//分别代表第一个数、第二数和运算符
for(int i=0;i<number;i++)//随机两个生成运算操作数
{
int m=1;//避免题目重复并初始化
first[i]=rand()%rage;//随机产生第一个数
second[i]=rand()%rage;//随机产生第二个数
if(mul==0)//没有乘除法
{
opt[i]=rand()%2;//随机生成0~1的数字,分别表示加减
}
if(mul==1)
{
opt[i]=rand()%4;//随机生成0~3的数字,分别表示加减乘除
}
for(int j=0;j<i;j++)
{
if(first[j]==first[i]&&second[j]==second[i]&&opt[j]==opt[i])//比较新产生的算式与原来的是否重复
{
i=i-1;
m=0;
}
}
while(m)//若算式都不重复则输出
{
switch(opt[i])
{
case 0:
cout<<first[i]<<"+"<<second[i]<<"=";result=first[i]+second[i];break;
case 1:
if(neg==0)//0表示减法结果不允许出现负数,1表示允许出现负数
{
int temp;//中间变量
if(first[i]<second[i])
{
temp=first[i];
first[i]=second[i];
second[i]=temp;
}
cout<<first[i]<<"-"<<second[i]<<"=";
result=first[i]-second[i];
break;
}
else
{
cout<<first[i]<<"-"<<second[i]<<"=";
result=first[i]-second[i];
break;
}
case 2:
cout<<first[i]<<"*"<<second[i]<<"=";
result=first[i]*second[i];
break;
case 3:
if(second[i]==0)//避免分母为零的处理
{
i=i-1;
break;
}
else
{
cout<<first[i]<<"/"<<second[i]<<"=";
result=first[i]/second[i];
break;
}
break;
}
cin>>answer;
if(answer==result)
{
score+=1;
cout<<"right"<<endl;
break;
}
else
{
cout<<"wrong!the answer is:"<<result<<endl;
break;
}
}
}
cout<<"你答对的题数是:"<<score<<endl;
}
void main()
{
srand((unsigned) time(NULL));//初始化随机数发生器,使得每次运行生成的随机数不同
int number;//定制题目数量
int mul;//是否需要乘除法
int rage;//控制数值范围
int neg;//控制减法结果是否允许有负数
int remainder;//控制除法是否允许有余数
cout<<"请输入要打印的题目数量:";
cin>>number;
if(number>0)
{
cout<<endl;
cout<<"请输入正整数的数值范围(即最大数):";
cin>>rage;
cout<<endl;
cout<<"是否有乘除法(0表示没有;1表示有):";
cin>>mul;
cout<<endl;
cout<<"减法有无负数(0表示没有;1表示有):";
cin>>neg;
cout<<endl;
}
else
{
cout<<"输入错误,请重新输入!"<<endl;
cout<<"请输入要打印的题目数量:";
cin>>number;
cout<<endl;
cout<<"请输入正整数的数值范围(即最大数):";
cin>>rage;
cout<<endl;
cout<<"是否有乘除法(0表示没有;1表示有):";
cin>>mul;
cout<<endl;
cout<<"减法有无负数(0表示没有;1表示有):";
cin>>neg;
cout<<endl;
}
display(number,mul,rage,neg);//调用函数
}
四、测试及截图:
五、实验总结:
实验实现了能自动回答用户输入答案的正误,但是当涉及到有余数的四则运算时有些缺陷,其他的方面基本实现。
六、三个日志表格: