软件工程概论个人作业01
2016-03-09 19:37
344 查看
一:设计思路:
1.随机产生2个0到99之间的随机数,用作运算数;随机产生1个0到3之间的数,分别代表运算符+,-,*,/。
2.if....else....语句控制输出的算式,for循环输出30道题。
3.当运算符为“/”号时,需要判断除数是否为0,如果为0,则循环次数加一。
4.为了保证随机种子的不同,需要用到srand(time(NULL))函数。
5.循环遍历已经出过的题,查看是否有重题。
二:源程序:
#include<iostream>
usingnamespacestd;
#include<string>
#include<time.h>
voidmain()
{
srand(time(NULL));
stringmark;
intkey_one;
intkey_two;
intdividend1,divider1,dividend2,divider2;
stringresult[30];
for(inti=0;i<30;i++)
{
key_one=rand()%4;
key_two=rand()%2;
if(key_two==0)
{
dividend1=rand()%100;
divider1=rand()%100;
if(key_one==0)
{
cout<<dividend1<<"+"<<divider1<<"=?"<<endl;
result[i]=dividend1+divider1;
}
elseif(key_one==1)
{
cout<<dividend1<<"-"<<divider1<<"=?"<<endl;
result[i]=dividend1-divider1;
}
elseif(key_one==2)
{
cout<<dividend1<<"*"<<divider1<<"=?"<<endl;
result[i]=dividend1*divider1;
}
elseif(key_one==3)
{
if(divider1==0)
{
i++;
break;
}
cout<<dividend1<<"/"<<divider1<<"=?"<<endl;
result[i]="dividend/divider";
}
else
cout<<"Pleasetryagain!"<<endl;
}
if(key_two==1)
{
dividend1=rand()%100;
divider1=rand()%100;
dividend2=rand()%100;
divider2=rand()%100;
if(key_one==0)
{
cout<<dividend1<<"/"<<divider1<<"+"<<dividend2<<"/"<<divider2<<"=?"<<endl;
}
elseif(key_one==1)
{
cout<<dividend1<<"/"<<divider1<<"-"<<dividend2<<"/"<<divider2<<"=?"<<endl;
}
elseif(key_one==2)
{
cout<<"("<<dividend1<<"/"<<divider1<<")"<<"*"<<"("<<dividend2<<"/"<<divider2<<")"<<"=?"<<endl;
}
elseif(key_one==3)
{
if(divider1==0||divider2==0)
{
i++;
break;
}
cout<<"("<<dividend1<<"/"<<divider1<<")"<<"/"<<"("<<dividend2<<"/"<<divider2<<")"<<"=?"<<endl;
}
else
cout<<"Pleasetryagain!"<<endl;
}
}
}
三:结果截图:
四:上课未按时完成作业的原因:
没有认真思考问题,盲目的敲代码,思路不清晰,只是想一步写一步,一旦出错只能从头查找修改,浪费了大量的时间。
1.随机产生2个0到99之间的随机数,用作运算数;随机产生1个0到3之间的数,分别代表运算符+,-,*,/。
2.if....else....语句控制输出的算式,for循环输出30道题。
3.当运算符为“/”号时,需要判断除数是否为0,如果为0,则循环次数加一。
4.为了保证随机种子的不同,需要用到srand(time(NULL))函数。
5.循环遍历已经出过的题,查看是否有重题。
二:源程序:
#include<iostream>
usingnamespacestd;
#include<string>
#include<time.h>
voidmain()
{
srand(time(NULL));
stringmark;
intkey_one;
intkey_two;
intdividend1,divider1,dividend2,divider2;
stringresult[30];
for(inti=0;i<30;i++)
{
key_one=rand()%4;
key_two=rand()%2;
if(key_two==0)
{
dividend1=rand()%100;
divider1=rand()%100;
if(key_one==0)
{
cout<<dividend1<<"+"<<divider1<<"=?"<<endl;
result[i]=dividend1+divider1;
}
elseif(key_one==1)
{
cout<<dividend1<<"-"<<divider1<<"=?"<<endl;
result[i]=dividend1-divider1;
}
elseif(key_one==2)
{
cout<<dividend1<<"*"<<divider1<<"=?"<<endl;
result[i]=dividend1*divider1;
}
elseif(key_one==3)
{
if(divider1==0)
{
i++;
break;
}
cout<<dividend1<<"/"<<divider1<<"=?"<<endl;
result[i]="dividend/divider";
}
else
cout<<"Pleasetryagain!"<<endl;
}
if(key_two==1)
{
dividend1=rand()%100;
divider1=rand()%100;
dividend2=rand()%100;
divider2=rand()%100;
if(key_one==0)
{
cout<<dividend1<<"/"<<divider1<<"+"<<dividend2<<"/"<<divider2<<"=?"<<endl;
}
elseif(key_one==1)
{
cout<<dividend1<<"/"<<divider1<<"-"<<dividend2<<"/"<<divider2<<"=?"<<endl;
}
elseif(key_one==2)
{
cout<<"("<<dividend1<<"/"<<divider1<<")"<<"*"<<"("<<dividend2<<"/"<<divider2<<")"<<"=?"<<endl;
}
elseif(key_one==3)
{
if(divider1==0||divider2==0)
{
i++;
break;
}
cout<<"("<<dividend1<<"/"<<divider1<<")"<<"/"<<"("<<dividend2<<"/"<<divider2<<")"<<"=?"<<endl;
}
else
cout<<"Pleasetryagain!"<<endl;
}
}
}
三:结果截图:
四:上课未按时完成作业的原因:
没有认真思考问题,盲目的敲代码,思路不清晰,只是想一步写一步,一旦出错只能从头查找修改,浪费了大量的时间。
相关文章推荐
- 课堂所讲整理:多态
- HDU-1242-Rescue(优先队列+BFS)
- Exel学习纪录(1)
- Debian下iceweasel(FireFox)缓存目录下的视频文件
- 我是一只it小小鸟
- 数论-沈阳站-hdu-5512-Pagodas-水题
- Java中的stringbuffer和String类:
- nyist 26
- MATLAB 常用函数笔记
- Python爬虫学习笔记(3)-XPath与多线程爬虫
- 从马文到AlphaGo AI走过了怎样的70年?
- hql 语法与详细解释<转>
- Parallelogram Counting(平行四边形个数,思维转化)
- 训练指南DP例题读后感
- 【spark】采用LogisticRegression(ML API篇)对MNIST的0-1数字进行识别
- Python爬虫学习笔记(2)-单线程爬虫
- linux添加系统调用总结(内核版本4.4.4)
- 笔记 :MATLAB 字符串
- 读书笔记--推荐系统实践(2)
- 解决Windbg的waiting to reconnect