代码作业——四则运算

要求:编程随机生成30个四则运算,算数包括整数和真分数

思路:不考虑30道的要求时,产生一道的步骤是先产生随机数1,然后随机产生运算符号()和随机产生随机数2,因为要求有30道,所以要用循环语句,此处我运了for循环,产生随机数用了rand()函数,为避免随机数每次相同用了srand函数。但我的程序存在缺点是产生一道整数运算的同时产生真分数运算。

代码如下:

/*2016.3.6.WeiLiHua四则运算,打印30道题*/
#include<iostream>
#include<ctime>
using namespace std;
void main()
{
    int sj1,sj2,sf=1,sj3,sj4,r;//定义随机数及算符
    srand((unsigned)time(NULL)); //srand函数是以现在系统时间作为时间种子产生随机数
    for(int i=0;i<15;i++)
    {
            sj1=rand()%100;
            sj2=rand()%100+1;//避免分母为0
            sj3=rand()%100+1;
            sj4=rand()%100+1;
            sf=i%4; 
            switch(sf)
                {
                    case 0:
                    cout<<sj1<<"+"<<sj2<<"="<<endl;
                    if(sj1>sj3){r=sj1;sj1=sj3;sj3=r;}
                    if(sj2>sj4){r=sj2;sj2=sj4;sj4=r;}
                    cout<<sj1<<"/"<<sj3<<"+"<<sj2<<"/"<<sj4<<"="<<endl;
                    break;
                    case 1:
                    if(sj1<sj2){r=sj1;sj1=sj2;sj2=r;};//处理了一下避免负数结果的产生
                    cout<<sj1<<"-"<<sj2<<"="<<endl;
                    if(sj1>sj3){r=sj1;sj1=sj3;sj3=r;}
                    if(sj2>sj4){r=sj2;sj2=sj4;sj4=r;}
                    cout<<sj1<<"/"<<sj3<<"-"<<sj2<<"/"<<sj4<<"="<<endl;
                    break;
                   case 2:
                   cout<<sj1<<"*"<<sj2<<"="<<endl;
                   if(sj1>sj3){r=sj1;sj1=sj3;sj3=r;}
                    if(sj2>sj4){r=sj2;sj2=sj4;sj4=r;}
                    cout<<sj1<<"/"<<sj3<<"*"<<sj2<<"/"<<sj4<<"="<<endl;
                   break;
                   case 3:
                   cout<<sj1<<"/"<<sj2<<"="<<endl;
                   if(sj1>sj3){r=sj1;sj1=sj3;sj3=r;}
                    if(sj2>sj4){r=sj2;sj2=sj4;sj4=r;}
                    cout<<sj1<<"/"<<sj3<<"/"<<sj2<<"/"<<sj4<<"="<<endl;
                   break;
                   default:
                   break;
                }


    }
}

运行截图:

原文地址:https://www.cnblogs.com/a1397240667/p/5247717.html