用C语言编写一个简单的"小学数学测试系统"
來源:互聯網 2010-05-17 14:12:03 評論
分類: 電腦/網絡
問題描述:
要思路,要原程序代码,要注示.
本人C语言知识水有限.
參考答案:
include /* 调用库函数 */
#include /* 调用库函数 */
int Tha; /* 变量 表示第一个运算数 */
int Thb; /* 第二个运算数 */
int Tresult; /* 正确答案 */
int Qcount; /* 题目的个数 */
int Upnum; /* 升级的分数 */
int Tscore; /* 当前得分 */
char op; /* 运算符号 */
TestTen() /* 出第一个级别题的函数 */
{
int Userda; /* 用户给出的答案 */
int temp; /* 临时变量,用于交换两个变量得值 */
op=random(4)+1; /* 产生一个1-4之间的随机数,用于表示+ ,- , * , / */
switch(op) /* 判断运算符是什么 */
{
case 1: /* 加 的情况 */
{ Tha=random(10); /* 产生一个0-9之间的随机数 放在第一个运算数 Tha中 */
Thb=random(10); /* 产生一个0-9之间的随机数 放在第二个运算数 Thb中 */
Tresult=Tha+Thb;break; /* 计算出正确答案 放在 Tresult中 */
}
case 2: /* 减 的情况 */
{ Tha=random(10);
Thb=random(10);
if(Tha
{temp=Tha;Tha=Thb;Thb=temp;} /* 交换 */
Tresult=Tha-Thb;break; /* 计算出正确答案 放在 Tresult中 */
}
case 3: /* 乘 的情况 */
{ Tha=random(10);
Thb=random(10);
Tresult=Tha*Thb;break;
}
case 4: /* 除 的情况 */
{do /* 循环 保证可以除尽 */
{ do /* 循环保证 除数不为 0 */
{Tha=random(10);
Thb=random(10);
if(Tha
{temp=Tha;Tha=Thb;Thb=temp;}
}while(Thb==0) ; /* 当除数0 的时候继续产生新的随机数 */
}while((Tha%Thb)!=0); /* 当不能整除的时候继续产生新的随机数 */
Tresult=Tha/Thb;
break;
}
}
switch(op) /* 根据 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 = ",Tha,Thb);break;}
case 4: {printf("\n%d / %d = ",Tha,Thb);}
}
scanf("%d",&Userda); /* 用户输入答案 */
while(Userda!=Tresult) /* 判断答案是否正确 */
{ if(Tscore>=10) /* 不正确减分 */
Tscore=Tscore-10;
printf("\nWrong! Now Your Score: %d",Tscore); /* 输出错误信息和 当前分数 */
/*if(Tscore
return; */
printf("\n Input The Answer Again: "); /* 提示重新输入 */
scanf("%d",&Userda); /* 用户输入答案 */
}
Tscore=Tscore+10; /* 答对了 加分 */
printf("\n Right! Now Your Score: %d",Tscore); /* */
}
TestHun() /*出第二个级别题的函数*/
{
int Userda;
int temp;
op=random(4)+1;
switch (op)
{
case 1:
{ Tha=random(90)+10; /* 产生 10-99 之间的随机数,即两位数 */
Thb=random(90)+10;
Tresult=Tha+Thb;break;
}
case 2:
{ Tha=random(90)+10;
Thb=random(90)+10;
if(Tha
{temp=Tha;Tha=Thb;Thb=temp;}
Tresult=Tha-Thb;break;
}
case 3:
{ Tha=random(90)+10;
Thb=random(90)+10;
Tresult=Tha*Thb;break;
}
case 4:
{do
{ do
{Tha=random(90)+10;
Thb=random(90)+10;
if(Tha
{temp=Tha;Tha=Thb;Thb=temp;}
}while (Thb==0) ;
}while ((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 = ",Tha,Thb);break;}
case 4: {printf("\n%d / %d = ",Tha,Thb);}
}
scanf("%d",&Userda);
while(Userda!=Tresult)
{ if(Tscore>=10)
Tscore=Tscore-10;
printf("\nWrong! Now Your Score: %d",Tscore);
if(Tscore
return;
printf("\n Input The Answer Again: ");
scanf("%d",&Userda);
}
Tscore=Tscore+10;
printf("\n Right! Now Your Score: %d",Tscore);
}
main()
{
int Leiji=0; /* 变量 , 存储 累计答题数目 */
randomize(); /* 保证每次运行程序 产生的随机数序列不相同的语句 */
clrscr(); /* 清屏 : 清除屏幕上上次运行的内容,重新开始运行程序 */
clrscr();
printf("\nTEST START:-------------------------------------");
printf("\n Please Input Question Count: "); /* 提示信息 :输入问题个数 */
scanf("%d",&Qcount); /* 用户输入问题个数 */
do
{printf("\n Please Input UpLevel Score(Times of 10 (Sheng ji de fen shu;)) : ");
/* 提示信息 :输入升级分数(10的倍数 ) */
scanf("%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 de bei shu!)"); /* */
else break;
}while(1); /* 不满足条件永远循环 */
printf("\n--------------------------------------------------------");
printf("\n--------------------------------------------------------"); printf("\nTest Start:");
printf("\n--------------------------------------------------------");
printf("\n----------------------------------");
printf("\n Lever 1 Start :");
Begin1:
printf("\n----------------------");
printf("\n Question: %d",Leiji+1); /* 输出 题号 */
TestTen();
Leiji++;
if(Leiji==Qcount) /* 如果做题个数 和 事先设定好的问题个数相同 则结束答题! */
{ printf("\n--------------------------------------------------------");
printf("\n--------------------------------------------------------\n");
printf("\n Test Over!!!\n");
printf("\n--------------------------------------------------------");
printf("\n Your Final Score: %d",Tscore);
if(Tscore>=Upnum)
printf("\n Your Final Level: LEVEL 2");
else
printf("\n Your Final Level: LEVEL 1");
goto LastLine;
}
if(Tscore
goto Begin1; /* 转向到 Begin1 继续作题 */
printf("\n Up To Advance Level!\n Lever2 Start :---------"); /* 达到升级分数 升级到 Level2 */
Begin2:
printf("\n----------------------");
printf("\n Question: %d",Leiji+1);
TestHun();
Leiji++;
if(Leiji==Qcount)
{ printf("\n--------------------------------------------------------");
printf("\n--------------------------------------------------------\n");
printf("\n Test Over!!!\n");
printf("\n--------------------------------------------------------");
printf("\n Your Final Score: %d",Tscore);
if(Tscore>=Upnum)
printf("\n Your Final Level: LEVEL 2");
else
printf("\n Your Final Level: LEVEL 1");
goto LastLine;
}
if(Tscore
{printf("\nDown To Normal Level! Lever1 : -------"); /* 从Level2答题过程中分数小于升级分数 降级到Level 1 继续答题 */
goto Begin1;}
else
goto Begin2;
LastLine:
printf("\n------------------------------------------------") ;
getchar();getchar(); /* 等待用户输入回车结束程序运行 */
}
[b]分类:[/b] 电脑/网络[br][b]问题描述:[/b][br]要思路,要原程序代码,要注示.
本人C语言知识水有限.[br][b]参考答案:[/b][br]include /* 调用库函数 */
#include /* 调用库函数 */
int Tha; /* 变量 表示第一个运算数 */
int Thb; /* 第二个运算数 */
int Tresult; /* 正确答案 */
int Qcount; /* 题目的个数 */
int Upnum; /* 升级的分数 */
int Tscore; /* 当前得分 */
char op; /* 运算符号 */
TestTen() /* 出第一个级别题的函数 */
{
int Userda; /* 用户给出的答案 */
int temp; /* 临时变量,用于交换两个变量得值 */
op=random(4)+1; /* 产生一个1-4之间的随机数,用于表示+ ,- , * , / */
switch(op) /* 判断运算符是什么 */
{
case 1: /* 加 的情况 */
{ Tha=random(10); /* 产生一个0-9之间的随机数 放在第一个运算数 Tha中 */
Thb=random(10); /* 产生一个0-9之间的随机数 放在第二个运算数 Thb中 */
Tresult=Tha+Thb;break; /* 计算出正确答案 放在 Tresult中 */
}
case 2: /* 减 的情况 */
{ Tha=random(10);
Thb=random(10);
if(Tha
{temp=Tha;Tha=Thb;Thb=temp;} /* 交换 */
Tresult=Tha-Thb;break; /* 计算出正确答案 放在 Tresult中 */
}
case 3: /* 乘 的情况 */
{ Tha=random(10);
Thb=random(10);
Tresult=Tha*Thb;break;
}
case 4: /* 除 的情况 */
{do /* 循环 保证可以除尽 */
{ do /* 循环保证 除数不为 0 */
{Tha=random(10);
Thb=random(10);
if(Tha
{temp=Tha;Tha=Thb;Thb=temp;}
}while(Thb==0) ; /* 当除数0 的时候继续产生新的随机数 */
}while((Tha%Thb)!=0); /* 当不能整除的时候继续产生新的随机数 */
Tresult=Tha/Thb;
break;
}
}
switch(op) /* 根据 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 = ",Tha,Thb);break;}
case 4: {printf("\n%d / %d = ",Tha,Thb);}
}
scanf("%d",&Userda); /* 用户输入答案 */
while(Userda!=Tresult) /* 判断答案是否正确 */
{ if(Tscore>=10) /* 不正确减分 */
Tscore=Tscore-10;
printf("\nWrong! Now Your Score: %d",Tscore); /* 输出错误信息和 当前分数 */
/*if(Tscore
return; */
printf("\n Input The Answer Again: "); /* 提示重新输入 */
scanf("%d",&Userda); /* 用户输入答案 */
}
Tscore=Tscore+10; /* 答对了 加分 */
printf("\n Right! Now Your Score: %d",Tscore); /* */
}
TestHun() /*出第二个级别题的函数*/
{
int Userda;
int temp;
op=random(4)+1;
switch (op)
{
case 1:
{ Tha=random(90)+10; /* 产生 10-99 之间的随机数,即两位数 */
Thb=random(90)+10;
Tresult=Tha+Thb;break;
}
case 2:
{ Tha=random(90)+10;
Thb=random(90)+10;
if(Tha
{temp=Tha;Tha=Thb;Thb=temp;}
Tresult=Tha-Thb;break;
}
case 3:
{ Tha=random(90)+10;
Thb=random(90)+10;
Tresult=Tha*Thb;break;
}
case 4:
{do
{ do
{Tha=random(90)+10;
Thb=random(90)+10;
if(Tha
{temp=Tha;Tha=Thb;Thb=temp;}
}while (Thb==0) ;
}while ((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 = ",Tha,Thb);break;}
case 4: {printf("\n%d / %d = ",Tha,Thb);}
}
scanf("%d",&Userda);
while(Userda!=Tresult)
{ if(Tscore>=10)
Tscore=Tscore-10;
printf("\nWrong! Now Your Score: %d",Tscore);
if(Tscore
return;
printf("\n Input The Answer Again: ");
scanf("%d",&Userda);
}
Tscore=Tscore+10;
printf("\n Right! Now Your Score: %d",Tscore);
}
main()
{
int Leiji=0; /* 变量 , 存储 累计答题数目 */
randomize(); /* 保证每次运行程序 产生的随机数序列不相同的语句 */
clrscr(); /* 清屏 : 清除屏幕上上次运行的内容,重新开始运行程序 */
clrscr();
printf("\nTEST START:-------------------------------------");
printf("\n Please Input Question Count: "); /* 提示信息 :输入问题个数 */
scanf("%d",&Qcount); /* 用户输入问题个数 */
do
{printf("\n Please Input UpLevel Score(Times of 10 (Sheng ji de fen shu;)) : ");
/* 提示信息 :输入升级分数(10的倍数 ) */
scanf("%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 de bei shu!)"); /* */
else break;
}while(1); /* 不满足条件永远循环 */
printf("\n--------------------------------------------------------");
printf("\n--------------------------------------------------------"); printf("\nTest Start:");
printf("\n--------------------------------------------------------");
printf("\n----------------------------------");
printf("\n Lever 1 Start :");
Begin1:
printf("\n----------------------");
printf("\n Question: %d",Leiji+1); /* 输出 题号 */
TestTen();
Leiji++;
if(Leiji==Qcount) /* 如果做题个数 和 事先设定好的问题个数相同 则结束答题! */
{ printf("\n--------------------------------------------------------");
printf("\n--------------------------------------------------------\n");
printf("\n Test Over!!!\n");
printf("\n--------------------------------------------------------");
printf("\n Your Final Score: %d",Tscore);
if(Tscore>=Upnum)
printf("\n Your Final Level: LEVEL 2");
else
printf("\n Your Final Level: LEVEL 1");
goto LastLine;
}
if(Tscore
goto Begin1; /* 转向到 Begin1 继续作题 */
printf("\n Up To Advance Level!\n Lever2 Start :---------"); /* 达到升级分数 升级到 Level2 */
Begin2:
printf("\n----------------------");
printf("\n Question: %d",Leiji+1);
TestHun();
Leiji++;
if(Leiji==Qcount)
{ printf("\n--------------------------------------------------------");
printf("\n--------------------------------------------------------\n");
printf("\n Test Over!!!\n");
printf("\n--------------------------------------------------------");
printf("\n Your Final Score: %d",Tscore);
if(Tscore>=Upnum)
printf("\n Your Final Level: LEVEL 2");
else
printf("\n Your Final Level: LEVEL 1");
goto LastLine;
}
if(Tscore
{printf("\nDown To Normal Level! Lever1 : -------"); /* 从Level2答题过程中分数小于升级分数 降级到Level 1 继续答题 */
goto Begin1;}
else
goto Begin2;
LastLine:
printf("\n------------------------------------------------") ;
getchar();getchar(); /* 等待用户输入回车结束程序运行 */
}