课堂作业第三周
题目要求: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;
}
}
}}
}
}
总结
通过这次编程,我知道了编程前策划的重要性,还有要和同学们相互交流沟通可以拓展自己的思路,寻找灵感,特别是当你遇到瓶颈时,要多看资料。