用C++编写四则运算

一.基本功能

    随机产生三个运算数,两个运算符的简单四则混合运算。做一道题目产生一道,共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;
}

三.程序截图

用C++编写四则运算

 

 

 

四.简要总结

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

原文链接: https://www.cnblogs.com/smaugmao/p/13788164.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    用C++编写四则运算

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/203746

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午9:38
下一篇 2023年2月12日 下午9:38

相关推荐