四则运算二
一 设计思路
将两个随机数字存入数组中,将四中运算符号存入数组中,利用rand()函数随机产生数字和符号,利用switch语句根据用户的需要选择输出四则运算。
(1)不重复
利用srand(time(NULL));可以是rand()产生的数不重复
(2)可定制
可以通过for循环输出一定的题目,通过求余判断是否换行
(3)范围
通过改变rand()%后面的数字来确定范围
(4)有无乘除
将四种运算存入数组中,使用switch判断是否有乘除
(5)是否有负数
比较两个数与0的大小,选择输出是否带括号
二 实验源程序
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
usingnamespacestd;
srand(time(NULL));//使随机数不重复
intnum[100];//数组num存放所有的用户选择
cout<<"输入最大范围:";
cin>>num[7];
cout<<"输出多少道题:";
cin>>num[5];
cout<<"打印几列:";
cin>>num[6];
cout<<"是否有乘除法(0表示有,1表示没有):";
cin>>num[3];
switch(num[3])
{
case0:
for(inti=0;i<num[5];i++)//循环输出题目个数
{
num[0]=rand()%num[7];
num[1]=rand()%num[7];
stringstr1[4]={"+","-","*","%"};
inta=rand()%4;
if((i+1)%num[6]==0)
{
cout<<num[0]<<str1[a]<<num[5]<<"="<<endl;//如果符合要求则换行
}
else
{
cout<<num[0]<<str1[a]<<num[5]<<"="<<"";//否则继续在同一行输出
}
}
break;
case1:
cout<<"加减有无负数(0表示有,1表示没有):";
cin>>num[4];
switch(num[4])
{
case0:
for(inti=0;i<num[5];i++)
{
intc=-rand()%101+25;//随机产生负数赋予c
intd=-rand()%101+25;//随机产生负数赋予d
stringstr2[2]={"+","-"};//只在加减之中选择输出
intb=rand()%2;
if(c<0&&d>=0)//if语句判断有无负数
{
if((i+1)%num[6]==0)
{
cout<<"("<<c<<")"<<str2[b]<<d<<"="<<endl;
}
else
{
cout<<"("<<c<<")"<<str2[b]<<d<<"="<<"";
}
}
elseif(c>=0&&d<0)
{
if((i+1)%num[6]==0)
{
cout<<c<<str2[b]<<"("<<d<<")"<<"="<<endl;
}
else
{
cout<<c<<str2[b]<<"("<<d<<")"<<"="<<"";
}
}
elseif(c<0&&d<0)
{
if((i+1)%num[6]==0)
{
cout<<"("<<c<<")"<<str2[b]<<"("<<d<<")"<<"="<<endl;
}
else
{
cout<<"("<<c<<")"<<str2[b]<<"("<<d<<")"<<"="<<"";
}
}
else
{
if((i+1)%num[6]==0)
{
cout<<c<<str2[b]<<d<<"="<<endl;
}
else
{
cout<<c<<str2[b]<<d<<"="<<"";
}
}
}
break;
case1://无负数则直接输出
for(inti=0;i<num[5];i++)
{
intc=-rand()%101+25;
intd=-rand()%101+25;
stringstr2[2]={"+","-"};
intb=rand()%2;
if((i+1)%num[6]==0)
{
cout<<num[0]<<str2[b]<<num[1]<<"="<<endl;
}
else
{
cout<<num[0]<<str2[b]<<num[1]<<"="<<"";
}
}
}
}
}
三 实验截图
首先输入最大范围100
然后输入30道题
打印四列
选择有乘除
法
选择无乘除法
选择有负数
四、PSP0级 记录表
项目计划总结:
周活动总结表
姓名:石鹤 日期:15/3/14
日期 任务 |
听课 |
编写程序 |
阅读课本 |
准备考试 |
日总计 |
||
周日 |
|||||||
周一 |
|||||||
周二 |
290 |
20 |
310 |
||||
周三 |
100 |
70 |
30 |
200 |
|||
周四 |
210 |
100 |
5 |
315 |
|||
周五 |
200 |
40 |
30 |
270 |
|||
周六 |
43 |
10 |
53 |
||||
周总结 |
800 |
253 |
95 |
1148 |
阶段时间和效率 周数(上一次周活动表的周数+1):1
不包括上一周在内的累计时间
总计 |
|||||||
平均 |
|||||||
最大 |
|||||||
最小 |
以前各周的累计时间
总计 |
800 |
253 |
95 |
1148 |
|||
平均 |
800 |
253 |
95 |
1148 |
|||
最大 |
800 |
253 |
95 |
1148 |
|||
最小 |
800 |
253 |
95 |
1148 |
时间记录表:
学生 石鹤 日期 15/3/14
教师 王建民 课程 PSP
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
15/3/11 |
8:00 |
9:50 |
10 |
100 |
上计算机网络课 |
|
16:20 |
16:50 |
30 |
看高数 |
|||
17: 44 |
18:37 |
20 |
33 |
编写四则运算程序 |
||
23:00 |
23:37 |
37 |
编写四则运算程序 |
|||
3/12 |
10:10 |
12:00 |
10 |
100 |
上计算机接口技术课 |
|
14:00 |
15:50 |
10 |
100 |
上嵌入式开发技术课 |
||
16:50 |
17:50 |
60 |
背英语 |
|||
22:35 |
23:30 |
55 |
看操作系统 |
|||
3/13 |
8:00 |
12:00 |
40 |
200 |
上课 软件工程 操作系统 |
|
21:00 |
23:00 |
20 |
100 |
编写四则运算 |
||
3/14 |
12:12 |
12:55 |
43 |
排查代码错误 |
缺陷记录日志:
学生 石鹤
日期 3/14
教员 王建民
程序号 2
日期 |
编号 |
类型 |
引入阶段 |
排除阶段 |
修复时间 |
修复缺陷 |
15/3/11 |
1 |
编码 |
执行 |
10min |
||
描述:case后忘了加空格了 |
||||||
3/12 |
2 |
编码 |
执行 |
15min |
||
描述:最后忘了一个右括号 |
||||||
3/13 |
3 |
编码 |
执行 |
15min |
||
描述:i未定义 |
||||||
3/14 |
4 |
编码 |
编译 |
10min |
||
描述:数组空间分配不当 |
五、心得体会
本次实验对我最大的帮助是使我能够静下心来进行编程,虽然程序变得比较粗糙,一些基本的错误也常犯,比如include前把#忘了,比如打括号总是不左右一起打,程序短没有问题,程序一长就开始出现错误了,而且还很难找,都是大一不动手留下的坏毛病,学到了如何用rand()函数随机产生负数,加深了对c++的印象(虽然本来也没什么印象,因为大一c++完全荒度了),是我对于编程有了那么一丢丢的信心。
优质内容筛选与推荐>>