随机生成30道100以内的四则运算,除整数外,还要支持真分数。
(1)生成2个一百以内的随机数
(2)随机产生1-4的随机整数,分别代表+、-、*、/。
(3)如果是除法,确保第二个数不为0
(4)生成第4个随机数
(5)随机产生1-4的随机整数,分别代表+、-、*、/
(6)每两个判断大小,并确保分母不为0
(7)将结果输出
(8)通过30个循环分别输出30道题
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;
通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。
要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。
//信1301-2 禹慧慧 生成30 道四则运算题,支持整数和真分数 #include<iostream> #include <stdlib.h> #include <time.h> #define random(x) (rand()%x) using namespace std; void main() { srand((int)time(0));//时间种子 for(int j=0;j<30;j++)//循环30次 { int i; i=rand()%2;//随即决定整数计算或真分数计算 switch(i) { case(0): { int a,b,x; char y; x=rand()%4;//随即决定运算符号 switch(x) { case(0):y='+';break; case(1):y='-';break; case(2):y='*';break; case(3):y='/';break; } a=random(100); b=random(100);//生成随机数 if(y=='/')//若除法,确保除数不为零 { if(b==0) { do {b=random(100);} while(b==0); } cout<<a<<y<<b<<"="<<endl;break; } case(1): { int a,b,c,d,x; char y; x=rand()%4;//随即决定运算符号 switch(x) { case(0):y='+';break; case(1):y='-';break; case(2):y='*';break; case(3):y='/';break; } a=random(100); b=random(100); c=random(100); d=random(100);//生成随机数 if(a>b)//判断大小,组合成真分数,并确保分母不为0 cout<<"("<<b<<"/"<<a<<")"; else { if(b==0) { do{b=random(100);} while(b==0); } cout<<"("<<a<<"/"<<b<<")"; } cout<<y; if(c>d) cout<<"("<<d<<"/"<<c<<")"; else { if(d==0) { do{d=random(100);} while(d==0); } cout<<"("<<c<<"/"<<d<<")"; } cout<<"="<<endl;break; } } } } }
总结:这是第一次作业,并不是很难,但是就在上课的时候,因为条件太多,没有头绪,不知从哪里下手,但是课下再看看,一点一点就写出了,并没有很难,知识选择条件太多有些乱。下一次的作业应该会更复杂吧!