计算机辅导教学(CAI)软件开发:教小学生学算术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<stdio.h> #include<string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
void cd(); //菜单
void gz(); //游戏规则函数
void add(); //个位数加法
void add1(); //十位数加法
void sub(); //个位数减法
void sub1(); //十位数减法
void mul(); //个位数乘法
void mul1(); //十位数乘法
void div(); //个位数除法
void div1(); //十位数除法
void tc(); //退出函数
int sum=0,k;
main()
{
cd();
return 0;
}
void cd() //菜单
{
int z;
printf("\n");
printf("菜单\n");
printf("0.规则\n");
printf("1.加法\n");
printf("2.减法\n");
printf("3.乘法\n");
printf("4.除法\n");
printf("\n");
printf("请选择\n");
scanf("%d",&z);
if(z>9||z<0)
{
printf("输入错误!请重新输入!\n"); scanf("%d",&z);
}
switch(z)
{
case 0: gz(); break ;
case 1: add(); break ;
case 2: sub(); break ;
case 3: mul(); break ;
case 4: div(); break ;
default:tc();
}
}
void gz() //游戏规则函数
{
int l;
printf("\n");
printf("游戏规则\n");
printf("1、你可以选择加法,减法,乘法,除法,运算四种运算。

\n");printf("2、每种运算分为两个等级,第一级和第二级\n");printf("3、第一级为个位数运算,第二级为十位数运算。

\n");printf("4、做第一级正确率达到90%,将进入第二级。

\n");printf("5、若在第二级的正确率低于60%将会降级。

\n");printf("\n");printf("输入(0)返回菜单\n");
scanf("%d",&l);
if(l>=9||l<0)
{
printf("输入错误!请重新输入!\n");
printf("是否继续挑战?\n");
printf("Yes(0)继续挑战,No(1)结束!\n");
scanf("%d",&l);
}
switch(l)
{
case 0: cd(); break ;
default:tc();
}
}
void add() //个位数加法
{
int x,y,i,j;
float answer;
int sum=0; //统计一次答对的题数sum
printf("请输入挑战的题量:"); //输入的题目数量k
scanf("%d",&k);
for( i=1 ; i<=k ; i++)
{
srand ((unsigned)time(0)); //用当前时间作参数,计算随机数种子x=(rand()%10); //取0~9之间的随机数
y=(rand()%10);
printf("%d+%d=",x,y);
scanf("%f",&answer);
if(answer!=(x+y))
{
j=1;
while(answer!=(x+y)&&j<3)
{
printf("答案错误,请输入正确答案:\n"); printf("%d+%d=",x,y);
scanf("%f",&answer);
j++;
}
if(j>=3)
{
printf("正确答案:\n");
printf("%f\n",answer=((float)x+(float)y));
}
else
{
printf("回答正确!\n");
}
else
{
sum++;
printf("回答正确!\n");
}
}
printf("答对题数:%d答错题数
为:%5.2f%%\n",sum,(k-sum),(sum/(float)k*100)); if((sum/(float)k)>=0.9)
{
printf("恭喜您晋级了!\n");
add1();
}
else
{
printf("抱歉您未能晋级\n");
tc();
}
}
void add1() //十位数加法
int x,y,i,k,j,sum=0 ;%d一次答对率:
float answer;
printf("请输入挑战的题量:");
scanf("%d",&k);
for( i=1 ; i<=k ; i++)
{
srand ((unsigned)time(0));
x=(rand()%90+10);
y=(rand()%90+10);
printf("%d+%d=",x,y);
scanf("%f",&answer);
if(answer!=(x+y))
{
j=1;
while(answer!=(x+y)&&j<3)
{
printf("答案错误,请输入正确答案:\n"); printf("%d+%d=",x,y);
scanf("%f",&answer);
j++;
if(j>=3)
{
printf("正确答案:\n");
printf("%f\n",answer=((float)x+(float)y));
}
else
{
printf("回答正确!\n");
}
}
else
{
sum++;
printf("回答正确!\n");
}
}
printf("答对题数:%d答错题数:
为:%5.2f%%\n",sum,(k-sum),(sum/(float)k*100)); if((sum/(float)k)<0.6)
{
printf("很抱歉,您降级了!回到第一级!\n"); add();
}
else%d一次答对率{
printf("恭喜您,顺利通关!\n");
tc();
}
}
void sub() //个位数减法
{
int x , y , i , k , j , sum=0 ;
float answer ;
printf("请输入挑战的题量:");
scanf("%d",&k);
for( i=1 ; i<=k ; i++)
{
srand ((unsigned)time(0));
loop: //配合goto转跳
{
x=(rand()%10);
y=(rand()%10);
}
if(x>=y)
{
printf("%d-%d=",x,y);
scanf("%f",&answer);
if(answer!=(x-y))
{
j=1;
while(answer!=(x-y)&&j<3)
{
printf("答案错误,请输入正确答案:\n"); printf("%d-%d=",x,y);
scanf("%f",&answer);
j++;
}
if(j>=3)
{
printf("正确答案:\n");
printf("%f\n",answer=((float)x-(float)y));
}
else
printf("回答正确!\n");
}
}
else
{
sum++;
printf("回答正确!\n");
}
}
else
goto loop ;
}
printf("答对题数:%d答错题数:%d
为:%5.2f%%\n",sum,(k-sum),(sum/(float)k*100)); if((sum/(float)k)>=0.9)
{
printf("恭喜您晋级了!\n");
sub1();
}
else
printf("抱歉您未能晋级!\n"); tc();
}
}
void sub1() //十位数减法
{
int x , y , i , k , j ,sum=0 ;
float answer;
printf("请输入挑战的题量:"); scanf("%d",&k);
for( i=1 ; i<=k ; i++)
{
srand ((unsigned)time(0)); loop:
{
x=(rand()%90+10);
y=(rand()%90+10);
}
if(x>=y)
{
printf("%d-%d=",x,y);
scanf("%f",&answer);
if(answer!=(x-y))
{
j=1;
while(answer!=(x-y)&&j<3)一次答对率{ printf("答案错误,请输入正确答案:\n"); printf("%d-%d=",x,y);
scanf("%f",&answer);
j++;
}
if(j>=3)
{
printf("正确答案:\n");
printf("%f\n",answer=((float)x-(float)y));
}
else
{
printf("回答正确!\n");
}
}
else
{
sum++;
printf("回答正确!\n");
}
}
else
goto loop ;
}
printf("答对题数:%d答错题数:
为:%5.2f%%\n",sum,(k-sum),(sum/(float)k*100)); if((sum/(float)k)<0.6)
{
printf("很抱歉,您降级了!回到第一级!\n"); sub();
}
else
{
printf("恭喜您,顺利通关!\n");
tc();
}
}
void mul() //个位数乘法
{
int x , y , k , i , j , sum=0 ;
float answer ;
printf("请输入挑战的题量:");
scanf("%d",&k);%d一次答对率for( i=1 ; i<=k ; i++) {
srand ((unsigned)time(0));
x=(rand()%10);
y=(rand()%10);
printf("%d*%d=",x,y);
scanf("%f",&answer);
if(answer!=(x*y))
{
j=1;
while(answer!=(x*y)&&j<3)
{
printf("答案错误,请输入正确答案:\n");
printf("%d*%d=",x,y);
scanf("%f",&answer);
j++;
}
if(j>=3)
{
printf("正确答案:\n");
printf("%f\n",answer=((float)x*(float)y));
}
else
{
printf("回答正确!\n");
}
}
else
{
sum++;
printf("回答正确!\n");
}
}
printf("答对题数:%d答错题数:
为:%5.2f%%\n",sum,(k-sum),(sum/(float)k*100)); if((sum/(float)k)>=0.9)
{
printf("恭喜您晋级了!\n"); mul1();
}
else
{
printf("抱歉您未能晋级!"); tc();%d一次答对率}
}
void mul1() //十位数乘法
{
int x , y , i , k , j ,sum=0 ;
float answer ;
printf("请输入挑战的题量:"); scanf("%d",&k);
for( i=1 ; i<=k ; i++)
{
srand ((unsigned)time(0));
x=(rand()%90+10);
y=(rand()%90+10);
printf("%d*%d=",x,y);
scanf("%f",&answer);
if(answer!=(x*y))
{
j=1;
while(answer!=(x*y)&&j<3)
{
printf("答案错误,请输入正确答案:\n"); printf("%d*%d=",x,y);
scanf("%f",&answer);
j++;
}
if(j>=3)
{
printf("正确答案:\n");
printf("%f\n",answer=((float)x*(float)y));
}
else
{
printf("回答正确!\n");
}
}
else
{
sum++;
printf("回答正确!\n");
}
}
printf("答对题数:%d答错题数:
为:%5.2f%%\n",sum,(k-sum),(sum/(float)k*100)); if((sum/(float)k)<0.6)%d一次答对率{
printf("很抱歉,您降级了!回到第一级!\n"); mul();
}
else
{
printf("恭喜您,顺利通关!\n");
tc();
}
}
void div() //个位数除法
{
int x , y , i , k , j ;
int answer ;
int sum=0 ;
printf("请输入挑战的题量:");
scanf("%d",&k);
for( i=1 ; i<=k ; i++)
{
srand ((unsigned)time(0));
do
{
x=(rand()%10);
y=(rand()%10);
}
while(y==0||x%y!=0);
printf("%d/%d=",x,y);
scanf("%d",&answer);
if(answer!=(x/y))
{
j=1;
while(answer!=(x/y)&&j<3)
{
printf("答案错误,请输入正确答案:\n");
printf("%d/%d=",x,y); scanf("%f",&answer);
j++;
}
if(j>=3)
{
printf("正确答案:\n"); printf("%f\n",answer=(x/y)); }
else
{
printf("回答正确!\n");
}
}
else
{
sum++;
printf("回答正确!\n");
}
}
printf("答对题数:%d答错
为:%5.2f%%\n",sum,(k-sum),(sum/(float)k*100)); if((sum/(float)k)>=0.9)
{
printf("恭喜您晋级了!\n");
div1();
}
else
{
printf("抱歉您未能晋级!");
tc();
}
}
void div1() //十位数除法
{
int x , y , i , k , j , sum=0 ;
int answer ;
printf("请输入挑战的题量:");
scanf("%d",&k);
for( i=1 ; i<=k ; i++)
{
srand ((unsigned)time(0));
{
x=(rand()%90+10);
y=(rand()%90+10);
}
while(y==0||x%y!=0);
printf("%d/%d=",x,y);
scanf("%d",&answer);
if(answer!=(x/y))
{
j=1;
while(answer!=(x/y)&&j<3)题数:%d一次答对率{ printf("答案错误,请输入正确答案:\n");
printf("%d/%d=",x,y);
scanf("%f",&answer);
j++;
}
if(j>=3)
{
printf("正确答案:\n");
printf("%f\n",answer=(x/y));
else
{
printf("回答正确!\n");
}
}
else
{
sum++;
printf("回答正确!\n");
}
}
printf("答对题数:%d答错题数
为:%5.2f%%\n",sum,(k-sum),(sum/(float)k*100)); if((sum/(float)k)<0.6)
{
printf("很抱歉,您降级了!回到第一级!\n"); div();
}
else
{
printf("恭喜您,顺利通关!\n");
tc();
}
}
void tc() //退出函数
{
int h ;
printf("是否继续挑战?\n");
printf("Yes(0)继续挑战,No(1)结束!\n");
scanf("%d",&h);
if(h>9||h<0)
{
printf("输入错误!请重新输入!\n");%d一次答对率:}printf("是否继续挑战?\n");
printf("Yes(0)继续挑战,No(1)结束!\n");
scanf("%d",&h);
}
switch(h)
{
case 0: cd(); break ;
case 1: printf("游戏结束!\n"); break ;
default:tc(); }。

相关文档
最新文档