四则运算2
| 日期任务 | 听课 | 编写程序 | 阅读相关书籍 | 网上查找资料 | 日总结 |
| 周一 | 2 | 1 | 1 | 1 | 5 |
| 周二 | |||||
| 周三 | 1 | 1 | |||
| 周四 | 2 | 2 | 2 | 1 | 7 |
| 周五 | 4 | 4 | |||
| 周六 | 2 | 1 | 3 | 6 | |
| 周日 | |||||
| 周总结 | 4 | 10 | 4 | 5 | 23 |
时间记录日志
| 日期 | 开始时间 | 结束时间 | 活动 | 备注 |
| 3/7 | 14:00 | 15:50 | 上课 | 软件工程 |
| 3/9 | 6:00 | 7:00 | 阅读构建之法 | 仔细研读 |
| 3/10 | 14:00 | 21:00 | 上课查阅资料编写程序 | 学习编程四则运算 |
| 3/11 | 6:00 | 10:00 | 网上查询资料 自主编程 | 逐步完成作业作业 |
| 3/12 | 12:00 | 6:00 | 网上查询 自主编程 上传博客 | 完成作业 |
缺陷日志:完成过程中由于水平有限,语法出现问题比较多,大部分代码都有改写,由于马虎造成的问题倒是不多但还是存在以后会慢慢改进。
一,问题描述:
要求:
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()实现,又积累了一些编程知识,由于个人编程基础不足,所以部分功能没有实现,通过以后的学习还会回 来慢慢改进该程序。
浙公网安备 33010602011771号