标签:
四则运算2
1.设计思想
题目避免重复:
利用数组,将利用随机数函数产生的,表示第一个数的随机数与表示第二个书的随机数还有控制运算符号的第三个随机数求和,并与之前已存入的数字比较,若相同,则重新生成随机数。若不同则存入数组中,依次判断要输出的表达式是否与之前输出的表达式重复。
可定制(数量/打印方式)
通过为输出函数设置参数的方法控制,输出四则运算表达式的数量和每张纸上打印表达式的数量。
控制数值范围
将表示数字的随机数除以范围的最大值取余,得到的数字就是规定范围内的数字。
是否有乘除法
将控制运算符的随机数除以4,根据余数,运算符依次取+ - * /
加减是否有负数
通过随机数除以2取余,依次控制是否有负号
除法是否有余数
判断表达式是否可以整除,若能整除直接通过,否则将除数减去余数。
2.源程序代码
#include<iostream>
using namespace std;
//是?否?发ぁ?生Θ?重?复′
void chongfu(int c,int j,int ku[])
{
int a1,a2,a3;
ku[0]=c;
for(int p=1;p<10000;p++)
{
if(ku[0]==ku[p])
{
a1=rand();
a2=rand();
a3=rand();
c=a1+a2+a3;
ku[j]=c;
chongfu(c,j,ku);
}
else
{
ku[j]=c;
break;
}
}
}
//算?式?表括?达?式?的?输?出?
void suanshi(int zdz,int cc,int ysh,int fs)
{
int a1,a2,a3,b1,b2,c,j=0,ku[10000];
char ch;
a1=rand();
a2=rand();
a3=rand();
c=a1+a2+a3;
chongfu(c,j,ku);
j++;
//控?制?数簓值μ范?围§
a1=a1%zdz;
a2=a2%zdz;
//有瓺无T负o数簓
if(fs==2)
{
b1=(a1+a3)%2;
b2=(a2+a3)%2;
if(b1==0)
a1=-a1;
if(b2==1)
a2=-a2;
}
//有瓺无T乘?除y法ぁ?
if(cc==2)
{
if(a3%4==0)
ch=‘+‘;
else if(a3%4==1)
ch=‘-‘;
else if(a3%4==2)
ch=‘*‘;
else
{
ch=‘/‘;
if(a2==0)
do
{
a2=rand();
a2=a2%zdz;
}
while(a2==0);
//除y法ぁ?有瓺无T余?数簓 之? 无T余?数簓
if(ysh==1)
{
int temp,tem;
if(abs(a1)<abs(a2))
{
temp=a1;
a1=a2;
a2=temp;
}
tem=a1%a2;
a2=a2%(zdz/3);
temp=rand();
temp=temp%3;
if(a1+a2*temp<=zdz)
a1=a1+a2*temp;
a1=a1-tem;
}
}
}
else
{
if(a3%2==0)
ch=‘+‘;
else
ch=‘-‘;
}
//输?出?算?式?
if(a2<0)
cout<<a1<<ch<<"("<<a2<<")"<<"="<<endl;
else
cout<<a1<<ch<<a2<<"="<<endl;
}
//定¨制?题琣目?数簓量?/打洙?印?方?式?
void dingzhi()
{
int sl,zl,zdz,cc,ysh,fs;
do
{
cout<<"请?依皑?次?输?入?出?题琣数簓量?和í每?页?的?题琣量?:阰"<<endl;
cout<<"请?输?入?出?题琣的?数簓量?:阰";
cin>>sl;
cout<<"请?输?入?每?页?的?题琣量?:阰";
cin>>zl;
cout<<"请?指?定¨算?式?的?范?围§:阰";
cin>>zdz;
cout<<"加ó减?是?否?有瓺负o数簓 1.没?有瓺负o数簓 2.有瓺负o数簓 请?选?择?:阰";
cin>>fs;
cout<<"算?式?是?否?有瓺乘?除y法ぁ?1.无T乘?除y法ぁ? 2.有瓺乘?除y法ぁ?请?选?择?:阰";
cin>>cc;
if(cc==2)
{
cout<<"除y法ぁ?是?否?有瓺余?数簓 1.没?有瓺余?数簓 2.有瓺余?数簓 请?选?择?:阰";
cin>>ysh;
}
else
ysh=1;
cout<<endl;
}while(sl<=0||zl<=0);
int ys=1;
for(int i=1;i<sl+1;i++)
{
suanshi(zdz,cc,ysh,fs);
cout<<endl;
if(i==zl*ys)
{
cout<<" 页?数簓 "<<ys<<endl;
cout<<"--------------------------------------------------------------"<<endl;
ys++;
}
if(i==sl&&i!=zl*(ys-1))
{
cout<<" 页?数簓 "<<ys<<endl;
cout<<"--------------------------------------------------------------"<<endl;
}
}
}
void main()
{
cout<<" "<<"****************************************"<<endl;
cout<<" *"<<" 四?则ò运?算? *"<<endl;
cout<<" *"<<" 作痢?者?:阰 张?欢?龙ⅷ? *"<<endl;
cout<<" *"<<" 日?期ú:阰2015.3.19 *"<<endl;
cout<<" "<<"****************************************"<<endl<<endl;
dingzhi();
}
3.运行结果截图
见顶端
4.编程总结
这次的编程题目比较熟悉,所以感觉比较简单,自我评价:这次编程用条件进行判断时,注意了if……else if……else……的运用,程序应该更强健;但是我已经学过java用户界面的编程,但是自己不熟悉,所以有逃避之嫌
5.时间记录日志
学生:张欢龙 日期:2015/3/19
教师:王建民 课程:软件工程概论
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
事件 |
备注 |
2015/3/13 |
-- |
-- |
-- |
-- |
上课 |
编程准备中 |
2015/3/14 |
-- |
-- |
-- |
-- |
周末 |
编程准备中 |
2015/3/15 |
-- |
-- |
-- |
-- |
周末 |
编程准备中 |
2015/3/16 |
-- |
-- |
-- |
-- |
上课 |
编程准备中 |
2015/3/17 |
-- |
-- |
-- |
-- |
上课 |
编程准备中 |
2015/3/18 |
-- |
-- |
-- |
-- |
上课 |
编程准备中 |
2015/3/19 |
16:00 |
21:22 |
18:00 |
6个半小时 |
写作业 |
编程中 |
标签:
原文地址:http://www.cnblogs.com/bdqczhl/p/4351878.html