个人项目——二柱子程序升级版

更高要求的程序

一、程序要求

1、题目避免重复;

2、可定制(数量/打印方式);    

3、可控制下列参数:

     是否有乘除法;

     是否有括号(最多可以支持十个数参与计算);

     数值范围;

     加减有无负数;

     除法有无余数;

二、程序设计思想

1、在上次程序的基础之上添加要求;

2、使用时间做种子产生随机数,每次运行题目不重复;

3、在程序中输入题目数量,可随意更改;

4、添加参数,控制是否有乘除法,可任意选择;

5、添加参数,控制数值范围,可任意选择;

6、添加参数,控制减法有无负数,可任意选择;

7、添加参数,控制除法有无余数,可任意选择;

三、源程序

//李俏,2016.3.7
//随机生成四则运算

#include<iostream> 
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
using namespace std;

int main()
{
    int first,second,firstm,secondm;
    int sign,i,j;
    int num,chengchu,fushu,yushu,fanwei;
     
    cout<<"请输入题目数量:";
    cin>>num;
    if(num==0)
    {
        exit(1);
    }

    cout<<"是否有乘除法?1.是,2.否:";
    cin>>chengchu;

    if(chengchu==1)
    {
        cout<<"除法是否有余数?1.是,2.否:";
        cin>>yushu;
    }

    cout<<"减法是否有负数?1.是,2.否:";
    cin>>fushu;

    cout<<"请输入数值范围:";
    cin>>fanwei;

    srand((int)time(NULL)); //用时间做种子,每次产生随机数都不一样

    for(i=0;i<num;i++)
    {
        j=rand()%2;        //选择生成整数运算还是分数运算

        if(j==0)           //选择整数
        {
            first=rand()%(fanwei+1);
            second=rand()%(fanwei+1);
            if(chengchu==1)
            {
                sign=rand()%4; 
            }
            else
            {
                sign=rand()%2;
            }
            switch(sign)
            {
            case 0:                      //整数加法
                cout<<first<<"+"<<second<<"="<<endl;
                break;
            case 1:                      //整数减法
                if(fushu==1)
                {
                    cout<<first<<"-"<<second<<"="<<endl;
                }
                else
                {
                    if(first>second)
                    {
                        cout<<first<<"-"<<second<<"="<<endl;
                    }
                    else
                    {
                        cout<<second<<"-"<<first<<"="<<endl;
                    }
                }
                break;
            case 2:                   //整数乘法
                cout<<first<<"*"<<second<<"="<<endl;
                break; 
            case 3:                   //整数除法
                if(yushu==1)
                {
                    if(second!=0)
                    {
                        cout<<first<<"/"<<second<<"="<<endl;
                    }
                    else
                    {
                        i=i-1;
                    }
                }
                else
                {
                    if(second!=0&&(first%second==0))
                    {
                        cout<<first<<"/"<<second<<"="<<endl;
                    }
                    else
                    {
                        i=i-1;
                    }
                }
                break;
            }
        }

        else              //选择分数
        {
            first=rand()%(fanwei+1);            
second
=rand()%(fanwei+1);//分子 firstm=rand()%(fanwei+1); secondm=rand()%(fanwei+1);//分母 if(chengchu==1) { sign=rand()%4; } else { sign=rand()%2; } switch(sign) { case 0: //分数加法 if(firstm!=0&&secondm!=0&&first<firstm&&second<secondm) { cout<<first<<"/"<<firstm<<" + "<<second<<"/"<<secondm<<"="<<endl; } else { i=i-1; } break; case 1: //分数减法 if(fushu==1) { if(firstm!=0&&secondm!=0&&first<firstm&&second<secondm) { cout<<first<<"/"<<firstm<<" - "<<second<<"/"<<secondm<<"="<<endl; } else { i=i-1; } } else { if(firstm!=0&&secondm!=0&&first<firstm&&second<secondm&&(first/firstm)>(second/secondm)) { cout<<first<<"/"<<firstm<<" - "<<second<<"/"<<secondm<<"="<<endl; } else { i=i-1; } } break; case 2: //分数乘法 if(firstm!=0&&secondm!=0&&first<firstm&&second<secondm) { cout<<first<<"/"<<firstm<<" * "<<second<<"/"<<secondm<<"="<<endl; } else { i=i-1; } break; case 3: //分数除法 if(firstm!=0&&secondm!=0&&first!=0&&second!=0&&first<firstm&&second<secondm) { cout<<first<<"/"<<firstm<<" / "<<second<<"/"<<secondm<<"="<<endl; } else { i=i-1; } break; } } }

return 0; }

四、结果截图

五、项目计划日志

周活动总结表  

姓名:李俏           日期:2016年3月12日

日期   任务 听课  编写程序 阅读课本 准备考试     日总计

周一

120 60 30       210

周二

    30       30

周三

    30       30

周四

120 60 30       210

周五

    30       30

周六

  180  30       210

周总结

240 300

180

      720

 

 

 

 

 

 

 

 

 

 

阶段时间和效率                            周数:1

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

总计

 240

300 

180

 

 

 

 720

平均

 240

 300

180

 

 

 

 720

最大

240

 300

 180

 

 

 

 720

最小

240

 300

 180

 

 

 

 720

 

 

 

 

 

 

以前各周的累计时间      

总计

 

 

  

 

 

 

 

平均

 

 

  

 

 

 

 

最大

 

 

 

 

 

 

 

最小

 

 

 

 

 

 

 

 

 

 

 

 

 

六、时间记录表:

学生:       李 俏                              日期 :2016年3月12日 

教师:      王建民                              课程 :软件工程      

日期

开始时间

结束时间

中断时间

净时间

活动

备注

 3.7

 16:30

 17:30

 无

60

编写程序 

作业 

 

20:00

20:30

 无

30

阅读

作业

 3.8

20:10

20:40

30

阅读

作业

 3.9

20:00

20:40

 10min

 30

 wc

 

3.10

18:50

19:50

60

编写程序

作业

 

20:00

 20:30

 无

 30

 阅读

 作业

 3.11

21:10

21:40

 无

30

阅读

 作业

 3.12

11:00

 14:30

 30min

 180

 编写程序

 作业

 

 

 

 

 

 

 

 

 

 

 

 

 

 

七、缺陷记录日志:

学生        李俏    

日期     2016312 

教员          王建民       

程序号                         

日期

编号

类型

引入阶段

排除阶段

修复时间

修复缺陷

 3.7

 1

 20

编码

编译

5min

 

描述:初次添加参数控制,控制语句放置错误

 3.10

 2

20

编码

 编译

10min

 

 描述:if...else...语句没有加大括号,导致层次不分明

 3.12

 3

40

运行

运行后

10min

 

描述:错删break,题目数目不对

 3.15

4

A

编译

编译

1min

 

描述:条件不成立时, 写成i=i+1,应该是i=i-i

原文地址:https://www.cnblogs.com/Aliqiao/p/5266299.html