(一)要求:/*面向小学生随机选择两个整数形成四则运算算式要求学生解答,
最后生成作答试卷保存到文本文件。
1、电脑随机出10道题,每题10分,程序结束时显示学生得分;
2、每道题学生有三次机会输入答案,当学生输入错误答案时,
提醒学生重新输入,如果三次机会结束则给出正确答案;
3、对于每道题,学生第一次输入正确答案得10分,
第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
4、总成绩90以上显示“SMART”,80-90显示“GOOD”,
70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”。
*/
(二)原理:
rand函数取随机数字;
for循环;
Switch选择;
#include <iostream>
#include <time.h>
#include <string.h>
#include <windows.h>
using namespace std;
int main(){
int i,j=0,k=0,c[10],a[10],b[10],result[10],score=0;
FILE *fp;
//char filename[200];
//char str[200];
//gets(filename); //输入文件名字
fp=fopen("1.txt","w"); //以文本模式按只写方式打开文件
if (fp == NULL) //判断文件是否成功打开
{
printf("File open failed!\n");
exit(0);
}
//fp=fopen("data.txt","w");
char si;//运算符号
srand((int)time(0));//生成随机数字函数
cout<<"一共10道题,每题10分,第一次输入正确答案得10分""/n""第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;除法请取整数"<<endl;
cout<<endl;
for(i=0,k=0;i<10;i++){
c[i]=rand()%10;//选择符号
a[i]=rand()%100;//选择数字
b[i]=rand()%100; //选择数字
if(b[i]==0)
b[i]++;
switch(c[i]){
case 0:
case 1:
case 2:
si='+';
break;
case 3:
case 4:
case 5:
si='-';
break;
case 6:
case 7:
si='*';
break;
case 8:
case 9:
si='/';
break;
}
cout<<"第"<<i+1<<"道题:"<<endl;//列算式
cout<<a[i]<<si<<b[i]<<"="<<"__"<<endl;
fprintf(fp,"第%d道题\n",i+1);
fprintf(fp,"%d%c%d=__\n",a[i],si,b[i]);
// printf("%d%c%d=__\n",a[i],si,b[i]);//列算式
cout<<"请输入结果:"<<endl;
flag://重新输入
cin>>result[i];
fprintf(fp,"第%d次结果:%d\n",k+1,result[i]);
switch(si){
case '+'://加法
if(result[i]==a[i]+b[i]){
score=score+10-j;
}else {
cout<<"答案错误!请重新输入:"<<endl;
k++;
switch(k){
case 1:
j=3;
break;
case 2:
j=5;
break;
default:
j=10;
break;
}
goto flag;
}break;
case '-'://减法
if(result[i]==a[i]-b[i]){
score=score+10-j;
}else {
cout<<"答案错误!请重新输入:"<<endl;
k++;
switch(k){
case 1:
j=3;
break;
case 2:
j=5;
break;
default:
j=10;
break;
}
goto flag;
}break;
case '*'://乘法
if(result[i]==a[i]*b[i]){
score=score+10-j;
}else {
cout<<"答案错误!请重新输入:"<<endl;
k++;
switch(k){
case 1:
j=3;
break;
case 2:
j=5;
break;
default:
j=10;
break;
}
goto flag;
}break;
case '/'://除法
if(result[i]==a[i]/b[i]){
score=score+10-j;
}else {
cout<<"答案错误!请重新输入:"<<endl;
k++;
switch(k){
case 1:
j=3;
break;
case 2:
j=5;
break;
default:
j=10;
break;
}
goto flag;
}break;
}
}
cout<<endl;
cout<<"你的分数是"<<score<<endl;
score++;//计算分数
score/=10;
switch(score){//评级
case 10:
case 9:
cout<<"SMART"<<endl;
break;
case 8:
cout<<"GOOD"<<endl;
break;
case 7:
cout<<"OK"<<endl;
break;
case 6:
cout<<"PASS"<<endl;
break;
default:
cout<<"TRY AGAIN"<<endl;
break;
}
}