一年级加减法训练系统

本系统主要为一年级同学量身定做一个口算训练系统。训练题目根据难度等级分为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;
}

这代码有错误,但是不知道错在哪,接下来也不怎么会做,望指点