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语句来进行各项的选择时没整和好。
  • 相关阅读:
    vue2.5.2 在ie11打开空白的解决方法
    小程序自定义组件中observer函数的应用
    小程序将一个完整项目导入,报错ENOENT: no such file or directory(game.json)
    企业微信应用开发前准备
    jquery转盘抽奖游戏
    小程序路由跳转携带参数方法(直接跳转、事件委托跳转)
    小程序定义并使用模板template
    小程序真机预览,提示“音乐文件错误,播放失败”
    Java反编译
    DataX
  • 原文地址:https://www.cnblogs.com/zhyying/p/5267119.html
Copyright © 2011-2022 走看看