要求:编程随机生成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; } } }
运行截图:
时间: 2024-10-28 15:31:57