实验报告
思路:
是否有乘除法、数值范围、加减有无负数、除法有无余数。
利用for循环设置题目的数量,用三个数组分别表示两个随机数和他们之间的四则运算,利用跟之前的题目进行比较,避免出现重复的题目。
利用if语句对参数进行分类,如果有乘除法,四则运算的数组就有四个元素,反之只有两个元素。
命令a是题目的取值范围,通过输入a的值,rand()%a来确定取值范围。
对于加减有无负数,对随机数的数组是否小于零进行判断。用if语句进行选择。
对于除法有无余数,对两组随机数的数组是否进行判断。用if语句进行选择。
打印方式:用for循环来选择一行有几个题目。
代码:
#include<iostream>
#include<cmath>
using namespace std;
void main()
{
int a[1000],b[1000],c[1000],i,n,x,j,d,f,g,h,k,l,o;
double e;
cout<<"输入题的数目(最多1000)"<<endl;
cin>>n;
cout<<"输入题目的范围的最大值"<<endl;
cin>>x;
cout<<"题目中是否有负数(是就输入1,否就输入2)"<<endl;
cin>>d;
if(d==1) e=-1.0;
else e=1.0;
cout<<"题目中是否有乘除(是就输入1,否就输入2)"<<endl;
cin>>f;
if(f==1)
{
g=4;
cout<<"乘除否有余数(是就输入1,否就输入2)"<<endl;
cin>>h; if(h==1) k=1;
else k=2;
}
else g=2;
for(i=1;i<=n;i++)
{
o=rand()%2+1;
const int p=pow(e,o);
a[i]=p*rand()%x+1;
b[i]=p*rand()%x+1;
c[i]=rand()%g+1;
for(j=1;j<i;j++)//避免重复
{
if(a[j]==a[i]&&b[j]==b[i]&&c[j]==c[i])
{i=i-1;}
}
if(c[i]==4&&b[i]==0)//除数不为零
{i=i-1;}
if((k==2)&&(c[i]==4)&&(a[i]%b[i]!=0))//能否整除
{i=i-1;}
}
cout<<"请选择输出方式(一行几个题 最多7个)"<<endl;//输出
cin>>l;
for(i=1;i<=n;i++)
{
if(c[i]==1)
cout<<a[i]<<"+"<<b[i]<<"="<<" ";
if(c[i]==2)
cout<<a[i]<<"-"<<b[i]<<"="<<" ";
if(c[i]==3)
cout<<a[i]<<"*"<<b[i]<<"="<<" ";
if(c[i]==4)
cout<<a[i]<<"/"<<b[i]<<"="<<" ";
if(i%l==0)
cout<<endl;
}
}
总结:
利用for循环来产生随机数的数目。根据产生100以内随机数的式子a=rand()%100+1和c=rand()%4+1;把100用变量表示可以控制随机数的范围,把4用变量表示可以控制随加减乘除中是否有乘除运算。在rand之前随机产生-1或1来控制是否出现负数。通过%来控制是否有余数。在用for循环中如果遇到不符合条件的随机数,就利用i=i-1来使产生的题目数量不变。
日期 | 开始时间 | 终止时间 | 中断时间 | 净时间 | 活动 | 备注 |
13 | 12:30 | 13:30 | 一小时 | 编写实验思路 | ||
14 | 9:00 | 10:30 | 十分钟 | 1小时30分 | 编程序 | 编写大概的框架可以产生题目并且可以控制是否有乘除 |
14 | 16:00 | 16:30 | 30分 | 编程序 | 对题目的范围进行限制 | |
15 | 19:30 | 21:00 | 1小时30分 | 编程序 | 在程序中加入除法是否有余数 | |
16 | 16:00 | 17:30 | 1小时30分 | 编程序 | 在程序中加入加入对负数的判断以及输出方式的不同 | |
18 | 10:00 | 10:45 | 45分 | 编写实验报告 |