四则运算1

随机生成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;

}
}
}
}
}

  总结:这是第一次作业,并不是很难,但是就在上课的时候,因为条件太多,没有头绪,不知从哪里下手,但是课下再看看,一点一点就写出了,并没有很难,知识选择条件太多有些乱。下一次的作业应该会更复杂吧!

posted @ 2016-03-05 21:39  我心悦你  阅读(211)  评论(1编辑  收藏  举报