软件工程个人作业01
程序要求:
能自动生成三十道小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算。
设计思路:
30道题的设计:
1。随机生成两个float数,范围0—99。
2。随机生成第三个整数,范围1—4。用多个if。。。else语句判别1—4来分别确定四则运算符号,并且计算出两个数的运算结果。
3。需要加一个判断语句:如果第二个随机数为0并且当时为除法,则重新生成随机数和运算符。
4。如果不是3,则反复执行1和2,并且输出。
5.设置一个计数器,到达30的时候,停止。
假分数的设计:
基本同上面设计30道题类似,就是把分子、分母换成真分数,然后判断的时候,比上面的判断多了一个。
源代码:
/*能自动生成30道小学四则运算题目,要求除了整数以外,还要支持假分数的四则运算 底云飞 2016.3.7
*/
#include <iostream>
#include <time.h>
#include <string>
using namespace std;
void main()
{
srand((unsigned)time(0)); //用时间做随机种子,随机数发生器
float rand1=0,rand2=0,rand3=0,rand4=0,c=5; //随机数1和2对应被除数和除数,c是用于四则运算的,rand3和4用在假分数上
float num=0; //num是结果
string fu; //运算符号
int a=0,b=0; //a用来给30道四则运算计数的,b用来给假分数个数计数的
int flag,number; //用于判断是否需要生成真分数,number用来输入几个假分数的运算
//开始列出30道四则运算题
cout<<"下面是30道四则运算:"<<endl;
for(int i=1;i<50;i++)
{
p: rand1 = rand()%100;
rand2 = rand()%100;
c = rand()%4+1; //生成两个随机数和确定运算符的C
if(c==1)
{
num=rand1+rand2;
fu = "+";
}
else if(c==2)
{
num=rand1-rand2;
fu = "-";
}
else if(c==3)
{
num=rand1*rand2;
fu = "*";
}
else if(c==4)
{
num=rand1/rand2;
fu = "/";
} //直接用num把运算结果算出来,用于后面显示
if(fu=="/"&&rand2==0) //如果除法时分母为0,则重新生成随机数
goto p;
cout<<a+1<<"."<<rand1<<fu<<rand2<<"="<<num<<endl;
a++;
if(a==30) //当达到30个时,结束
break;
} //for
//假分数的四则运算
cout<<"需要生成假分数的四则运算吗(需要输入1,不需要输入0)?:";
cin>>flag;
if(flag==1)
{
cout<<"需要生成几个假分数的四则运算?";
cin>>number;
cout<<"下面是生成的"<<number<<"个四则运算:"<<endl;
for(int i=1;i<=1000;i++)
{
rand1 = rand()%100;
rand2 = rand()%100;
rand3 = rand()%100;
rand4 = rand()%100;
c = rand()%4+1;
if(rand2>=rand1&&rand4>=rand3&&rand1!=0&&rand2!=0) //判断是真分数并且分母不能为0
{
if(c==1)
{
num=(rand2/rand1)+(rand4/rand3);
fu = "+";
}
else if(c==2)
{
num=(rand2/rand1)-(rand4/rand3);
fu = "-";
}
else if(c==3)
{
num=(rand2/rand1)*(rand4/rand3);
fu = "*";
}
else if(c==4)
{
num=(rand2/rand1)/(rand4/rand3);
fu = "/";
}
cout<<"("<<rand2<<"/"<<rand1<<")"<<fu<<"("<<rand4<<"/"<<rand3<<")="<<num<<endl;
b++;
}//判断是两个真分数的if条件语句
if(b==number) //当达到真分数数量要求时,停止
break;
}//for
}//if
else if(flag==0)
exit(1);
}
程序感想:
首先要注意设计思路,要有清晰的思路,最后输出那个运算符的时候,程序当中时提前计算出结果,然后直接就显示了,不是最后让两个数计算的。然后就是需要考虑到除数和分母为0的情况,需要去掉。假分数的程序需要注意输出,判断和计数的位置顺序问题。