1、include
2、 /* 升级的分数 */ int Tscore; char op; /* 运算符号 */ struct mathti { int Tscore; /* 当前得分 */ int DG; /* 当前等级 */ }math[SIZE]; TestTen() /* 出第一个级别题的函数 */ { int Userda; /* 用户给出的答案 */ int temp; /* 临时变量,用于交换两个变量得值 */
3、op=rand()%4+1; /* 产生一个1-4之间的随机数,用于表示+ ,- , * , / */ switch(op) /* 判断运算符是什么 */ { case 1: /* 加 的情况 */ { Tha=rand()%10; /* 产生一个0-9之间的随机数 放在第一个运算数 Tha中 */ Thb=rand()%10; /* 产生一个0-9之间的随机数 放在第二个运算数 Thb中
4、 */
Tresult=Tha+Thb;break; /* 计算出正确答案 放在 Tresult中 */
}
case 2: /* 减 的情况 */
{ Tha=rand()%10;
Thb=rand()%10;
if(Tha 5、Thb;Thb=temp;} /* 交换 */
Tresult=Tha-Thb;break; /* 计算出正确答案 放在 Tresult中 */
}
case 3: /* 乘 的情况 */
{ Tha=rand()%10;
Thb=rand()%10;
Tresult=Tha*Thb;break;
}
case 4: /* 除 的情况 6、 */
{do /* 循环 保证可以除尽 */
{ do /* 循环保证 除数不为 0 */
{Tha=rand()%10;
Thb=rand()%10;
if(Tha 7、候继续产生新的随机数 */
} while((Tha%Thb)!=0); /* 当不能整除的时候继续产生新的随机数 */
Tresult=Tha/Thb;
break;
}
}
switch(op) /* 根据 op的值决定输出 问题 */
{
case 1: {printf("\n%d + %d = ",Tha,Thb);break;}
8、 case 2: {printf("\n%d - %d = ",Tha,Thb);break;}
case 3: {printf("\n%d X %d = ",Tha,Thb);break;}
case 4: {printf("\n%d / %d = ",Tha,Thb);}
}
scanf("%d",&Userda); /* 用户输入答案 */
while(Userda!=Tresult) /* 9、判断答案是否正确 */
{ if(math[0].Tscore>=10) /* 不正确减分 */
math[0].Tscore=math[0].Tscore-10;
printf("\n错误! 现在你的分数为 : %d",math[0].Tscore); /* 输出错误信息和 当前分数 */
printf("\n 请再次输入答案 : "); /* 提 10、示重新输入 */
scanf("%d",&Userda); /* 用户输入答案 */
}
math[0].Tscore=math[0].Tscore+10; /* 答对了 加分 */
printf("\n 正确 ! 现在你的分数为 : %d",math[0].Tscore); /* */
}
11、TestHun() /*出第二个级别题的函数*/
{
int Userda;
int temp;
op=rand()%4+1;
switch (op)
{
case 1:
{ Tha=rand()%90+10; /* 产生 10-99 之间的随机数,即两位数 */
Thb=rand()%90+10;
Tresult=Tha+Thb;break;
}
12、 case 2:
{ Tha=rand()%90+10;
Thb=rand()%90+10;
if(Tha 13、result=Tha*Thb;break;
}
case 4:
{do
{ do
{Tha=rand()%90+10;
Thb=rand()%90+10;
if(Tha 14、ile ((Tha%Thb)!=0);
Tresult=Tha/Thb;
break;
}
}
switch(op)
{
case 1: {printf("\n%d + %d = ",Tha,Thb);break;}
case 2: {printf("\n%d - %d = ",Tha,Thb);break;}
case 3: {printf("\n%d X %d 15、 = ",Tha,Thb);break;}
case 4: {printf("\n%d / %d = ",Tha,Thb);}
}
scanf("%d",&Userda);
while(Userda!=Tresult)
{ if(math[0].Tscore>=10)
math[0].Tscore=math[0].Tscore-10;
printf("\n错误! 现在你的分数是 : %d",math[0].Tscore);
16、 if(math[0].Tscore 17、
void main()
{
int Leiji=0; /* 变量 , 存储 累计答题数目 */
srand((int)time(0)); /* 保证每次运行程序 产生的随机数序列不相同的语句 */
/* 清屏 : 清除屏幕上上次运行的内容,重新开始运行程序 */
printf("\n欢迎使用: 学好算数 \n 18、");
printf("请输入要计算的问题个数\n: "); /* 提示信息 :输入问题个数 */
scanf("%d",&Qcount); /* 用户输入问题个数 */
do
{printf("\n 请输入晋级所需要的分数(答对一题得10分) : ");
/* 提示信息 :输入升级分数(10的倍数 ) */
sca 19、nf("%d",&Upnum); /* 用户输入升级分数 */
if(Upnum<10) /* 如果用户输入的升级分数<10 */
printf("\n Must > = 10 ! ");
else if(Upnum%10!=0) /* 如果用户输入的升级分数不是10的倍数 :即 整除10 不等于0 */
printf("\n Must Some Times of 10!(10 的倍数!)");
els 20、e if(Upnum<(0.9*Qcount*10)) /* 如果用户输入的升级分数<90%的总分 */
printf("\n 晋级分数满足为总分的0.9以上");
else if(Upnum>(Qcount*10)) /* 如果用户输入的升级分数>总分 */
printf("\n晋级分数必须不大于总分 ");
else break;
}while(1); /* 不满足条件永远循环 */ 21、
printf("\n ");
printf("\n ");
printf("\n开始测试:");
printf("\n ");
printf("\n ");
printf("\n 第一级别的测试 :");
Begin1:
printf(" 22、\n ");
printf("\n 问题: %d",Leiji+1); /* 输出 题号 */
TestTen();
Leiji++;
if(Leiji==Qcount) /* 如果做题个数 和 事先设定好的问题个数相同 则结束答题! */
{ printf("\n ");
23、 printf("\n \n");
printf("\n 测试结束!!!\n");
printf("\n \n");
printf("\n 你的最终分数为: %d",math[0].Tscore);
if(math[0].Tscore>=Upnum)
printf("\n 你的最终的级别为: 第%d级别\n",ma 24、th[0].DG=2);
else
printf("\n 你的最终的级别为: 第%d级别\n",math[0].DG=1);
return;
}
if(math[0].Tscore 25、 /* 达到升级分数 升级到 Level2 */
Begin2:
printf("\n ");
printf("\n 问题 : %d",Leiji+1);
TestHun();
Leiji++;
if(Leiji==Qcount)
{
printf("\n ");
printf("\n 26、 \n");
printf("\n 测试结束!!!\n");
printf("\n ");
printf("\n 你的最终分数为: %d",math[0].Tscore);
if(math[0].Tscore>=Upnum)
printf("\n 你的最终的级别为 : 第%d级别\n",math[0].DG=2);
else
printf("\n 27、 你的最终的级别为: 第%d级别\n",math[0].DG=1);
return;
}
if(math[0].Tscore 28、d save()
{
FILE *fp;
if((fp=fopen("math_list","wb"))==NULL)
{
printf("file write error\n");
return;
}
if(fwrite(&math[0],sizeof(struct mathti),1,fp)!=1)
printf("file write error\n");
if ((fp=fopen("math_list","rb"))==NULL);
{printf("can not open file\n");
exit(0);}
{ fseek(fp, sizeof(struct mathti),0);
fread(&math[0],sizeof(struct mathti),1,fp);
printf("%d %d \n",math[0].Tscore,math[0].DG);
}
fclose(fp);
}






