本系统主要为一年级同学量身定做一个口算训练系统。训练题目根据难度等级分为3种类型,“十以内加减法”、“两位数加一位数不进位,两位数减一位数不借位”、“一百以内加减法”。训练模式分为3种:“练习模式”,“考试模式”,“挑战模式”。
功能具体要求:
系统包含3种训练模式:“练习模式”,“考试模式”,“挑战模式”。
1)“练习模式”:每次随机生成10个规定题目。每次输出一道运算题,要求用户输入答案,程序要对答案进行判定。若答案错误,要求用户重新答题,直到答案正确;若答案正确,输出下一题,直到答完10个题目为止。
2)“考试模式”:每次随机生成输入数量的规定题目。每次输出一道,要求用户输入答案。在全部问题回答完毕后,统计回答正确题数,以及正确率。并打印输出所有题目及用户输入的答案。
3)“挑战模式”:每5题为一次挑战,每次挑战需统计成绩,可以循环挑战,直到用户退出为止。退出时显示本关卡挑战的次数及排名前5次的成绩(不足5次,显示所有成绩),成绩要求按降序排序显示。
题目要求:题目根据情况分为3种。
其中,计算数1、计算数2、计算结果均为大于等于0的整数,两个数都是随机产生;
1)“十以内加减法”:两个数都是10以内数据,求其结果;加减法要求随机。
2)“两位数加一位数不进位,两位数减一位数不借位”:一个计算数是两位数,另一个计算数为个位数字;加减法随机产生。注意,加法时,个位相加不进位(不大于9);减法时,个位相减不借位(不小于0)。
3)“一百以内加减法”:两个数都是100以内数据,求其结果;加减法要求随机。
其它要求:
1)程序要求有菜单,可以进行循环选择,直到用户选择退出。
2)程序中具体功能实现要求使用函数,主函数尽量简洁。
3)程序书写规范,合理设计程序的结构,提高代码的复用性,减少冗余。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>
double one(void);
double two(void);
double three(void);
char mygetchar(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;
double p;
char ch,ch2;
int t;
char s;
srand((unsigned)time(NULL));
do {
printf("请选择训练模式\n");
printf("a.练习模式\n");
printf("b.考试模式\n");
printf("c.挑战模式\n");
ch = mygetchar();
while (ch < 'a' || ch > 'c')
{
printf("输入错误!请重新输入:");
ch = mygetchar();
}
t=rand()%2;
if (t==0) s='+';
if (t==1) s='-';
if(ch='a')
{
for (i = 0; i <10; ++i)
{
a[i] = rand() % 11;
b[i] = rand() % 11;
printf("%d%c%d=",a[i],s,b[i]);
scanf("%d\n",&x);
while (x=!a[i]+b[i])
{
printf("答案错误 重新答题:\n") ;
scanf("%d\n",&x);
}
}
}
}
}
char mygetchar(void)
{
char ch;
ch= getchar();
while (getchar()!= '\n')
continue;
return ch;
}
这代码有错误,但是不知道错在哪,接下来也不怎么会做,望指点