一、实验要求:
在四则运算1的基础上,又添加了如下要求:
1、题目避免重复
2、可定制(数量打印方式)
3、控制参数:
是否有乘除法
是否有括号(最多可以支持十个数参与计算)
取值范围
加减有无负数
除法有无余数!
二、设计思路:
题目避免重复:引用了srand((int)time(0))(设置时间种子 ,使得程序每次运行的结果都不同),但是无法从根本上解决题目重复的问题。
可定制:通过for循环结构控制题目的数量,可控制打印中每行的间隔和题目数量。
控制参数:可以支持乘除法运算,可以设定取值范围,对于是否有括号的问题(最多可以支持十个数参与运算)还没有解决,对括号的运用不能熟练地掌握。
总结:由于自己编程功底薄弱、编程能力相对较弱,对此次实验要求理解不够深刻,有一些内容要求也没有完成,自己也感到有一定的压力。不管怎么样吧,努力地去做
就好了。希望通过本门课程增强自己的编程能力和对数据结构和算法的理解,课余时间也会做一定的习题练习,希望尽快的提升自己的编程力能和自己的专业技能,以前
没有认真地学习编程,希望以后可以用心地去学,抓紧一切时间来练习,提升自己的编程能力。
三、源程序代码:
1 //四则运算2 2 //胡浩特 2016/3/12 3 4 #include<iostream> 5 using namespace std; 6 7 #include<stdio.h> 8 #include<stdlib.h> 9 #include<time.h> 10 #include<math.h> 11 void main() 12 { 13 srand((int)time(0)); //设置时间种子 ,使得程序每次运行的结果都不同 14 int num0, num1, num2, c; 15 int limit[8]; 16 double num3, num4; 17 18 cout << "输入题目的数量:"; 19 cin >> num0; 20 cout << endl; 21 cout << "输入打印中每行的间隔:"; 22 cin >> limit[0]; 23 cout << endl; 24 cout << "输入打印中每行的题目数:"; 25 cin >> limit[1]; //每次都输入太麻烦了,这个设置一般是一样的,可否改为设置一次即可 26 cout << endl; 27 cout << "输入操作数的数值范围的最小值和最大值:"; 28 cin >> limit[2] >> limit[3]; 29 cout << endl; 30 cout << "是否有乘除法,有输入1,没有输入0:"; 31 cin >> limit[4]; 32 cout << endl; 33 cout << "加减有无负数,有输入1,没有输入0:"; 34 cin >> limit[5]; 35 cout << endl; 36 if (limit[4] == 1) 37 { 38 cout << "除法有无余数,有输入1,没有输入0:"; 39 cin >> limit[6]; 40 cout << endl; 41 } 42 if (limit[4] == 0) 43 { 44 cout << "是否支持小数,有输入1,没有输入0:"; 45 cin >> limit[7]; 46 cout << endl; 47 if (limit[7] == 1) 48 { 49 cout << "若支持小数,精确到多少位:"; 50 cin >> limit[8]; 51 cout << endl; 52 } 53 } 54 for (int i = 0; i<num0; i++) //输出题目的循环 55 { 56 num1 = limit[2] + (int)(limit[3] * rand() / (RAND_MAX + 1.0)); 57 num2 = limit[2] + (int)(limit[3] * rand() / (RAND_MAX + 1.0)); 58 c = 1 + (int)(4 * rand() / (RAND_MAX + 1.0)); 59 if (limit[4] == 1) 60 { 61 if (c % 4 == 0) 62 { 63 if (limit[6] == 1) 64 { 65 if (num1%num2 == 0) 66 cout << "第" << i + 1 << "道:" << num1 << "/" << num2 << "=" << " "; 67 else 68 { 69 while (num1%num2 != 0) 70 { 71 num2 = num2 - num1%num2; 72 } 73 cout << "第" << i + 1 << "道:" << num1 << "/" << num2 << "=" << " "; 74 75 } 76 } 77 } //输出有无余数的除法 78 if (c % 4 == 1) cout << "第" << i + 1 << "道:" << num1 << "+" << num2 << "=" << " "; 79 if (c % 4 == 2) cout << "第" << i + 1 << "道:" << num1 << "-" << num2 << "=" << " "; 80 if (c % 4 == 3) cout << "第" << i + 1 << "道:" << num1 << "*" << num2 << "=" << " "; 81 } //输出有乘除法的题目 82 else 83 { 84 if (limit[7] == 1) 85 { 86 num3 = pow(0.1, limit[8]) + (int)(0.1*rand() / (RAND_MAX + 1.0)) + num1; 87 num4 = pow(0.1, limit[8]) + (int)(0.1*rand() / (RAND_MAX + 1.0)) + num2; 88 } 89 if (limit[5] == 1) 90 { 91 if (c % 2 == 0) cout << "第" << i + 1 << "道:" << pow(-1, i)*num3 << "-" << pow(-1, i + 1)*num4 << "=" << " "; 92 if (c % 2 == 1) cout << "第" << i + 1 << "道:" << pow(-1, i)*num3 << "+" << pow(-1, i + 1)*num4 << "=" << " "; 93 } 94 else 95 { 96 if (c % 2 == 0) cout << "第" << i + 1 << "道:" << num3 << "-" << num4 << "=" << " "; 97 if (c % 2 == 1) cout << "第" << i + 1 << "道:" << num3 << "+" << num4 << "=" << " "; 98 } //输出有无负数的加减 99 } 100 if ((i%limit[1]) + 1 == limit[1]) //每行打印的题目数 101 for (int k = 0; k <= limit[0]; k++) 102 cout << endl; //每行打印的间隔 103 } 104 }
四、实验结果:
五、PSP0级相关日志
(1)项目计划日志
周活动总结表
姓名:胡浩特 日期:2016/3/6-2016/3/12
日期/任务 | 听课 | 编写程序 | 阅读课本 | 准备考试 | 日总计 |
周日 | 60 | 60 | 120 | ||
周一 | 100 | 60 | 160 | ||
周二 | 100 | 100 | |||
周三 | 100 | 60 | 160 | ||
周四 | 100 | 60 | 160 | ||
周五 | 120 | 120 | |||
周六 | 240 | 100 | 340 | ||
周总结 | 200 | 460 | 500 | 1160 |
(2)时间记录日志:
学生:胡浩特 日期:2016-03-12
教师:王建民 课程: PSP
日期 | 开始时间 | 结束时间 | 中断时间 | 净时间 | 活动 | 备注 |
3.7 | 19:00 | 9:30 | 30 | 120 |
构建之法 数据结构 |
|
3.9 |
2:00 4:30 |
4:00 6:00 |
无 无 |
120 90 |
编写程序 阅读 |
|
3.11 |
4:30 7:30 |
6:30 9:30 |
30 15 |
90 105 |
阅读 编写程序 |
|
3.12 |
9:00 2:00 |
11:30 5:30 |
30 30 |
120 180 |
编写程序 撰写博客 |
|
(3)缺陷记录日志:
学生:胡浩特 日期:2016-03-12
教师:王建民 程序号:1
日期 | 编号 | 类型 | 引入阶段 | 排除阶段 | 修复时间 | 修复缺陷 |
3.7 | 1 | 范围 | 设计 | 编译 | 10min | |
描述:随机数范围输入时,出现错误。 | ||||||
3.9 | 2 | 循环 | 编码 | 编译 | 5min | |
描述:在打印题目时,循环打印出现问题。 | ||||||
3.11 | 3 | 余数 | 编码 | 编译 | 5min | |
描述:在选择有无余数时,不能出现有余数的式子。 | ||||||
3.12 | 4 | 整合 | 编码 | 编译 | 5min | |
描述:使用switch语句来进行各项的选择时没整和好。 |