zoukankan      html  css  js  c++  java
  • 个人作业1——四则运算题目生成程序

    a.需求分析
    ①除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    ②运算符为 +, −, ×, ÷
    ③并且要求能处理用户的输入,并判断对错,打分统计正确率。
    ④要求能处理用户输入的真分数, 如 1/2, 5/12 等
    ⑤使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
    Myapp.exe -n 10

    b.功能设计
    (1)基本功能
    需求分析的基础需求的全部
    (2)扩展功能
    对于错误答案的四则算式,输出正确答案
    (3)高级功能
    从txt导入四则运算

    c.设计实现
    能够实现生成整数和分数的式子并实现计算;
    能够控制生成式子的个数;
    能够实现判断对错并计算正确率;

    d.代码说明

    1、化简分数,得出最简的答案

    int k=0;
    int gcd(int x, int y)
    {
        int z;
        if ((z = x % y) != 0)
        {
            gcd(y, z);
        }
        else
            return y;
    }

    2、产生随机数

    void fraction()
    {
        int i,j,x,y,z,temp,a,b,c,z1,z2;
            srand(unsigned(time(NULL)));
            char r1[10], r2[10];
        memset(r1, 0, sizeof(r1));
        memset(r2, 0, sizeof(r2));
             i=rand()%10;//rand()返回一个随机数
             j=rand()%10;
            while(j==0||i>=j)
            {
                i=rand()%10;
                j=rand()%10;
            }
            x=rand()%10;
            y=rand()%10;
            while(y==0||x>=y)
            {
                x=rand()%10;
                y=rand()%10;
            }
             z=rand()%100/25;
            z1=0;z2=0;
            switch(z)

    3、除法运算

    case 3:
            cout<<"("<<x<<"/"<<y<<")"<<"/"<<"("<<i<<"/"<<j<<")"<<"=";
            a = x*j;
            b = y*i;
            c = gcd(a, b);
            a = a / c;
            b = b / c;
            if (b != 1) {
                sprintf(r1, "%d/%d", a, b);
                cin >> r2;
                if (strcmp(r1, r2) == 0)
            {
                cout << "    " << "True" << endl;
                k = k + 1;
            }
            else cout << "    " << "False" << "    "  <<"正确答案是:"<<r1<<endl;
            }
            else {
                cin >> z1;
                if (z1 == a)
                {
                    cout << "    " << "True" << endl;
                    k = k + 1;
                }
                else cout << "    " << "False" << "    "  << "正确答案是:"<<a<<endl;
            }
            break;
        default:
            cout << "wrong" << endl;
            break;
        }

    4、主函数

     int main(int argc,char *argv[])
    {   
        int n,i;
        float m;
        n=atoi(argv[2]);
        cout<<"生成运算题数目:"<<n<<endl;  
        for(i=0;i<n;i++)
        {
            int c=rand()%2;
            switch(c)
            {
            case 0: integer();break;
            case 1: fraction();break;
    
            }
        }
      m=(float)k/(float)n;
        cout<<"您答对的题数是:"<<k<<"    "<<"正确率是:" <<m<<endl; 
        return 0;
    }

    e.代码运行

    PSP:

     

     

    码市链接:https://coding.net/u/Dt-ghost/p/job1/git/tree/master/

    总结:个人在编程方面能力很薄弱,遇到这样的题目只能用基础的方法解决。这次作业我上网查了很多资料之后才开始写的,写的过程还请教了同学才完成。以后要多练习才可以。

  • 相关阅读:
    地狱少女....
    火影忍者&nbsp;是时候结束了
    1942
    待查
    什么是傻瓜
    公车艳遇
    初一
    继承
    第四周学习笔记
    查找里程————mooc《面向对象程序设计——Java语言》-(浙大翁凯)第三周编程题
  • 原文地址:https://www.cnblogs.com/Dt-ghost/p/6516345.html
Copyright © 2011-2022 走看看