• 四则运算二


    一 设计思路

        将两个随机数字存入数组中,将四中运算符号存入数组中,利用rand()函数随机产生数字和符号,利用switch语句根据用户的需要选择输出四则运算。

        (1)不重复

               利用srand(time(NULL));可以是rand()产生的数不重复

        (2)可定制

               可以通过for循环输出一定的题目,通过求余判断是否换行

        (3)范围

              通过改变rand()%后面的数字来确定范围

        (4)有无乘除

              将四种运算存入数组中,使用switch判断是否有乘除

        (5)是否有负数

                比较两个数与0的大小,选择输出是否带括号

    二 实验源程序

       

    #include <iostream.h>

    #include <string.h>

    #include <stdlib.h>

    #include<time.h>

    int main()

    {

        using namespace std;

        srand(time(NULL));                               //使随机数不重复

        int num[100];                                    //数组num存放所有的用户选择

        cout<<"输入最大范围:";

        cin>>num[7];

        cout<<"输出多少道题:";

        cin>>num[5];

        cout<<"打印几列:";

        cin>>num[6];

        cout<<"是否有乘除法(0表示有,1表示没有):";

        cin>>num[3];

        switch(num[3])

        {

            case 0:

            for(int i=0;i<num[5];i++)                                 //循环输出题目个数

            {

                num[0]=rand()%num[7];

                num[1]=rand()%num[7];

                string str1[4]={"+","-","*","%"};

                int a=rand()%4;

                if((i+1)%num[6]==0)

                {

                    cout<<num[0]<<str1[a]<<num[5]<<"="<<endl;               //如果符合要求则换行

                }

                else

                {

                    cout<<num[0]<<str1[a]<<num[5]<<"="<<"       ";          //否则继续在同一行输出

                }

            }

            break;

            case 1:

            cout<<"加减有无负数(0表示有,1表示没有):";

            cin>>num[4];

                switch(num[4])

                {

                    case 0:

                    for(int i=0;i<num[5];i++)

                    {

                       int c=-rand()%101+25;                            //随机产生负数赋予c

                       int d=-rand()%101+25;                            //随机产生负数赋予d

                       string str2[2]={"+","-"};                        //只在加减之中选择输出

                       int b=rand()%2;

                       if(c<0&&d>=0)                                     //if语句判断有无负数

                      {

                        if((i+1)%num[6]==0)

                         {

                            cout<<"("<<c<<")"<<str2[b]<<d<<"="<<endl;

                         }

                            else

                        {

                           cout<<"("<<c<<")"<<str2[b]<<d<<"="<<"       ";

                        }

                     }

                    else if(c>=0&&d<0)

                    {

                         if((i+1)%num[6]==0)

                         {

                            cout<<c<<str2[b]<<"("<<d<<")"<<"="<<endl;

                         }

                         else

                         {

                            cout<<c<<str2[b]<<"("<<d<<")"<<"="<<"       ";

                         }

                    }

                    else if(c<0&&d<0)

                    {

                         if((i+1)%num[6]==0)

                         {

                            cout<<"("<<c<<")"<<str2[b]<<"("<<d<<")"<<"="<<endl;

                         }

                         else

                         {

                            cout<<"("<<c<<")"<<str2[b]<<"("<<d<<")"<<"="<<"       ";

                         }

                    }

                    else

                    {

                        if((i+1)%num[6]==0)

                     {

                        cout<<c<<str2[b]<<d<<"="<<endl;

                     }

                        else

                     {

                        cout<<c<<str2[b]<<d<<"="<<"       ";

                     }

                    }

                    }

                    break;

                    case 1:                                   //无负数则直接输出

                         for(int i=0;i<num[5];i++)

                         {

                         int c=-rand()%101+25;

                         int d=-rand()%101+25;

                         string str2[2]={"+","-"};

                         int b=rand()%2;

                         if((i+1)%num[6]==0)

                         {

                             cout<<num[0]<<str2[b]<<num[1]<<"="<<endl;

                         }

                         else

                         {

                            cout<<num[0]<<str2[b]<<num[1]<<"="<<"       ";

                         }

                         }

        }

    }

    }

    三 实验截图

       

    首先输入最大范围100

    然后输入30道题

    打印四列

    选择有乘除

    选择无乘除法

    选择有负数

    四、PSP0级 记录表

    项目计划总结:

    周活动总结表

    姓名:石鹤                           日期:15/3/14

    日期       任务

    听课

    编写程序

    阅读课本

    准备考试

     

     

    日总计

    周日

     

     

     

     

     

     

     

    周一

     

     

     

     

     

     

     

    周二

     290

     

     20

     

     

     

     310

    周三

     100

     70

     30

     

     

     

     200

    周四

     210

     100

     5

     

     

     

     315

    周五

     200

     40

     30

     

     

     

     270

    周六

     

     43

     10

     

     

     

     53

    周总结

     800

     253

     95

     

     

     

     1148

                          阶段时间和效率                   周数(上一次周活动表的周数+1):1

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

    总计

     

     

     

     

     

     

     

    平均

     

     

     

     

     

     

     

    最大

     

     

     

     

     

     

     

    最小

     

     

     

     

     

     

     

                                                                       以前各周的累计时间                                                                                    

    总计

    800

    253

    95

     

     

     

    1148

    平均

     800

    253 

    95 

     

     

     

    1148

    最大

    800 

    253

    95 

     

     

     

    1148

    最小

    800 

    253

    95 

     

     

     

    1148

    时间记录表:

                                                                     学生         石鹤                                             日期        15/3/14    

                                                                     教师        王建民                                            课程           PSP       

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

     15/3/11

     8:00

     9:50

     10

     100

    上计算机网络课

     

     16:20

    16:50 

     30

    看高数

     

     

    17: 44

     18:37

     20

     33

    编写四则运算程序 

     

     23:00

    23:37 

     37

     编写四则运算程序

     

     3/12

    10:10

    12:00

    10

    100

    上计算机接口技术课

     

     

    14:00

    15:50

    10

    100

    上嵌入式开发技术课

     

     

     16:50

     17:50

     60

     背英语

     

     

     22:35

     23:30

     55

     看操作系统

     

    3/13

    8:00

    12:00

    40

    200

    上课 软件工程

    操作系统

     

     

    21:00

    23:00

    20

    100

    编写四则运算

     

    3/14

    12:12

    12:55

     

    43

    排查代码错误

     


    缺陷记录日志:
     

    学生       石鹤

    日期        3/14    

    教员       王建民   

    程序号        2      

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

     15/3/11

     1

     

     编码

    执行 

     10min

     

     描述:case后忘了加空格了

     3/12

     2

     

     编码

     执行

     15min

     

     描述:最后忘了一个右括号

     3/13

     3

     

     编码

     执行

     15min

     

     描述:i未定义

     3/14

     4

     

     编码

    编译 

     10min

     

     描述:数组空间分配不当

    五、心得体会

         本次实验对我最大的帮助是使我能够静下心来进行编程,虽然程序变得比较粗糙,一些基本的错误也常犯,比如include前把#忘了,比如打括号总是不左右一起打,程序短没有问题,程序一长就开始出现错误了,而且还很难找,都是大一不动手留下的坏毛病,学到了如何用rand()函数随机产生负数,加深了对c++的印象(虽然本来也没什么印象,因为大一c++完全荒度了),是我对于编程有了那么一丢丢的信心。

  • 相关阅读:
    优化你的手机游戏
    vuforia 结合 unity3d 开发 AR 的 androidAPP 总结
    self._raiseerror(v) File "D:GameDevelopmentPython27libxmletreeElementTree.py", line 1506, in _raiseerror
    自定义TexturePacker插件导出自己的plist文件
    还原TexturePacker plist 文件以及图片的方法 (切开各小图片)
    no module named firefly.master.master
    c#比较器 排序
    python ——面向对象进阶(反射,双下线方法,静态方法,类方法)
    python——模块和包 需要注意的地方
    举例详解Python中的split()函数的使用方法
  • 原文地址:https://www.cnblogs.com/shishi1993-/p/4338215.html
Copyright © 2020-2023  润新知