标签:

#include <iostream>
using namespace std;
void Chu(int a,int b,int m2,int min,int max,int i)
{ 
	do b=rand();
		while(b<min||b>max||b==0);	
	if(m2==2&&a%b!=0)
	{
		do b=rand();
			while(b<min||b>max||b==0||a%b!=0);	
	}
	cout<<i<<". "<<a<<"/"<<b<<"="<<endl;	
}
void Fen(int m1,int m3,int min,int max,int i)
{
	int a1,a2,b1,b2;
	int s2,s3,s4;
    a1=rand();
	a2=rand();
	do b1=rand();
	while ((a1/b1)<min||(a1/b1)>max||b1==0);
	do b2=rand();
	while ((a2/b2)<min||(a2/b2)>max||b2==0);
    s4=m1==1?rand()%4:rand()%2;
	if(m3==1)
		{
			
			s2=rand()%2;
			s3=rand()%3;
			a1=s2==1?a1*(-1):a1;
			a2=s3==1?a2*(-1):a2;
		}
	if(s4==0)
		cout<<i<<". "<<a1<<"/"<<b1<<"+"<<a2<<"/"<<b2<<"="<<endl;
	if(s4==1)
		cout<<i<<". "<<a1<<"/"<<b1<<"-"<<a2<<"/"<<b2<<"="<<endl;
	if(s4==2)
		cout<<i<<". "<<a1<<"/"<<b1<<"*"<<a2<<"/"<<b2<<"="<<endl;
	if(s4==3)
		Chu(a1/b1,a2/b2,1,min,max,i);
}
int main()
{
	int a[100],b[100];
	int i,n,min,max,s1,s2,s3;
	int m1,m2,m3,m4;
	int m0;
	cout<<"                   ***********************************************"<<endl;
	cout<<"                   *                                             *"<<endl;
	cout<<"                   *           -------四则运算--------           *"<<endl;
	cout<<"                   *                                             *"<<endl;
    cout<<"                   ***********************************************"<<endl<<endl;
	
	do{
	cout<<"请输入题目数n:"<<endl;
	cin>>n;
	cout<<"请输入四则运算数字范围:"<<endl;
	cin>>min>>max;
	cout<<"请选择是否产生乘除法算式:"<<endl<<"1.是"<<endl<<"2.否"<<endl;
    cin>>m1;
	cout<<"请选择是否产生有余数的算式:"<<endl<<"1.是"<<endl<<"2.否"<<endl;
	cin>>m2;
	cout<<"请选择是否产生有负数的算式:"<<endl<<"1.是"<<endl<<"2.否"<<endl;
	cin>>m3;
	cout<<"请选择是否产生有分数的算式:"<<endl<<"1.是"<<endl<<"2.否"<<endl;
	cin>>m4;
	for(i=1;i<=n;i++)
	{
		do a[i]=rand();
		while(a[i]<min||a[i]>max);
		
		do b[i]=rand();
        while(b[i]<min||b[i]>max);
	
		
		if(m1==1)
		{
			s1=rand()%4;
			if(m4==1)
				s1=rand()%5;
		}
		else s1=rand()%2;
		if(m3==1)
		{
			
			s2=rand()%2;
			s3=rand()%3;
			a[i]=s2==1?a[i]*(-1):a[i];
			b[i]=s3==1?b[i]*(-1):b[i];
		}
		
		if(s1==0)
			cout<<i<<". "<<a[i]<<"+"<<b[i]<<"="<<endl;
		if(s1==1)
			cout<<i<<". "<<a[i]<<"-"<<b[i]<<"="<<endl;
		if(s1==2)
			cout<<i<<". "<<a[i]<<"*"<<b[i]<<"="<<endl;
		if(s1==3)
			Chu(a[i],b[i],m2,min,max,i);
		if(s1==4)
			Fen(m1,m3,min,max,i);
	}
	cout<<"                   ***********************************************"<<endl;
	cout<<"                   *                                             *"<<endl;
	cout<<"                   *           -------四则运算--------           *"<<endl;
	cout<<"                   *                                             *"<<endl;
    cout<<"                   ***********************************************"<<endl<<endl;
	cout<<"                                      请选择:                    "<<endl;
	cout<<"                                      1.开始                      "<<endl;
    cout<<"                                      2.结束                      "<<endl;
	cin>>m0;
	}
	while(m0==1);
	return 0;
}
编程总结:
跟之前的设计思路不太一样,没有用全是函数,因为循环加套用函数,很麻烦,实现不了啊。。。
然后我就把选择全放在主函数里,除法单独函数,在除法函数里判断有没有余数,负数就更简单了,直接产生随机数让两个数随机乘-1,
分数比较麻烦,要产生四个随机数,在有除法的情况下,其中3个数不能为0,输出也得和整数分开,所以就写成个函数,把主函数里的输出修改一下放进去了,
然后再主函数里调用就行了。基本就是这些情况吧,忘记写打印格式了。。。一开始想的挺简单,后来才发现根本完成不了,唉。。。
时间记录日志
| 日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 | 
| 3/13 | 10:10 | 11:30 | 10 | 80 | 听课 | 软件工程概论 | 
| 
 | 11:30 | 12:00 | 
 | 30 | 构思 | 四则运算2 | 
| 
 | 13:10 | 14:04 | 
 | 54 | 写博客 | 最初思路 | 
| 3/18 | 19:00 | 22:38 | 
 | 218 | 编程 | 
 | 
| 3/19 | 16:40 | 17:15 | 
 | 35 | 写博客 | 最后总结 | 
标签:
原文地址:http://www.cnblogs.com/xiaowumao/p/4351041.html