四则运算2

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

(二)设计思路:

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

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

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

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

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

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

(三)代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#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

缺陷表                                          :

 

posted on   与诚  阅读(169)  评论(1编辑  收藏  举报
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示