首页 > 技术文章 > 用C++编写四则运算

smaugmao 2020-10-09 20:28 原文

一.基本功能

    随机产生三个运算数,两个运算符的简单四则混合运算。做一道题目产生一道,共300题。

 

二.程序代码

#include <iostream>
#include <stdlib.h>
#include <time.h>

using namespace std;

int main()
{
    int iOperator1,iOperator2,iOperator3,op1,op2;
    int iCalculate,iResult;
    double dCalculate,dResult,dTemp;
    int iSum=300;//出300道四则运算题目


    cout<<"生成300道四则运算题"<<endl;
    while(iSum--)
    {
        //设置种子
        srand(time(NULL));
        //随机值赋给参数iOperator1,iOperator2,iOperator3
        iOperator1=rand()%100;
        iOperator2=rand()%100;
        iOperator3=rand()%100;
        //随机产生运算符
        op1=rand()%4;
        op2=rand()%4;
        //判断第一个运算符
        switch(op1)
        {
        case 0:
            //判断第二个运算符
            switch(op2)
            {
            case 0:
                iResult=iOperator1+iOperator2+iOperator3;
                //沥去结果大于100的题目
                if(iResult>100)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"+"<<iOperator2<<"+"<<iOperator3<<"=";
                    cin>>iCalculate;
                    if(iCalculate==iResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            case 1:
                iResult=iOperator1+iOperator2-iOperator3;
                if(iResult>100)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"+"<<iOperator2<<"-"<<iOperator3<<"=";
                    cin>>iCalculate;
                    if(iCalculate==iResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            case 2:
                iResult=iOperator1+iOperator2*iOperator3;
                if(iResult>100)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"+"<<iOperator2<<"*"<<iOperator3<<"=";
                    cin>>iCalculate;
                    if(iCalculate==iResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            case 3:
                dTemp=iOperator1+(double)iOperator2/(double)iOperator3;
                //结果保留2位小数
                dResult=(int)(dTemp*100)/100.0;
                //沥去结果大于100或者分母等于0的题目
                if(dResult>100.0||iOperator3==0)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"+"<<iOperator2<<"/"<<iOperator3<<"=";
                    cin>>dCalculate;
                    if(dCalculate==dResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            }
        break;
        case 1:
            switch(op2)
            {
            case 0:
                iResult=iOperator1-iOperator2+iOperator3;
                if(iResult>100)
                       iSum++;
                else
                {
                    cout<<iOperator1<<"-"<<iOperator2<<"+"<<iOperator3<<"=";
                    cin>>iCalculate;
                    if(iCalculate==iResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            case 1:
                iResult=iOperator1-iOperator2-iOperator3;
                if(iResult>100)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"-"<<iOperator2<<"-"<<iOperator3<<"=";
                    cin>>iCalculate;
                    if(iCalculate==iResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            case 2:
                iResult=iOperator1-iOperator2*iOperator3;
                if(iResult>100)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"-"<<iOperator2<<"*"<<iOperator3<<"=";
                    cin>>iCalculate;
                    if(iCalculate==iResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            case 3:
                dTemp=iOperator1-(double)iOperator2/(double)iOperator3;
                dResult=(int)(dTemp*100)/100.0;
                if(dResult>100.0||iOperator3==0)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"-"<<iOperator2<<"/"<<iOperator3<<"=";
                    cin>>dCalculate;
                    if(dCalculate==dResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            }
            break;
        case 2:
            switch(op2)
            {
            case 0:
                iResult=iOperator1*iOperator2+iOperator3;
                if(iResult>100)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"*"<<iOperator2<<"+"<<iOperator3<<"=";
                    cin>>iCalculate;
                    if(iCalculate==iResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            case 1:
                iResult=iOperator1*iOperator2-iOperator3;
                if(iResult>100)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"*"<<iOperator2<<"-"<<iOperator3<<"=";
                    cin>>iCalculate;
                    if(iCalculate==iResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            case 2:
                iResult=iOperator1*iOperator2*iOperator3;
                if(iResult>100)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"*"<<iOperator2<<"*"<<iOperator3<<"=";
                    cin>>iCalculate;
                    if(iCalculate==iResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            case 3:
                dTemp=iOperator1*(double)iOperator2/(double)iOperator3;
                dResult=(int)(dTemp*100)/100.0;
                if(dResult>100.0||iOperator3==0)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"*"<<iOperator2<<"+"<<iOperator3<<"=";
                    cin>>dCalculate;
                    if(dCalculate==dResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            }
            break;
        case 3:
            switch(op2)
            {
            case 0:
                dTemp=(double)iOperator1/(double)iOperator2+iOperator3;
                dResult=(int)(dTemp*100)/100.0;
                if(dResult>100.0||iOperator2==0)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"/"<<iOperator2<<"+"<<iOperator3<<"=";
                    cin>>dCalculate;
                    if(dCalculate==dResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            case 1:
                dTemp=(double)iOperator1/(double)iOperator2-iOperator3;
                dResult=(int)(dTemp*100)/100.0;
                if(dResult>100.0||iOperator2==0)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"/"<<iOperator2<<"-"<<iOperator3<<"=";
                    cin>>dCalculate;
                    if(dCalculate==dResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            case 2:
                dTemp=(double)iOperator1/(double)iOperator2*iOperator3;
                dResult=(int)(dTemp*100)/100.0;
                if(dResult>100.0||iOperator2==0)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"/"<<iOperator2<<"*"<<iOperator3<<"=";
                    cin>>dCalculate;
                    if(dCalculate==dResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            case 3:
                dTemp=(double)iOperator1/(double)iOperator2/(double)iOperator3;
                dResult=(int)(dTemp*100)/100.0;
                if(dResult>100.0||iOperator2==0||iOperator3==0)
                    iSum++;
                else
                {
                    cout<<iOperator1<<"/"<<iOperator2<<"/"<<iOperator3<<"=";
                    cin>>dCalculate;
                    if(dCalculate==dResult)
                        cout<<"Right"<<endl;
                    else
                        cout<<"Wrong"<<endl;
                }
            break;
            }
            break;
        }
    }
    return 0;
}


三.程序截图

 

 

 

四.简要总结

实现加减乘除四则运算,沥去程序中随机形成的结果大于100的题目。但是这个程序并不完善,在产生除法问题时,计算机总是会产生不可除尽的运算数,这时采取一个保留2位小数,截断后面其他所有小数的方法,方便答题。

推荐阅读