自己写的代码如下:
#include"stdio.h" //程序所需头文件
#include"stdlib.h"
#include"time.h"
#include"string.h"
//定义所需全局变量
int a,b,c;
char value[3];
int answer,score=0;
int question() //获取算式函数
{
while(1)
{
srand(time(NULL)); // 用随机函数来获取两个小于50大于0的随机数
a=rand()%51;
b=rand()%51;
if(a+b<50) //随机选取运算符号
{
c=a+b;
return 0;
}
if((0<a-b<50)) //随机选取运算符号
{
c=a-b;
return 1;
}
}
}
int check_len() //输入数据长度检测函数
{
if(strlen(value)==2)
return 1;
else return 0;
}
int check_char() //输入数据非数字字符检测函数
{
int j;
for(j=0;j<check_len()+1;j++)
{
if(value[j]>='0'&&value[j]<='9')
continue;
else return 0;
}
return 1;
}
void get_answer() //输入数据检测函数(包含长度及字符检测)
{
while(1)
{
if(check_char(value)==1)
{
if(check_len(value)==1)
{
answer=(value[0]-48)*10 + (value[1]-48);
break;
}
else {answer=value[0]-48; break;}
}
else {printf("\t\t\t\t输入数据含有非数字!请重新输入!\n\t\t\t\t\t\t"); gets(value);}
}
}
void check_answer() //答案检查函数
{
if(answer==c)
score+=10; //第一次答对+10分
else
{
printf("\t\t\t\t 答案错误,请重新输入!\n\t\t\t\t\t\t");
gets(value);
get_answer();
if(answer==c)
score+=7; //第二次答对+7分
else
{
printf("\t\t\t\t 答案错误,请重新输入!\n\t\t\t\t\t\t");
gets(value);
get_answer();
if(answer==c)
score+=5; //第三次答对+5分
else printf("\t\t\t\t 错误!正确答案是%d。\n",c); //三次全部答错不得分,输出正确结果
}
}
}
void main()
{
int i;
printf("\t\t\t\t数\t学\t测\t验\t\n");
printf("\t\t\t -------------------------------------\n");
for(i=1;i<=10;i++)
{
question();
if(question()==0)
printf("\t\t\t\t %2d. %2d + %2d = ",i,a,b);
else printf("\t\t\t\t %2d. %2d - %2d = ",i,a,b);
gets(value);
get_answer();
check_answer();
}
printf("\t\t\t -------------------------------------\n");
printf("\t\t\t\t 总分数为%d!",score);
switch(score/10)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5: printf("TRY AGAIN!");break;
case 6: printf("PASS!");break;
case 7: printf("OK!");break;
case 8: printf("GOOD!");break;
case 9:
case 10: printf("SMART!");break;
}
}
470580
#include"stdio.h" //程序所需头文件
#include"stdlib.h"
#include"time.h"
#include"string.h"
//定义所需全局变量
int a,b,c;
char value[3];
int answer,score=0;
int question() //获取算式函数
{
while(1)
{
srand(time(NULL)); // 用随机函数来获取两个小于50大于0的随机数
a=rand()%51;
b=rand()%51;
if(a+b<50) //随机选取运算符号
{
c=a+b;
return 0;
}
if((0<a-b<50)) //随机选取运算符号
{
c=a-b;
return 1;
}
}
}
int check_len() //输入数据长度检测函数
{
if(strlen(value)==2)
return 1;
else return 0;
}
int check_char() //输入数据非数字字符检测函数
{
int j;
for(j=0;j<check_len()+1;j++)
{
if(value[j]>='0'&&value[j]<='9')
continue;
else return 0;
}
return 1;
}
void get_answer() //输入数据检测函数(包含长度及字符检测)
{
while(1)
{
if(check_char(value)==1)
{
if(check_len(value)==1)
{
answer=(value[0]-48)*10 + (value[1]-48);
break;
}
else {answer=value[0]-48; break;}
}
else {printf("\t\t\t\t输入数据含有非数字!请重新输入!\n\t\t\t\t\t\t"); gets(value);}
}
}
void check_answer() //答案检查函数
{
if(answer==c)
score+=10; //第一次答对+10分
else
{
printf("\t\t\t\t 答案错误,请重新输入!\n\t\t\t\t\t\t");
gets(value);
get_answer();
if(answer==c)
score+=7; //第二次答对+7分
else
{
printf("\t\t\t\t 答案错误,请重新输入!\n\t\t\t\t\t\t");
gets(value);
get_answer();
if(answer==c)
score+=5; //第三次答对+5分
else printf("\t\t\t\t 错误!正确答案是%d。\n",c); //三次全部答错不得分,输出正确结果
}
}
}
void main()
{
int i;
printf("\t\t\t\t数\t学\t测\t验\t\n");
printf("\t\t\t -------------------------------------\n");
for(i=1;i<=10;i++)
{
question();
if(question()==0)
printf("\t\t\t\t %2d. %2d + %2d = ",i,a,b);
else printf("\t\t\t\t %2d. %2d - %2d = ",i,a,b);
gets(value);
get_answer();
check_answer();
}
printf("\t\t\t -------------------------------------\n");
printf("\t\t\t\t 总分数为%d!",score);
switch(score/10)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5: printf("TRY AGAIN!");break;
case 6: printf("PASS!");break;
case 7: printf("OK!");break;
case 8: printf("GOOD!");break;
case 9:
case 10: printf("SMART!");break;
}
}
470580