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

更高要求的程序

一、程序要求

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日

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

周一

1206030   210

周二

  30   30

周三

  30   30

周四

1206030   210

周五

  30   30

周六

 180 30   210

周总结

240300

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值