结对开发3//实现四则运算的在线答题

本文介绍了一个能够自动生成四则运算题目并在线答题的系统,支持整数和真分数运算,具备判断对错及错题保存功能。系统通过随机生成题目和答案,用户输入解答后即时反馈正确与否,并将错题记录到TXT文件,便于复习。程序实现了题目类型选择、数量设定、结果统计与正确率计算。

题目:实现四则运算的自动生成

要求:1.实现在线答题

     2.答题结束之后可以判断对错

     3.将错题的结果保存起来

同组人:曹建涛

 

源程序:

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
    int i = 0;
    int e, f, g, h, x1, x2, y, z;//g为计算值
    char fh;
    int right = 0, wrong = 0;
    srand((unsigned)time(NULL)); //本地时间为种子
    printf("请选择你需要的题目类型\n\n整数运算请输入1  真分数运算请输入2\n");
    printf("\n*****整数除法运算结果保留整数*****\n");
    printf("\n*****真分数运算结果不约分*****\n");
    scanf_s("%d", &x1);
    printf("请输入出题数量\n");
    scanf_s("%d", &x2);


    FILE* fp;

    fp = fopen("错题本.txt", "w+");

    if (fp == NULL)
    {
        printf("fail to open the file\n");
        exit(-1);
    }


    switch (x1)
    {
    case 1:
    {
        while (i < x2)
        {
            int a = rand() % 100; //产生随机数
            int b = rand() % 100;
            int j;
            j = rand() % 4; //产生随机符号0到3分别代表四则运算
            printf("%d", a);
            switch (j)
            {
            case 0:
                printf("+");
                fh = '+';
                g = a + b;
                break;
            case 1:
                printf("-");
                fh = '-';
                g = a - b;
                break;
            case 2:
                printf("*");
                fh = '*';
                g = a*b;
                break;
            case 3:
                printf("/");
                fh = '/';
                g = a / b;
                break;
            }
            printf("%d", b);
            printf(" = ");
            scanf_s("%d", &z);
            if (g == z)
            {
                printf("回答正确\n\n");
                right++;
            }
            else if (g != z)
            {
                printf("回答错误\n\n");
                fprintf(fp, "%d%c%d=%d\n", a, fh, b, z);
                wrong++;
            }
            i++;
        }
    }

    case 2:
    {
        while (i < x2)
        {
            int a = rand() % 100; //产生随机数
            int b = rand() % 100;
            int c = rand() % 100;
            int d = rand() % 100;
            int j = rand() % 4;   //产生随机符号0到3分别代表四则运算
            if (b != 0 && d != 0)
            {
                if (a > b)
                {
                    e = a, a = b, b = e;
                }
                if (c > d)
                {
                    f = c, c = d, d = f;
                }
                printf("%d/%d", a, b);
                switch (j)
                {
                case 0:
                    printf("+");
                    fh = '+';
                    g = a*d + b*c;
                    h = b*d;
                    break;
                case 1:
                    printf("-");
                    fh = '-';
                    g = a*d - b*c;
                    h = b*d;
                    break;
                case 2:
                    printf("*");
                    fh = '*';
                    g = a*c;
                    h = b*d;
                    break;
                case 3:
                    printf("/");
                    fh = '/';
                    g = a*d;
                    h = b*c;
                    break;
                }
                printf("%d/%d", c, d);
                printf("=");
                scanf_s("%d/%d", &y, &z);
                if ((g == y) &(h == z))
                {
                    printf("回答正确\n\n");
                    right++;
                }

                else if (g != y || h != z)
                {
                    printf("回答错误\n\n");
                    fprintf(fp, "%d/%d%c%d/%d=%d/%d\n", a, b, fh, c, d, y, z);
                    wrong++;
                }
                i++;
            }
        }
    }
    }
    printf("共答对%d题,答错%d题\n", right, wrong);
    int zdl;
    zdl = right*100 / (right + wrong);
    printf("正答率为%d%%", zdl);
    printf("\n\n*****回答完毕*****");
    getchar();
    getchar();
    fclose(fp);
    return 0;
}

 

运行结果:

 

 

总结:

  本次任务中,是在原有作业的基础上进行改进。首先是在线答题,然后是总结对错提述,完成真分数运算,最后是保存错题到txt文件。首先理清思路,先选择需要进行的四则运算题型,真分数还是整数运算。再选择需要的做题数量。再者进行四则运算,同时计算正确与错题数量。最后输出正确与错题数量,并计算正确率。这是个思路较为清晰,也容易思考的程序。但需要一定的耐心完成一个个部分,每一部分看似行云流水但也最容易出现思虑欠缺的问题。在将程序按部分写完,反复修改和查缺补漏后,终于将这个程序呈现出来,也许走了许多弯路或者是还有许多更优的方法,但是会继续学习,不懈努力,将每一个程序编译的愈发完美。

转载于:https://www.cnblogs.com/LINNNNNNN/p/9930373.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值