• 四则运算2


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

    (二)设计思路:

        避免出题重复:利用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;
    }
    

    (四)实验截图:

    (五)实验总结:每次在debug的时候总是心惊胆战的,总是在想自己到底是哪里错了,就像面对生气的女朋友一样,哈哈。不过每次查出错误修改之后能够成功运行的感觉真的特别棒,希望自己能够时时回顾过去的基础,更加细心。总之,遇到的困难都需要自己一点一点去解决,好好坚持吧。

    (六)时间表(min):

    时间记录表:

    日期与任务 听课 阅读 编程 每日合计
    周一 100 20 60 180
    周二 0 10 30 40
    周三 0 10 30 40
    周四 100 20 60 180
    周五 0 10 0 10
    周六 0 30 60 90
    周日 0 30 60 90
    合计 200 130 300 630

    缺陷表                                          :

  • 相关阅读:
    带你正确的使用List的retainAll方法求交集
    Java URL
    如何正确的创建线程
    小贾漫谈——Java反射
    二、定时器的应用
    网络获取json数据并解析
    异步消息处理机制Handler
    手机安全卫士——Splash总结
    click事件触发也有失灵的时候?
    一张图看透微信公众号、企业号、小程序
  • 原文地址:https://www.cnblogs.com/dgj1314/p/5269561.html
Copyright © 2020-2023  润新知