我正在写十以内加减法的挑战模式,不知道该怎么写,要求每5题为一次挑战,每次挑战需统计成绩,可以循环挑战,直到用户退出为止。退出时显示本关卡挑战的次数及排名前5次的成绩(不足5次,显示所有成绩),成绩要求按降序排序显示。
#include
#include
#include
#include
#include
double one(void);
//double two(void);
//double three(void);
char mygetchar(void);
int panduan(void);
int main(void)
{
int i;
double pa;
printf("选择难度等级:\n");
printf("1.十以内加减法\n");
printf("2.两位数加一位数不进位,两位数减一位数不借位\n");
printf("3.一百以内加减法\n");
printf("4.退出系统\n");
while (i = mygetchar())
{
if (i > '0' && i < '5')
break;
printf("输入错误!请重新输入:");
}
switch (i)
{
case '1' :
system("cls");
pa = one();
break;
//case '2' :
//system("cls");
//pa = two();
//break;
//case '3' :
//system("cls");
//pa = three();
//break;
case '4' :
break;
}
}
double one(void)
{
int a[10], b[10],i, m=0, n=0, x=0;
int t=0;
double p;
char ch,ch2;
char s;
int k;
char cal[2]={'+','-'};
srand((unsigned)time(NULL));
printf("请选择训练模式\n");
printf("a.练习模式\n");
printf("b.考试模式\n");
printf("c.挑战模式\n");
ch = mygetchar();
while(ch<'a'||ch>'c')
{
printf("输入错误!请重新输入:");
ch = mygetchar();
}
system("cls");
if(ch=='a')
{
for(i=0;i<10;++i)
{
a[i]=rand()%11;
b[i]=rand()%11;
s=cal[rand()%2];
switch(s)
{
case'+':k=a[i]+b[i];break;
case'-':if(a[i]-b[i]<0)
{
a[i]=t;
a[i]=b[i];
b[i]=t;
}
k=a[i]-b[i];
break;
}
printf("%d%c%d=",a[i],s,b[i]);
scanf("%d",&x);
while(x!=k)
{
printf("答案错误 请重新输入:");
scanf("%d",&x);
}
continue;
}
}
if(ch=='b')
{
int num;
int num1=0;
printf("请输入题目数量:");
scanf("%d",&num);
for(i=0;i11;
b[i]=rand()%11;
s=cal[rand()%2];
switch(s)
{
case'+':k=a[i]+b[i];break;
case'-':if(a[i]-b[i]<0)
{
a[i]=t;
a[i]=b[i];
b[i]=t;
}
k=a[i]-b[i];
break;
}
printf("%d%c%d=",a[i],s,b[i]);
scanf("%d",&x);
if(x==k)
{
num1++;
}
}
p = (float)num1 / num;
printf("答对%d题\n",num1);
printf("您的正确率为:%.2lf%%\n",p*100);
}
if(ch=='c')
{
int num=0,num1=0,num2=0,t=0,j=0;
char str[j];
do{
num1=0;
for(i=0;i<5;++i)
{
a[i]=rand()%11;
b[i]=rand()%11;
s=cal[rand()%2];
switch(s)
{
case'+':k=a[i]+b[i];break;
case'-':if(a[i]-b[i]<0)
{
a[i]=t;
a[i]=b[i];
b[i]=t;
}
k=a[i]-b[i];
break;
}
printf("%d%c%d=",a[i],s,b[i]);
scanf("%d",&x);
if(x==k)
{
num1++;
}
}
p= (float)num1/5;
printf("答对%d题\n",num1);
printf("您的正确率为:%.2lf%%\n", p*100);
int k=0;
str[k]=num1;
k++;
printf("\n是否继续?(Y/N)\n");
while (getchar() != '\n')
continue;
ch2 = mygetchar();
num2++;
}while(ch2=='Y'||ch2=='y');
printf("本关卡挑战的次数为%d次\n",num2);
if(num2<5)
{
for(j=0;jchar mygetchar(void)
{
char ch;
ch= getchar();
while (getchar()!= '\n')
continue;
return ch;
}