栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言---小学生计算机辅助教学系统】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言---小学生计算机辅助教学系统】

任务1. 程序首先随机产生两个1--10之间的正整数,在屏幕上打印出问题。

任务2. 在任务1的基础上,当学生回答错误时,最多给三次重做的机会,三次仍未做对,则显示"Wrong! You have tried three times! Test over!",程序结束。

任务3. 在任务1的基础上,连续做10道乘法运算题,不给机会重做,若学生回答正确,则显示"Right!" ,否则显示"Wrong!"。10道题全部做完后,按每题10分统计并输出总分,同时为了记录学生能力提高的过程,再输出学生的回答正确率(即答对题数除以总题数的百分比)。

任务4. 在任务3的基础上,通过计算机随机产生10道四则运算题,两个操作数为1--10之间的随机数,运算类型为随机产生的加减乘除中的任意一个,不给机会重做,如果学生回答正确,则显示“Right!”,否则显示“Wrong!”。10道题全部做完后,按每道题10分计算总得分,然后打印出总分和学生的回答正确率。

任务5. 在任务4基础上,为使学生通过反复练习熟练掌握所学内容,在学生完成10道运算题后,若回答正确率低于75%,则重新做10道题,直到回答正确率高于75%时才退出程序。

#include
#include
#include
#include  

int one();
int two(); 
int three();
int four();
int five();
int six();
int rightCount = 0;


int Pending(int s, int flag)
{
    if (s == flag)
    {
        printf("Rightn");
        rightCount++;
    }
    else
        printf("Wrongn");
    return 0;
}

int Division(char b, double c)
{
    int temp;
    temp = 0;
    if (b == '/' && c == 0)
    {
        printf("被除数为零");
        temp = 1;
    }
    return temp;
}

int Srand1()//产生1~9

{
    srand((unsigned int)time(NULL));
    Sleep(10);
    int i;
    i= rand() % 9 + 1;
    return i;
}


int Srand2()//产生1~9
{
    Sleep(10);
    int i;
    i = rand() % 9 + 1;
    return i;
}
int StatisticScore(int c)

{
    int x;
    x = c * 10;
    return x;
}
double StatisticRate(double c)

{
    double y;
    y = c/10;
    return y;
}
int one()

{
    int a, c, d,m;
    do
    {
        a = Srand1();
        c = Srand2();
        d = a * c;
        printf("%d*%d=", a, c);
        scanf_s("%d", &m);
        Pending(d, m);
    } while (m != d);
        return 0;
}

int two()
{
    srand((unsigned)time(NULL));
    int flag,count,temp;
    flag = 0;
    count = 0;
    double a, c, s, e;
    int b;
    char p;
    p = '/';

    do
    {
        a = Srand1();
        b = rand() % 4;
        c = Srand2();
        switch (b)
        {
        case 0:
            temp = Division(p, c);
            if (temp == 1)
                break;
            printf("%.2f/%.2f=", a, c);
            s = a / c;
            break;
        case 1:
            printf("%.2f*%.2f=", a, c);
            s = a * c;
            break;
        case 2:
            s = a + c;
            printf("%.2f+%.2f=", a, c);
            break;
        default:
            printf("%.2f-%.2f=", a, c);
            s = a - c;
        }
        scanf_s("%lf", &e);
        if (s == e){
            flag++;
            printf("Rightn");
        }
        else{
            count++;
            if (count != 4)
                printf("Wrong ! Please try again.n");
            else{
                printf("Wrong! You have tried three times! Test over!n");
                break;
            }
        }
    } while (flag != 1);
    flag = count = 0;
    return 0;
}

int three()

{
    int a, c, d, m, flag;
    flag = 0;
    rightCount = 0;
    do{
        flag++;
        a = Srand1();
        c = Srand2();
        d = a * c;
        printf("%d*%d=", a, c);
        scanf_s("%d", &m);
        Pending(d, m);
    } while (flag != 10);
    int score= StatisticScore(rightCount);
    double rate = StatisticRate(rightCount);
    printf("得分: %d , 正确率:%.2fn", score, rate);
    return 0;
}
int four()

