• 四则运算3


    1.实验题目。

    让程序能接受用户输入答案,并判定对错。最后给出总共对/错 的数量。
     
    2.设计思想。

    将程序随机产生的算式,将它们计算的答案存到数组中,并将用户输入的答案也放到数组中,比较两个数组,判断用户答对多少道题。

    3.实验代码。

    #include<iostream>
    #include<stdlib.h>
    #include<string.h>
    #include<stdio.h>
    using namespace std;
    #include <ctime>
    #include <cstdlib>
    #define  MAX 100000
    void panduanchongfu()
    {
        int d,e,k,m,n, p;
        int o=0,b=0;
        cout<<"请输入要显示的四则运算的个数"<<endl;
        cin>>k;
        cout<<endl;
        int shuzi[200][4];
        char yunsuanfu[4]={'+','-','*','/'};
        char fuhao[16][2]={{'+','+'},{'+','-'},{'+','*'},{'+','/'},{'-','+'},{'-','-'},{'-','*'},{'-','/'},{'*','+'},{'*','-'},{'*','*'},{'*','/'},{'/','+'},{'/','-'},{'/','*'},{'/','/'}};
        int g[100];    
        srand(time(0));//根据系统时间设置随机数种子
        int r,t,temp;
        cout<<"-------------------"<<endl;
        cout<<"请输入产生式数字的范围。(请输入两个数字:如 10 50:代表产生式的数字范围为(10-50)"<<endl;
        cout<<"-------------------"<<endl;
        cin>>r>>t;
        cout<<endl;
        if(r>t)
        {
            temp=r;
            r=t;
            t=temp;
        }
        int a;
        cout<<"-------------------"<<endl;
        cout<<"0.无乘除法。"<<endl;
        cout<<"1.有乘除法。"<<endl;
        cout<<"请输入选项(0或1)"<<endl;
        cout<<"-------------------"<<endl;
        cin>>a;
        cout<<endl;
        if(a!=0)
        {
            cout<<"-------------------"<<endl;
            cout<<"0.无余数。"<<endl;
            cout<<"1.有余数。"<<endl;
            cout<<"请输入选项(0或1)"<<endl;
            cout<<"-------------------"<<endl;
            cin>>p;
            cout<<endl;
        }
        cout<<"-------------------"<<endl;
        cout<<"0.无分数。"<<endl;
        cout<<"1.有分数。"<<endl;
        cout<<"请输入选项(0或1)"<<endl;
        cout<<"-------------------"<<endl;
        int s;
        cin>>s;
        cout<<endl;
        for(int i=0;i<k;i++)
        {
            shuzi[i][0]=rand()%(t-r)+r;//取得区间[0,100)的整数
            shuzi[i][1]=rand()%(t-r)+r;
            shuzi[i][2]=rand()%(t-r)+r;
            shuzi[i][3]=rand()%(t-r-1)+r+1;
            d=rand()%100;
            e=rand()%100;
            if(a==1||a==0) 
            {
                switch(a)
                {
                case 0:
                    n=e%2;//判断运算符号的随机数
                    m=d%2;
                    break;
                case 1:
                    n=e%4;//判断运算符号的随机数
                    m=d%4;
                    break;
                }
            }
            else
            {
                cout<<"输入选项有误,请正确输入。"<<endl;
                cout<<"-------------------"<<endl;
                cout<<"0.无乘除法。"<<endl;
                cout<<"1.有乘除法。"<<endl;
                cout<<"请输入选项(0或1)"<<endl;
                cout<<"-------------------"<<endl;
                cin>>a;
                i=i-1;
                continue;
            }
            if((m==3&&shuzi[i][0]%shuzi[i][1]!=0&&p==0)||(n==3&&shuzi[i][1]%shuzi[i][2]!=0&&p==0))
            {
                i=i-1;
            }
            else
            {
                if((shuzi[i][1]==0&&m==3&&a==0)||(shuzi[i][2]==0&&n==3&&a==0))
                {
                    i=i-1;
                }
                else
                {
                    for(int l=0;l<16;l++)
                    {
                        if(yunsuanfu[m]==fuhao[l][0]&&yunsuanfu[n]==fuhao[l][1])
                        {
                            
                            g[o]=l;
                            o++;
                        }
                    }
                    for(int j=i-1;j>=0;j--)
                    {
                        if(shuzi[i][0]==shuzi[j][0]&&shuzi[i][1]==shuzi[j][1]&&shuzi[i][2]==shuzi[j][2]&&g[i]==g[j])
                        {
                            i=i-1;
                            break;
                        }
                    }
                }
            }
            
        }
        if(s==0)
        {
            for(i=0;i<k;i++)
            {
                if(g[i]==12||g[i]==13||g[i]==14)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<"÷"<<shuzi[i][1]<<fuhao[g[i]][1]<<shuzi[i][2]<<"="<<endl;
                }
                else if(g[i]==3||g[i]==7||g[i]==11)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
                else if(g[i]==15)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<"÷"<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
                else
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<fuhao[g[i]][1]<<shuzi[i][2]<<"="<<endl;
            }
        }
        else
        {
            for(i=0;i<k;i++)
            {
                int q0,q1,q2;
                q0=rand()%3;
                q1=rand()%3;
                q2=rand()%3;
                
                if(q0==1)
                {
                    cout<<""<<i+1<<"题:"<<"("<<shuzi[i][0]<<"/"<<shuzi[i][3]<<")"<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
                else if(q0==0)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
                else if(q1==1)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<"("<<shuzi[i][1]<<"/"<<shuzi[i][3]<<")"<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
                else if(q1==0)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
                else if(q2==1)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<"("<<shuzi[i][2]<<"/"<<shuzi[i][3]<<")"<<"="<<endl;
                }
                else
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
            }
        }
        
        int h[MAX][2];
        for(i=0;i<k;i++)
        {
            if(g[i]==0)
            {
                h[i][0]=shuzi[i][0]+shuzi[i][1]+shuzi[i][2];
            }
            
            if(g[i]==1)
            {
                h[i][0]=shuzi[i][0]+shuzi[i][1]-shuzi[i][2];
            }
            
            if(g[i]==2)
            {
                h[i][0]=shuzi[i][0]+shuzi[i][1]*shuzi[i][2];
            }
            
            if(g[i]==3)
            {
                h[i][0]=shuzi[i][0]+shuzi[i][1]/shuzi[i][2];
                h[i][1]=shuzi[i][1]%shuzi[i][2];
            }
            if(g[i]==4)
            {
                h[i][0]=shuzi[i][0]-shuzi[i][1]+shuzi[i][2];
            }
            
            if(g[i]==5)
            {
                h[i][0]=shuzi[i][0]-shuzi[i][1]-shuzi[i][2];
            }
            
            if(g[i]==6)
            {
                h[i][0]=shuzi[i][0]-shuzi[i][1]*shuzi[i][2];
            }
            
            if(g[i]==7)
            {
                h[i][0]=shuzi[i][0]-shuzi[i][1]/shuzi[i][2];
                h[i][1]=shuzi[i][1]%shuzi[i][2];
            }
            
            if(g[i]==8)
            {
                h[i][0]=shuzi[i][0]*shuzi[i][1]+shuzi[i][2];
            }
            
            if(g[i]==9)
            {
                h[i][0]=shuzi[i][0]*shuzi[i][1]-shuzi[i][2];
            }
            
            if(g[i]==10)
            {
                h[i][0]=shuzi[i][0]*shuzi[i][1]*shuzi[i][2];
            }
            
            if(g[i]==11)
            {
                h[i][0]=shuzi[i][0]*shuzi[i][1]/shuzi[i][2];
                h[i][1]=(shuzi[i][0]*shuzi[i][1])%shuzi[i][2];
            }
            
            if(g[i]==12)
            {
                h[i][0]=shuzi[i][0]/shuzi[i][1]+shuzi[i][2];
            }
            
            if(g[i]==13)
            {
                h[i][0]=shuzi[i][0]/shuzi[i][1]-shuzi[i][2];
            }
            
            if(g[i]==14)
            {
                h[i][0]=shuzi[i][0]/shuzi[i][1]*shuzi[i][2];
            }
            
            if(g[i]==15)
            {
                h[i][0]=shuzi[i][0]/(shuzi[i][1]*shuzi[i][2]);
                if(shuzi[i][0]%shuzi[i][1]!=0)
                    h[i][1]=shuzi[i][0]%(shuzi[i][1]*shuzi[i][2]);
                else
                    h[i][1]=(shuzi[i][0]&(shuzi[i][1]*shuzi[i][2]))/shuzi[i][1];
            }
            
        }
        int w[100][2];
        cout<<"请输入以上题的答案(当有除法时,输入两个数第一个数为商,第二个数为余数)"<<endl;
        for(i=0;i<k;i++)
        {
            if(p==0)
            {
                cout<<"请输入第"<<i+1<<"道题的答案:"<<endl;
                cin>>w[i][0];
            }
            else
            {
                if(g[i]==3||g[i]==7||g[i]>=11)
                {
                    cout<<"请输入第"<<i+1<<"道题的答案(先输入商,在输入余数):"<<endl;
                    cin>>w[i][0]>>w[i][1];
                }
                else
                {
                    cout<<"请输入第"<<i+1<<"道题的答案:"<<endl;
                    cin>>w[i][0];
                }
            }
        }
        int f=0;
        for(i=0;i<k;i++)
        {
            if(w[i][0]==h[i][0]&&w[i][1]==h[i][1])
                f++;
        }
        if(f==k)
            cout<<"全答对了。"<<endl;
        if(f==0)
            cout<<"全答错了。"<<endl;
        else if(f!=k)
        {
            cout<<"对了"<<f<<"道题"<<endl;
            cout<<"错了"<<k-f<<"道题"<<endl;
        }
    }
    
    
    
    
    
    
    int main()
    {
        panduanchongfu();
        return 0;
    }

    4.运行结果。

    5.总结。

    在编写中,应该使用户使用更加方便,应该加入一些提示,要考虑一些尽可能发生的情况。

    6.psp

    一、项目计划总结:

    周活动总结表

                        姓名: 李明                                日期:2015/3/22

    日期       任务

    听课

    编写程序

    阅读课本

    准备考试

    日总计

    周日

    周一

    周二

     100

     20

     120

    周三

     15

     15

    周四

     20

     20

    周五

     100

     60

     20

     180

    周六

     60

     20

     80

    周总结

     200

     60

     95

     355

    阶段时间和效率                                            周数(上一次周活动表的周数+1):

    不包括上一周在内的累计时间                                                                         

    总计

    平均

    最大

    最小

    以前各周的累计时间                                                                                    

    总计

    平均

    最大

    最小

    二、时间记录表:

    学生        李明                                                日期      2015/3/22                

    教师        王建民                                             课程           PSP       

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

     3.20

     1900

      2000

     60

     编程

     3.21

     1400

     1500

     60

      编程

    三、缺陷记录日志:

    学生      李明             

    日期        2015/2/22          

    教员       王建民   

    程序号    四则运算            

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

     3.20

     定义整型时少了分号。

     3.21

     少了大括号。

  • 相关阅读:
    Nginx出现413 Request Entity Too Large错误解决方法
    office 所有后缀对应的 content-type
    swagger2 注解说明
    DOS查看端口占用及杀掉进程命令
    009:Django的项目规范
    008:第一个Django项目剖析(2)
    007:第一个Django项目剖析(1)
    006:Django介绍
    005:课程准备工作
    004:URL组成部分详解
  • 原文地址:https://www.cnblogs.com/nulidexuezha/p/4357407.html
Copyright © 2020-2023  润新知