小学生 100 以内整数加减乘除运算训练。程序随机产 生两个 100 以内的正整数 a 和 b 和一个运算符(+、-、、),小学生计算并输入结果。 要求如下:

1.编写程序 c6-3-1.c,实现的功能是:小学生 100 以内整数加减乘除运算训练。程序随机产
生两个 100 以内的正整数 a 和 b 和一个运算符(+、-、、),小学生计算并输入结果。
要求如下:
① 程序应该显示运算式子,并给出小学生运算是否正确的判断信息;
② 可以进行多轮运算,一轮中包括多道题(例如10道题);每出一题,学生回答运算结果,
程序给出对错判别;每轮运算完成后程序给出答题的总结果,并询问是否进行下一轮的
训练,以决定是否继续;
③ 要保证减法运算时不出现负数,除法运算时被除数能整除除数;
④ 操作界面友好。


/*c6-3-1.c*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    int a,b,c,d,e,g,h;
    char f[]={'+','-','*','/'};
    srand((unsigned)time(NULL));
    h=1;
    while(h==1)
    {
        int i=1;
        while(i==1)
        {
            a=rand()%100;
            b=rand()%100;
            e=sizeof(f)/sizeof(f[0]);
            srand((unsigned)time(NULL));
            for(d=0;d<1;d++)
            {
                c=rand()%4;
            }
            if(f[c]=='-'||f[c]=='/')
            {
                if(a-b<0||a%b!=0)
                    i=1;
                else
                    i=2;
            }
            else
                i=2;
        }
        printf("%d\t",a);
        printf("%c\t",f[c]);
        printf("%d\n",b);
        printf("请计算%d%c%d的答案\n",a,f[c],b);
        printf("请输入你的答案:");
        scanf("%d",&g);
        if(f[c]=='+')
        {
            if(g==a+b)
                printf("答案正确\n");
            else
                printf("答案错误\n");
        }
        else
            if(f[c]=='-')
            {
                if(g==a-b)
                    printf("答案正确\n");
                else
                    printf("答案错误\n");
            }
            else
                if(f[c]=='*')
                {
                    if(g==a*b)
                        printf("答案正确\n");
                    else
                        printf("答案错误\n");
                }
                else
                    if(f[c]=='/')
                    {
                        if(g==a/b)
                            printf("答案正确\n");
                        else
                            printf("答案错误\n");
                }
        printf("请问还要继续吗?继续(1)结束(2)");
        scanf("%d",&h);
    }
    return 0;

有点难,而且好像我这个有点问题,就是给出数据的时候有点慢,我也希望大佬解决一下我的问题,但是起码在功能的实现上是没问题的。

/c6-3-1.c/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
int a, b, answer, correct, o, t, n, R = 0, F = 0;
float k;
for (;;)
{
srand(time(NULL));
a = rand() % 100 + 1;
b = rand() % 100 + 1;
o = rand() % 4;
if (o == 0)
{
printf("%d+%d=", a, b);
correct = a + b;
}
if (o == 1)
{
if (a < b) { t = b; b = a; a = t; }
printf("%d-%d=", a, b);
correct = a - b;
}
if (o == 2)
{
printf("%d*%d=", a, b);
correct = a * b;

    }
    if (o == 3)
    {
        if (a < b) { t = b; b = a; a = t; }
        if (a % b == 0)
        {
            printf("%d/%d=", a, b);
            correct = a / b;
        }
        if (a % b != 0) continue;
    }
    scanf("%d", &answer);
    if (answer == correct)
    {
        printf("你答对了!!!\n");
        printf("是否还要继续(1继续,2退出)");
        scanf("%d", &n);
        R++;
        if (n == 1) continue;
        else break;
    }
    if (answer != correct)
    {
        printf("你答错了!!!\n");
        printf("是否还要继续(1继续,2退出)");
        scanf("%d", &n);
        F++;
        if (n == 1) continue;
        else break;
    }
}
printf("你答对了%d题\n", R);
printf("你答错了%d题\n", F);
k = (float)R / (R + F);
printf("正确率为%f",k);
if (k < 0.6) printf("不合格");
else if (k >= 0.6 && k < 0.8) printf("合格");
else if (k >= 0.8) printf("优秀");
return 0;

}