• 四则运算(二)


    一、题目及题目要求:编写程序,随机输出小学四则运算题目。

    1.避免出题重复

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

    3.实现控制下列参数:是否有乘除法、是否有括号、数值范围、加减有无负号、除法有无余数、是否支持分数(真分数、假分数)、是否支持小数(精确到多少位)、打印中每行的间隔可以调整。

    二、设计思路

        避免出题重复:利用srand函数,让随机数每次产生的不一样。

        可定制:通过对数量的键入,在for循环中使循环次数小于键入值。

        是否有乘除法:条件判断,用条件约束输出中符号的随机情况。

        数值范围:在产生随机数时通过键入控制模,从而使运算数不超过此范围。

        加减有无负号:判断两操作数,第一操作数若比第二操作数小则此次循环作废,重复循环。

        除法有无余数:判断第一操作数模第二操作数的结果,若为0即可输出。

    三、代码

    #include<iostream.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {  
        srand(time(NULL)); 
        int sm;              //sm 即题目的数量
        char cc;             //cc 即算式中有无乘除
        char ys;             //ys即有无余数
        int sz;              //sz 即数值取值范围
        char zf;             //zf即加法运算出不出现正负
        char fh;             //fh即四则运算中的加减乘除
        int ls;              //ls即输出的列数
        cout<<"请输入您需要的题目数目:   ";
        cin>>sm;
        cout<<"运算中需要乘除法吗?(y/n)";
        cin>>cc;
        if(cc=='y')
        {
            cout<<"除法中需要出现余数吗?(y/n)";
            cin>>ys;
        }
        cout<<"请输入运算数的最大取值范围:";
        cin>>sz;
        cout<<"减法中出现负数吗?(y/n)";
        cin>>zf;
        cout<<"您想输出几列?";
        cin>>ls;
        cout<<"***********************************************"<<endl;
        for(int i=0;i<sm;i++)          //for循环中用sm来控制循环次数
        {   
            int a=rand()%sz;     
            int b=rand()%sz; 
            int c;
            if(cc=='y')                //此处判断用不用到乘除法
                c=rand()%4;   
            else if(cc=='n')
                c=rand()%2;
            if(c==0)                   //此处判断运算符号
            {           
                fh='+';   
            }     
            if(c==1)   
            {           
                fh='-';   
            }  
            if(c==2)   
            {           
                fh='*';   
            }    
            if(c==3)   
            {           
                fh='/';   
            }
            if(c==3&&b==0)            //除数不能为0
            {
                i--;
                continue;
            }
            if(c==1&&zf=='n'&&a<b)     //减法结果不为负数
            {
                i--;
                continue;
            }
            if(c==3&&ys=='n'&&a%b!=0)  //除法结果不产生余数
            {
                i--;
                continue;
            }
            cout<<i+1<<""<<a<<fh<<b<<'='<<"         ";
            if((i+1)%ls==0)            //控制输出的列数
            {
                cout<<endl;
            }
        }
        cout<<"***********************************************"<<endl;
        return 0;
    }

    四、运行截图

    五、总结

        这次实验是在上一次实验的基础上的一个提升,在编程过程中遇到了很多问题和错误,最后也能自己找出来并改正。真的感觉很久没有这么用力的去写这么多代码了,有找到了那种编出一段代码,发现一个错误后的激动心情。

    六、周活动总结表

    姓名:范德一                        日期2015.3.15

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

    周二

    100 30 10       140

    周三

      30         30

    周四

    100 60 10       170

    周五

      30         30

    周六

      30         30

    周日

      120         120

    周总结

    200 300 20       520

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

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

    总计

     200

     300

     20

     

     

     

     520

    平均

     200

     300

     20

     

     

     

     520

    最大

     200

     300

     20

     

     

     

     520

    最小

     200

     300

     20

     

     

     

     520

     以前各周的累计时间      

    总计

     200

     300

      20

     

     

     

     520

    平均

     200

    300

      20

     

     

     

     520

    最大

     200

    300

     20

     

     

     

     520

    最小

     200

    300

      20

     

     

     

     520

    二、时间记录表:

    学生        范德一                                            日期   2015315 

    教师        王建民                                             课程        软件工程      

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

     3.10

     22:15

     22:45

     无

    30

    编写程序 

    作业 

     3.11

    22:00

    22:30

     无

    30

    编写程序

    作业

     3.12

    21:30

    22:30

    60

    编写程序

    作业

    3.13

    21:15

    21:45

    30

    编写程序

    作业

     3.14

    22:10

    22:40

     无

    30

    编写程序

     作业

     3.15

     9:00

     11:00

     无

     120

     编写程序

     作业

     

    三、缺陷记录日志:

    学生           范德一       

    日期     2015315 

    教员          王建民         

    程序号                         

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

     3.10

     1

     A

    编译

    编译

    3min

     

     在cc==‘n’时,n没有用单引号引上

     3.12

     2

    A

    编译

     编译

    5min

     

     让程序中的for循环继续运行用的break而不是 continue

     3.12

     3

    B

    运行

    运行后

    10min

     

     一次循环不成立后继续运行for循环,忘记了i--

     3.15

    4

    A

    编译

    编译

    1min

     

    漏掉;

    3.15

    5

    B

    运行

    运行后

    10min

     

    判断除法没有余数时 if(c==3&&ys=='n'&&a%b!=0),落下了c==3这个条件

  • 相关阅读:
    免费证书Let’s Encrypt
    kubernetes中使用ServiceAccount创建kubectl config 文件
    kubectl alias auto complete
    kubernetes dashboard permission errors
    du 与df 统计系统磁盘不一致原因与解决方法
    大访问量、高并发网站优化
    React的Sass配置
    转:Zepto的使用以及注意事项
    转: zepto的使用方法
    Extjs4 修改combox中store的数据
  • 原文地址:https://www.cnblogs.com/fan123/p/4339590.html
Copyright © 2020-2023  润新知