四则运算二

一 设计思路

    将两个随机数字存入数组中,将四中运算符号存入数组中,利用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++完全荒度了),是我对于编程有了那么一丢丢的信心。

posted on 2015-03-14 20:33  shishi1993  阅读(161)  评论(0编辑  收藏  举报