四则运算三(用户输入答案,判断正误)

一 设计思路

    题目:

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

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

二  源代码

          

#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;


}

三 实验截图

四 实验总结

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

原文地址:https://www.cnblogs.com/shishi1993-/p/4357046.html