课堂作业第三周

题目要求:1 题目避免重复

2 可定制(数量/打印方式)

3 可控制下列参数:

是否有乘除法,数值范围,加减有无负数,除法有无余数,是否支持分数(真分数,假分数)

思路:用随机数生成两个数,将两个数分别存入两个数组,每出一道题都与以前的每组进行对比,如果两个数分别都与以前的相同,则重新产生两个随机数。设置参数,用for循环控制出题数量。并且可以控制每行的输出题目的个数。设置参数,用if来判断是否有乘除法。由于用roud()函数产生随机数所以用变量控制数值范围。随机数生成后进行判断,若无负数则要求第一个随机数必须大于第二个否则重新产生。若不产生余数,则让计算机进行判断,无法整除的则跳过。

日期 开始时间 结束时间 中断时间 净时间 活动 备注
3/14 10:00 11:10 10分钟 1小时 查阅资料,思考题目 翻看以前的程序
  15:30 17:00   1个半小时 进行初步编写规划 写出题目避免重复
3/15 9:00 11:00 30分钟 1个半小时 编写出乘除法,加法的程序 和同学聊天,寻找思路
  16:00 17:00   1个小时 编写是否有无余数  
3/16 16:00 17:00   1个小时 编写加减有无负数 修改错误
3/18 10:00 11:00   1个小时 调试,修改bug  
 3/19  12:00  13:00  20分钟  40分钟  进行最后的调试,编写文档  
             
             
             

 

 

 

 

 

 

 

 

代码

#include<iostream>
#include <iomanip>
#include<cmath>
using namespace std;
void main()
{
int i,j,m,n,k,g=0,h,w,a[1000],b[1000],e,p,t,l,f,d,v,x,u=0;
cout<<"请输入出题数目"<<endl;
cin>>m;

cout<<"请输入数值范围"<<endl;
cin>>n;
cout<<"请输入每行题目的个数:1-5"<<endl;
cin>>x;
cout<<"1 有乘除 2 无乘除"<<endl;
cin>>w;
if(w==1){
cout<<"1 无余数 2 有余数"<<endl;
cin>>v;}
cout<<"1 无负数 2 有负数"<<endl;
cin>>t;

for(i=0;i<1000;i++)
{a[i]=0;b[i]=0;
}

for(p=0;p<m;p++)
{
if(t==1)
{
k=rand()%n+1;
j=rand()%n+1;}
else{
l=rand()%2+1;
f=pow(-1.0,l);
d=pow(-1.0,l);
k= f*rand()%n+1;
j= d*rand()%n+1;
}
e=0;
if(v==1&&w==1&&k%j!=0)
{
m=m+1;}
else{

if(t==1&&k<j)
{
m=m+1;}

else{
if(j==0)
{m=m+1;
}
else{

for(i=0;i<1000;i++)
{
if(a[i]==k&&b[i]==j)
{ e=1;
m=m+1;}
}
if(e==0)
{
g=g+1;
for(i=g-1;i<g;i++)
{ a[i]=k;
b[i]=j;
}

if(w==1){

h=rand()%4+1;

}
else{

h=rand()%2+1;
}

if(h==1)
cout<<setiosflags(ios::right)<<setw(8)<<k<<"+ "<<j<<"="<<" ";
if(h==2)
cout<<setiosflags(ios::right)<<setw(8)<<k<<"- "<<j<<"="<<" ";
if(h==3)
cout<<setiosflags(ios::right)<<setw(8)<<k<<"* "<<j<<"="<<" ";
if(h==4)
cout<<setiosflags(ios::right)<<setw(8)<<k<<"/ "<<j<<"="<<" ";

u=u+1;
if(u%x==0)
cout<<endl;

}

}
}}

}
}

总结

 通过这次编程,我知道了编程前策划的重要性,还有要和同学们相互交流沟通可以拓展自己的思路,寻找灵感,特别是当你遇到瓶颈时,要多看资料。

 

posted on 2015-03-18 10:32  bingoing  阅读(148)  评论(0编辑  收藏  举报

导航