四则运算 2

实验报告

思路:

是否有乘除法、数值范围、加减有无负数、除法有无余数。
利用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分 编写实验报告  

 

posted @ 2015-03-18 10:47  乱——清——无  阅读(185)  评论(0编辑  收藏  举报