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


    更高要求的程序

    一、程序要求

    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

  • 相关阅读:
    mybatis-config.xml详解
    过滤器与拦截器
    Tomcat 部署web 项目
    Tomcat架构
    git stash
    AbstractQueuedSynchronizer 源码解读(转载)
    Kafka 转载
    Oracle数据库TNS详解
    Oracle建表知识全面详解
    Oracle高级教程
  • 原文地址:https://www.cnblogs.com/Aliqiao/p/5266299.html
Copyright © 2020-2023  润新知