四则运算2


一、实验要求:

  在四则运算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语句来进行各项的选择时没整和好。
优质内容筛选与推荐>>
1、Day2:模块初识
2、VMware ------ 共享文件夹
3、我的开发助手之时间线控件
4、Java 汉子转拼音
5、Android-------设置TextView同时显示图片和文本,并控制图片大小


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号