• 四则运算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语句来进行各项的选择时没整和好。
  • 相关阅读:
    linux超级终端minicom的使用方法
    linux常用命令
    chmod 777 修改权限
    linux mount挂载设备(u盘,光盘,iso等 )使用说明
    logcat的调试 比较有用的几个命令
    git分支
    Debug和Release区别
    【Linux】linux常用基本命令
    Git代码仓库的建立流程
    Linux记录-JMX监控Tomcat上传到falcon
  • 原文地址:https://www.cnblogs.com/zhyying/p/5267119.html
Copyright © 2020-2023  润新知