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语句来进行各项的选择时没整和好。
  • 相关阅读:
    请朋友做事,须以名誉为限,为朋友做事,亦须以名誉为限
    这世上总有一些人记得你,关注着你,牵挂着你
    杏花春雨已不再,牧童遥指已不再,剑门细雨渭城轻尘也都已不再
    如果要你做鲁滨逊,你会选第三型还是第二型的朋友做“礼拜五”呢
    人类最不能伤害的就是自尊
    单靠理论和教训是无济于事的
    交真朋友已是件比较奢侈的事儿
    他一定是一个懂生活、懂人生,爱自己、爱别人的人
    国子监,就是从前的大学
    只有把理想和现实有机结合起来,才有可能成为一个成功之人
  • 原文地址:https://www.cnblogs.com/zhyying/p/5267119.html
Copyright © 2011-2022 走看看