zoukankan      html  css  js  c++  java
  • 四则运算三(用户输入答案,判断正误)

    一 设计思路

        题目:

              用户输入答案,判断正误并输出正误体数。

              将所有运算的结果存入一个数组中,用户再将答案存入另一个数组中,结果正确记录一次,结果错误也记录一次,最后输出记录。

    二  源代码

              

    #include <iostream.h>
    #include <string.h>
    #include <stdlib.h>
    #include<time.h>
    int main()
    {
    
        using namespace std;
        srand(time(NULL));                               //使随机数不重复
        int num[100];
        int result[100];
        int answer[100];
        int m1=0;
        int m2=0;
        int m3=0;
    
        cout<<"输入最大范围:";
    
        cin>>num[7];
    
        cout<<"输出多少道题:";
    
        cin>>num[5];
    
        cout<<"打印几列:";
    
        cin>>num[6];
    
        cout<<"是否有乘除法(0表示有,1表示没有):";
    
        cin>>num[3];
    
        switch(num[3])
    
        {
    
            case 0:
    
            for(int i=0;i<num[5];i++)                                 //循环输出题目个数
    
            {
    
                int num0=rand()%num[7];
                int num1=rand()%num[7];
                string str1[4]={"+","-","*","%"};
                int a=rand()%4;
                if((i+1)%num[6]==0)
                {
    
                    cout<<num0<<str1[a]<<num1<<"="<<endl;               //如果符合要求则换行
    
                }
    
                else
    
                {
    
                    cout<<num0<<str1[a]<<num1<<"="<<"       ";          //否则继续在同一行输出
    
                }
    
                switch(a)
                {
                       case 0:                                        //将加减乘除所得的结果全部存入一个数组中
                       result[m1]=num0+num1;
                       m1++;
                       break;
                       case 1:
                       result[m1]=num0-num1;
                       m1++;
                       break;
                       case 2:
                       result[m1]=num0*num1;
                       m1++;
                       break;
                       case 3:
                       result[m1]=num0/num1;
                       m1++;
                       break;
                }
    
            }
    
    
            break;
    
            case 1:
    
            cout<<"加减有无负数(0表示有,1表示没有):";
    
            cin>>num[4];
    
                switch(num[4])
    
                {
    
                    case 0:
    
                    for(int i=0;i<num[5];i++)
    
                    {
    
                       int c=-rand()%101+25;                            //随机产生负数赋予c
    
                       int d=-rand()%101+25;                            //随机产生负数赋予d
    
                       string str2[2]={"+","-"};                        //只在加减之中选择输出
    
                       int b=rand()%2;
    
                       if(c<0&&d>=0)                                     //if语句判断有无负数
    
                      {
    
    
    
                        if((i+1)%num[6]==0)
    
                         {
    
                            cout<<"("<<c<<")"<<str2[b]<<d<<"="<<endl;
    
                         }
    
                            else
    
                        {
    
                           cout<<"("<<c<<")"<<str2[b]<<d<<"="<<"       ";
    
                        }
                switch(b)
                {
                       case 0:
                       result[m1]=c+d;
                       m1++;
                       break;
                       case 1:
                       result[m1]=c-d;
                       m1++;
                       break;
                       case 2:
                       result[m1]=c*d;
                       m1++;
                       break;
                       case 3:
                       result[m1]=c/d;
                       m1++;
                       break;
                }
    
                     }
    
    
    
                    else if(c>=0&&d<0)
    
                    {
    
    
    
                         if((i+1)%num[6]==0)
    
                         {
    
                            cout<<c<<str2[b]<<"("<<d<<")"<<"="<<endl;
    
                         }
    
                         else
    
                         {
    
                            cout<<c<<str2[b]<<"("<<d<<")"<<"="<<"       ";
    
                         }
                         switch(b)
                {
                       case 0:
                       result[m1]=c+d;
                       m1++;
                       break;
                       case 1:
                       result[m1]=c-d;
                       m1++;
                       break;
                       case 2:
                       result[m1]=c*d;
                       m1++;
                       break;
                       case 3:
                       result[m1]=c/d;
                       m1++;
                       break;
                }
    
    
    
                    }
    
                    else if(c<0&&d<0)
    
                    {
    
    
    
                         if((i+1)%num[6]==0)
    
                         {
    
                            cout<<"("<<c<<")"<<str2[b]<<"("<<d<<")"<<"="<<endl;
    
                         }
    
                         else
    
                         {
    
                            cout<<"("<<c<<")"<<str2[b]<<"("<<d<<")"<<"="<<"       ";
    
                         }
                switch(b)
                {
                       case 0:
                       result[m1]=c+d;
                       m1++;
                       break;
                       case 1:
                       result[m1]=c-d;
                       m1++;
                       break;
                       case 2:
                       result[m1]=c*d;
                       m1++;
                       break;
                       case 3:
                       result[m1]=c/d;
                       m1++;
                       break;
                }
    
    
    
                    }
    
                    else
    
                    {
    
                        if((i+1)%num[6]==0)
    
                     {
    
                        cout<<c<<str2[b]<<d<<"="<<endl;
    
                     }
    
                        else
    
                     {
    
                        cout<<c<<str2[b]<<d<<"="<<"       ";
    
                     }
                switch(b)
                {
                       case 0:
                       result[m1]=c+d;
                       m1++;
                       break;
                       case 1:
                       result[m1]=c-d;
                       m1++;
                       break;
                       case 2:
                       result[m1]=c*d;
                       m1++;
                       break;
                       case 3:
                       result[m1]=c/d;
                       m1++;
                       break;
                }
    
                    }
    
                    }
    
                    break;
    
                    case 1:                                   //无负数则直接输出
    
                         for(int i=0;i<num[5];i++)
    
                         {
    
                         int c=-rand()%101+25;
    
                         int d=-rand()%101+25;
    
                         string str2[2]={"+","-"};
    
                         int b=rand()%2;
    
                         if((i+1)%num[6]==0)
    
                         {
    
                             cout<<num[0]<<str2[b]<<num[1]<<"="<<endl;
    
                         }
    
                         else
    
                         {
    
                            cout<<num[0]<<str2[b]<<num[1]<<"="<<"       ";
    
                         }
                switch(b)
                {
                       case 0:
                       result[m1]=c+d;
                       m1++;
                       break;
                       case 1:
                       result[m1]=c-d;
                       m1++;
                       break;
                       case 2:
                       result[m1]=c*d;
                       m1++;
                       break;
                       case 3:
                       result[m1]=c/d;
                       m1++;
                       break;
                }
    
                         }
            }
    
    }
                cout<<"please input answer:";
                for(int h=0;h<num[5];h++)
                {
                    cin>>answer[h];                             //用户输入到数组里
                }
                for(int h1=0;h1<num[5];h1++)
                {
                    if(answer[h1]==result[h1])                   //比较量数组的结果,输出正确数
                    {
                        m2=m2+1;
                    }
                    else
                    {
                        m3=m3+1;
                    }
                }
                cout<<"正确数目"<<" "<<m2<<" "<<"错误数目"<<" "<<m3;
    
    
    }

    三 实验截图

    四 实验总结

       通过本次实验,我了解到命名一定要慎重,要能够见名知意,不然代码一长很容易搞乱,我的就有些乱了,弄到后面都迷糊了,而且并没有提前定义好,只是到了后面随着用随着定义,这个习惯以后一定改

  • 相关阅读:
    Java学习--设计模式之创建型模式
    Java学习--设计模式简介
    Spring MVC 学习总结(十)——Spring+Spring MVC+MyBatis框架集成(IntelliJ IDEA SSM集成)
    Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)
    Spring MVC 学习总结(八)——Spring MVC概要与环境配置(IDEA+Maven+Tomcat7+JDK8、示例与视频)
    Spring MVC 学习总结(六)——Spring+Spring MVC+MyBatis框架集成
    Spring MVC 学习总结(五)——校验与文件上传
    Spring MVC 学习总结(四)——视图与综合示例
    Spring MVC 学习总结(三)——请求处理方法Action详解
    Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解
  • 原文地址:https://www.cnblogs.com/shishi1993-/p/4357046.html
Copyright © 2011-2022 走看看