{
    int b, flag, parameter , s, x, temp;
    double y;
    double a, c;
    flag = 0;
    int score;
    rightCount = 0;
    double m, rate;
    char p;
    do{
        flag++;
        a = Srand1();
        a = a * 1.0;
        c = Srand2();
        c = c * 1.0;
        b = rand() % 4;
        switch (b){
        case 0:
            p = '/';
            temp = Division(p, c);
            if (temp == 1)
                break;
            printf("%.2f/%.2f=", a, c);
            s = a / c;
            break;
        case 1:
            printf("%.2f*%.2f=", a, c);
            s = a * c;
            break;
        case 2:
            s = a + c;
            printf("%.2f+%.2f=", a, c);
            break;
        default:
            printf("%.2f-%.2f=", a, c);
            s = a - c;
        }
        scanf_s("%lf", &m);
        Pending(s, m);
    } while (flag != 10);
    score = StatisticScore(rightCount);
    rate = StatisticRate(rightCount);
    printf("得分为: %d ,正确率为: %.2f ", score, rate);
    printf("n");
    return 0;
}
int five()

{
    int b, flag, x, temp;
    double a, c;
    rightCount = 0;
    double rate = 0;
    double y, s;
    do {
        flag = 0;
        double m;
        char p;
        do {
            a = Srand1();
            a = (double)a;
            c = Srand2();
            c = (double)c;
            b = rand() % 4;
            switch (b) {
            case 0:
                p = '/';
                temp = Division(p, c);
                if (temp == 1)
                {
                    continue;
                }
                printf("%.2f/%.2f=", a, c);
                s = a / c;
                break;
            case 1:
                printf("%.2f*%.2f=", a, c);
                s = a * c;
                break;
            case 2:
                s = a + c;
                printf("%.2f+%.2f=", a, c);
                break;
            default:
                printf("%.2f-%.2f=", a, c);
                s = a - c;
            }
            scanf_s("%lf", &m);
            flag++;
            Pending(s, m);
        } while (flag % 10 != 0);
        int score = StatisticScore(rightCount);
        //    score = 1.0 * rightCount;
        rate = StatisticRate(rightCount);
        printf("%d %.2f", score, rate);
        printf("n");
    } while (rate <= 0.75);
    return 0;
}
int main()
{
    int a,flag;
    flag = 0;
    printf("******************************************************************************n");
    printf(" * 1. 任务 1:随机产生 1 - 10 之间正整数,出乘法问题,直到学生答对为止。n");
    printf(" * 2. 任务 2:在任务 1 基础上,当学生答错时,最多给三次机会。 n");
    printf(" * 3. 任务 3:在任务 1 基础上,连做 10 道乘法题,不给机会重做,统计总分、正确率。n");
    printf(" * 4. 任务 4:在任务 3 基础上,随机产生 10 道四则运算题,不给机会重做,统计总分、正确率。 n");
    printf(" * 5. 任务 5:在任务 4 基础上,若回答正确率低于 75 % ,则再做 10 道题,直到正确率高于 75 % 为止。n");
    printf(" * 6. 退出 n");
    printf("***************************************************************************** n");
    while (scanf_s("%d", &a) != EOF){
        if (a == 6) {
            printf("程序已结束");
            break;
        }
         
        switch (a){
        case 1:
            one();
            break;
        case 2:
            two();
            break;
        case 3:
            three();
            break;
        case 4:
            four();
            break;
        case 5:
            five();
            break;
        default:
            printf("命令错误,程序已结束");
            break;
        }
        if (flag == 1)
            break;
        printf("*********************************************************************************n");
        printf(" * 1. 任务 1:随机产生 1 - 10 之间正整数,出乘法问题,直到学生答对为止。n");
        printf(" * 2. 任务 2:在任务 1 基础上,当学生答错时,最多给三次机会。 n");
        printf(" * 3. 任务 3:在任务 1 基础上,连做 10 道乘法题,不给机会重做,统计总分、正确率。n");
        printf(" * 4. 任务 4:在任务 3 基础上,随机产生 10 道四则运算题,不给机会重做,统计总分、正确率。 *n");
        printf(" * 5. 任务 5:在任务 4 基础上,若回答正确率低于 75 % ,则再做 10 道题,直到正确率高于 75 % 为止。n");
        printf(" * 6. 退出 *n");
        printf("********************************************************************************** n");
    }
    return 0;
}
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/718384.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号