zoukankan      html  css  js  c++  java
  • 四则运算2

    一、要求:

      1、题目避免重复;

      2、可定制(数量、打印方式);

      3、可以控制下列参数:

        (1)是否有乘除法;

        (2)是否有括号;

        (3)数值范围;

        (4)加减有无负数;

        (5)除法有无余数。

    二、设计思想:

      1、题目避免重复,可用函数srand(time(NULL))解决。

      2、定制出题数目,可以设置变量来控制数目。

      3、数值范围,可以在产生随机数中确定两个运算数的范围。

      4、选择是否有乘除法、是否有括号、是否有负数、是否有余数,都可以通过switch语句来实现。

    三、源程序代码:

    #include <iostream>
    #include "stdlib.h"
    #include <time.h>
    using namespace std;
    
    int main()
    {
        srand(time(NULL)); //题目避免重复
        int x1, x2, flag, i, j;
        int a[10];
    
        cout << "********小学生四则运算出题系统********\n\n" ;
        cout << "请输入出题数目:";
        cin >> a[0];
        cout << "请输入运算数的范围:";        
        cin >> a[1];
        cout << "请选择是否有乘除法(0.无乘除法;1.有乘除法):";
        cin >> a[2];
        cout << "请选择是否有括号(0.无括号;1.有括号):";
        cin >> a[3];
        cout << "请选择结果有无负数(0.无负数;1.有负数):";
        cin >> a[4];
        cout << "请选择结果有无余数(0.无余数;1.有余数):";
        cin >> a[5];
    
        for (i = 0; i<a[0]; i++)
        {
            switch (a[2])
            {
            case 1:j = rand() % 4; break;  //有乘除法
            case 0:j = rand() % 2; break;  //无乘除法
            }
            x1 = rand() % a[1] + 1;
            x2 = rand() % a[1] + 1;
    
            if (j == 0)                        //加法运算部分
            {
                switch (a[3])
                {
                case 0://无括号
                    cout << x1 << "+" << x2 << "=" << endl;
                    break;
                case 1://有括号
                    cout << "(" << x1 << "+" << x2 << ")=" << endl;
                    break;
                }
            }
            if (j == 1)                        //减法运算部分
            {
                switch (a[4])
                {
                case 1:                        //结果可有负数
                    break;
                case 0:                        //结果无负数
                    if (x1<x2)                //如果被减数比减数小则交换
                    {
                        flag = x1;
                        x1 = x2;
                        x2 = flag;
                    }
                    break;
                }
                switch (a[3])
                {
                case 0:
                    cout << x1 << "-" << x2 << "=" << endl;
                    break;
                case 1:
                    cout << "(" << x1 << "-" << x2 << ")=" << endl; 
                    break;
                }
            }
            if (j == 2)                        //乘法运算部分
                switch (a[3])
                {
                case 0:
                    cout << x1 << "*" << x2 << "=" << endl;
                    break;
                case 1:
                    cout << "(" << x1 << "*" << x2 << ")=" << endl;
                    break;
                }
            if (j == 3)                        //除法运算部分
            {
                switch (a[5])
                {
                case 1:                                //结果可有余数
                    break;
                case 0:                                //结果无余数
                    while (x1%x2 != 0)                //如果不能整除,则重新生成
                    {
                        x1 = rand() % a[1] + 1;
                        x2 = rand() % a[1] + 1;
                    };
                    break;
                }
                switch (a[3])
                {
                case 0:
                    cout << x1 << "/" << x2 << "=" << endl;
                    break;
                case 1:
                    cout << "(" << x1 << "/" << x2 << ")=" << endl;
                    break;
                }
            }
        }
        return 0;
    }

    四、运行结果截图:

         

      

    五、项目计划日志:

              周活动总结表

    姓名:张莹荧                         日期:2016-03-12

    日期/任务    听课     编写程序    阅读课本   准备考试                        日总计  
    周日3.6   60 120 120     300
    周一 300 30 30 120     480
    周二 300 30 30  120     453
    周三 200 180   180     560
    周四 300     120     420
    周五 100 180 30       310
    周六              
    周总结 1200 480 210 660     2550

    阶段时间和效率                 周数:1

    不包括上一周在内的累计时间

    总计                     
    平均              
    最大              
    最小              

    以前各周的累计时间

    总计 1200 480 210 660       2550
    平均 1200 480 210 660     2550
    最大 1200 480 210 660     2550
    最小 1200 480 210 660     2550

    六、时间记录日志:

      学生:张莹荧                            日期:2016-03-12

      教师:王建民                            课程: PSP  

    日期 开始时间 结束时间 中断时间 净时间 活动 备注
    3.8

    14:30

    15:00

    15:00

    15:30

    0

    0

    30

    30

    编程

    阅读课本

     
    3.9 14:30 17:40 10 180 编程 中间上网、休息
    3.10

    8:00

    14:00

    12:00

    15:50

    40

    10

    200

    100

    上课 课间休息
    3.11

    14:30

    19:00

    17:40

    19:30

    10

    0

    180

    30

    编程

    阅读课本

    中间休息

    七、缺陷记录日志:

      学生:  张莹荧                                                          

      日期: 2016-03-12 

      教员:  王建民                                                                           

      程序号:  1  

    日期 编号 类型 引入阶段 排除阶段 修复时间 修复缺陷
    3.8 1 范围 设计 编译 10min  
    描述:随机数范围输入时,出现错误。
    3.9 2 循环 编码 编译 5min  
    描述:在打印题目时,循环打印出现问题。
    3.10 3 余数 编码 编译 5min  
    描述:在选择有无余数时,不能出现有余数的式子。
    3.11 4 整合 编码 编译 5min  
    描述:使用switch语句来进行各项的选择时没整和好。
  • 相关阅读:
    ASP.NET MVC 5
    Web Components是不是Web的未来
    如何选择高性价比的控件产品
    ASP.NET MVC 5
    ubuntu系统安装
    Ubuntu linux安装完成后隐藏linux磁盘挂载点
    win10 查看本机的激活秘钥
    windows cmd下列出当前目录下的所有文件
    error LNK2005: “找到一个或多个多重定义的符号” 已经在 xxxx.obj 中定义 的解决方法
    架构设计:负载均衡层设计方案(3)——Nginx进阶
  • 原文地址:https://www.cnblogs.com/zhyying/p/5267119.html
Copyright © 2011-2022 走看看