一、题目要求:
编写一道程序要求,随机给出30道四则运算题,可以是整数运算,也可以是分数运算。
二、设计思路:
1.首先能随机产生四个1-100的整数,并且要用时间种子函数避免伪随机;
2.真分数的产生是用除法来计算的,产生第一个(num_a)第二个(num_b)整数用来限制第三个(num_c)第四个(num_d)整数,其中第三个第四个整数要小于第一个第二个整数用Do….while 语句来实现,第一个真分数表示是a=num_c/num_a,第四个真分数b=num_d/num_b;
3.数字的选取和运算符的选取都是用数字来表示的,选取第一个数字的时候用if语句来实现随机产生两个数字1,2用来表示整数和真分数并输出,选取运算符是用1-4四个数字分别表示+-*/,用switch语句来实现并输出。第二个数字的选取同第一个数字选取一样。
4.最后再加上for语句来实现随机产生30个运算题目。
三、程序代码:
//1301-2 20133056 吕兰兰 随机产生30道四则运算题目
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
int num_a,num_b,num_c,num_d;//随机产生4个1-100的整数
double a,b;//用来表示真分数
int c,d,e;//用来随机产生数字,c用来判断选择的是整数还是分数,d用来选择+-*/,e用来选择第二个数字是整数还是分数
srand(time(0));
for(int i=1;i<31;i++)
{
num_a=rand()%100+1;
num_b=rand()%100+1;
//求第一位真分数,产生的整数要比第一位整数小
do
{
num_c=rand()%100+1;
}while (num_c>=num_a);
a=num_c/num_a;
//求第二位真分数,产生的整数要比第二位整数小
do
{
num_d=rand()%100+1;
}while(num_d>=num_b);
b=num_d/num_b;
//选择第一位数字,为
c=rand()%2+1;
if(c==1)
{
cout<<num_a<<" ";
}
if(c==2)
{
cout<<"("<<num_c<<"/"<<num_a<<")"<<" ";
}
//产生四种运算符
d=rand()%4+1;
switch(d)
{
case 1:cout<<"+ ";break;
case 2:cout<<"- ";break;
case 3:cout<<"* ";break;
case 4:cout<<"/ ";break;
}
//随机产生第二位的数字,可以为整数或分数
e=rand()%2+1;
if(e==1)
{
cout<<num_b;
}
if(e==2)
{
cout<<"("<<num_d<<"/"<<num_b<<")";
}
cout<<"=";
cout<<endl;
cout<<endl;
}
}
四、用时:
程序编写用了90分钟,后来修改错误和完善代码用时半个小时,总用时2个小时。
五、体会:
好开心,自己独立的编出一道程序。原来编程序很好入手的只要自己提前把思路理清,我是按着老师所说的“拆分发”将每一步要做的一一列清楚,程序很好编。编程第一次程序成功输出结果错误,输出的都是相同的数字,后来发现是srand(time(0));使用错误,Do…while语句输出真分数时能输出1,经过仔细的推算很快就发现错误点,这次程序编写成功发现,程序最主要的还是思路,有的程序用简单的语句就能实现,有的就比较复杂。