C语言整数乘除法练习器

1.任务描述编写一个练习器,提供给小学生使用,可进行100以内任意两个整数的乘除法练习。
2.功能要求
1)随机生成乘法或除法运算符。
2)随机生成100以内的两个正整数。
3)乘法的计算机结果不得大于100,否则重新生成题目。
4)除法的结果必须为整数,否则重新生成题目。
5)每次练习开始前,由用户指定要做的题目数(<=100题)。根据题目,随机产生满足上述要求的试题。要求所有试题不重复。
6)对用户输入的答案判断正确与否,并计分。答对一题得10分。7)练习结束后,统计并输出回答正确和错误的题目数、最后得分,并给出相应的评语


#include<stdio.h> 
#include<stdlib.h>
#include<time.h>
#include<Windows.h>

void goto_xy(int x, int y);
void show1();
int getchoice();
int dowork(int n);
int num();
void print(int s,int n);

void goto_xy(int x, int y)          //定位光标位置到指定坐标
{   
    HANDLE hOut;
    hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos = { x,y };
    SetConsoleCursorPosition(hOut, pos);
}

void show1()                                    //开始界面 
{ 
    printf("****************************************\n");
    printf("|                                      |\n");
    printf("|                                      |\n");
    printf("|                                      |\n");
    printf("|                                      |\n");
    printf("|       欢迎使用整数乘除法练习器       |\n");
    printf("|                                      |\n");
    printf("|             1. 开始                  |\n");
    printf("|             2. 退出                  |\n");
    printf("|                                      |\n");
    printf("|       请选择:                       |\n");
    printf("|                                      |\n");
    printf("|                                      |\n");
    printf("|                                      |\n");
    printf("****************************************\n");
}

int getchoice()
{
    int a;
    goto_xy(16,10);
    scanf("%d",&a);
    return a;
}

int num()                                    //题量获取 
{
    int n; 
    printf("请输入要做的题目数:\n");
    goto_xy(19,0);
    scanf("%d",&n);
    return n;
} 

int dowork(int n)                                       //练习模块 
{
    int a,b,c,d,e,i,s=0,x=0,y=0;
    srand((int)time(NULL)); 
    for(i=0;i<n;i++)
    {
        e=rand()%2;
        a=rand()%100;
        b=rand()%100;
        if(e==0)                                       //乘法 
        {
            if(a*b<100)
            {
                printf("%d*%d=\n",a,b);
                scanf("%d",&d);
                if(a*b==d)
                {
                    printf("正确!\n");
                    s+=10;
                    x++;
                }
                else
                {
                    printf("错误!\n");
                    y++;
                } 
            }
            else
            {
                n++;
                continue;
            }
        }
        if(e==1)                                   //除法 
        {
            if(b!=0&&a%b==0)                                   //b不能为零,无意义 
            {
                printf("%d/%d=\n",a,b);
                scanf("%d",&c);
                if(a/b==c)
                {
                    printf("正确!\n");
                    s+=10;
                    x++;
                }
                else
                {
                    printf("错误!\n");
                    y++;
                } 
            }
            else
            {
                n++;
                continue;
            } 
        }
    }
    printf("您一共做了%d道题,其中正确%d道,错误%d道\n",x+y,x,y);
    return s;
}

void print(int s,int n)                                          //根据百分比输出结果及评语 
{
    
    printf("您的得分是:%d\n",s);
    if(s/10/n<0.6)
    printf("成绩不及格.\n请努力!\n");
    if(s/10/n>=0.6&&s/10/n<0.8)
    printf("成绩及格.\n请加油!");
    if(s/10/n>=0.8)
    printf("成绩优秀.\n再接再厉!\n");
}

int main()
{
    int a,n1,n2,s;
    system("mode con cols=40 lines=17");                     //控制输出界面大小 
    system("color E4");                                       //字体颜色与背景 
L:    show1();
    a=getchoice();
    if(a==1)
    {
        system("cls");                                         //清屏代码 
        n1=n2=num();
        printf("Let's go!!!\n");
    }
    else if(a==2)
    {
        system("cls");
        printf("谢谢使用!\n");
        return 0; 
    }
      s=dowork(n1);
    print(s,n2);
    Sleep(4000);                                           //延迟4秒 
    goto  L;                                                //跳转到 L 标签 
}