标签:
一,问题描述:
要求:
1、题目避免重复
2、可定制(数量/打印方式)
3、可以控制下列参数:是否有乘除法,是否有括号,数值范围,加减有无负数,除法有无余数,是否支持分数(真分数假分数),
是否支持小数(精确到多少位),打印中每行的间隔。
二,设计思路
1,题目避免重复:
采用srand(time(NULL))实现
2,可定制:
a)定制数量:定义变量n,用户可以自己设置
b)打印方式:可以自己选择每行可以打印几个
3,可控制参数:
a)是否支持乘除:编写了两个函数,一个有乘除,一个没有乘除,在主函数里设置判断语句用户自己选择,然后调用相应的函数。
b)加减有无负数:设置判断语句,有负数为0,无负数为1.
c)除法有无余数:在有乘除的函数里设置条件语句,0为有余数,1为无余数,如果用户选择与随机产生的不一致,则再随机取一个被除数。
d)打印中每行的间隔:只要再换行时用一个循环语句,循环输出endl即可
三,缺陷及问题
由于能力有限是否有括号,是否支持分数,是否支持小数等功能没有实现
四,代码部分
#include<iostream.h> #include<stdlib.h> #include<time.h> void zccc() { int a,b,c; //两位操作数和一位操作符 int e; srand(time(NULL)); int n;//输出题目数目 int x;//取值范围 int f;//加减有无负数 int l;//用来输入行间距 int y;//除法有无余数 cout<<"需要列出多少道数学题?"<<endl; cin>>n; cout<<"请规定数值取值范围"<<endl; cin>>x; cout<<"加减有无负数?(0代表有负数,1代表无负数)"<<endl; cin>>f; cout<<"除法有无余数?(0代表有余数,1代表无余数)"<<endl; cin>>y; cout<<"每行需要打印几个算数题?"<<endl; cin>>e; cout<<"打印时行间距是多少?"<<endl; cin>>l; cout<<"********************************"<<endl; for(int i=0;i<n;i++) { a=rand()%x; b=rand()%x; c=rand()%4; if(c==0) cout<<a<<"+"<<b<<"="<<" "; if(c==1){ if(f==1) { if(a<b) cout<<b<<"-"<<a<<"="<<" "; else { cout<<a<<"-"<<b<<"="<<" "; } } else if(f==0) { cout<<a<<"-"<<b<<"="<<" "; } } if(c==2) cout<<a<<"*"<<b<<"="<<" "; if(c==3){ if(b!=0) { while((y==1)&&(a%b)!=0) { a=rand()%100; } cout<<a<<"/"<<b<<"="<<" "; } else { i=i-1; } } if((i+1)%e==0) { for(int d=0;d<=l;d++) { cout<<endl; } } if((i+1)==n) { cout<<endl; } } } void bzccc() { int e;//输入每行算数题的个数 int a,b,c; //两位操作数和一位操作符 srand(time(NULL)); int n;//输出题目数目 int x;//取值范围 int f;//加减有无负数 int l;//用来输入行间距 cout<<"需要列出多少道数学题"<<endl; cin>>n; cout<<"请规定数值取值范围"<<endl; cin>>x; cout<<"加减有无负数?(0代表有负数,1代表无负数)"<<endl; cin>>f; cout<<"每行需要打印几个算数题?"<<endl; cin>>e; cout<<"打印时行间距是多少?"<<endl; cin>>l; cout<<"********************************"<<endl; for(int i=0;i<n;i++) { a=rand()%x; b=rand()%x; c=rand()%2; if(c==0) cout<<"、 "<<a<<"+"<<b<<"="<<" "; if(c==1){ if(f==1) { if(a<b) cout<<b<<"-"<<a<<"="<<" "; else { cout<<a<<"-"<<b<<"="<<" "; } } else if(f==0) { cout<<a<<"-"<<b<<"="<<" "; } } if((i+1)%e==0) { for(int d=0;d<=l;d++) { cout<<endl; } } if((i+1)==n) { cout<<endl; } } } int main() { char ch; cout<<"是否支持乘除?(Y/N)"<<endl; cin>>ch; if(ch==‘Y‘||ch==‘y‘) { zccc(); cout<<"********************************"<<endl; } else if(ch==‘N‘||ch==‘n‘) { bzccc(); cout<<"********************************"<<endl; } return 0; }
五,截图
六,实验总结
通过本次实验又学到了一些对于我来说新的知识,比如srand(time(NULL)),避免重复最开始想到的是最笨的思路,但是思路越简单实现就 越难,自己没办法实现,后来了解到可以用srand()实现,又积累了一些编程知识,由于个人编程基础不足,所以部分功能没有实现,通过以后的学习还会回 来慢慢改进该程序。
标签:
原文地址:http://www.cnblogs.com/liuwei8882/p/5268564.html