zoukankan      html  css  js  c++  java
  • 四则运算2程序及运行

    题目:可怜的二柱子,老师又对他的出题系统提出了新的要求:

    1,题目避免重复;

    2,可定制打印的方式;

    3,可控制下列参数:是否有乘除,是否有括号,数值范围,加减有无负数,乘除有无余数,是否支持分数,打印每行间隔可调整。

    解题思路:

    一,(1)题目避免重复:使用srand(seed)函数进行随机化,随seed的不同,可以产生不同的随机数
    二,(1)控制数量:输入变量num控制
    三,利用调用函数,定义一个能产生加减乘除四则运算的函数;

        (1)控制是否有乘除:(div=0,没有乘除;div=1,有乘除)
        (2)数值范围:数值在10范围rand()%11;数值在50范围 5rand()%11;数值在100范围rand()%101
        (3)是否有括号:kuohao=0,没有括号;kuohao=1,有括号
        (4)加减有无负数:fushu=0,没有负数;fushu=1,有负数
        (5)除法有无余数:yushu=0,没有余数;yushu=1,有余数
        (6)打印每行的间隔:间隔=g,通过g的大小控制间隔
        (7)是否支持分数:fenshu=0,不支持分数;fenshu=1支持分数
        (8)是否支持小数:利用随机函数rand()产生0——1之间的小数

    具体程序:

    #include<iostream.h>
    #include<stdlib.h>//使用随机函数
    #include<time.h>//题目避免重复
    #include<conio.h>
    int x1[100],x2[100],op,i;
    void yunsuan1()
    {
        if(op==0)
            cout<<x1[i]<<"+"<<x2[i]<<"="<<endl;
        if(op==1)
            cout<<x1[i]<<"-"<<x2[i]<<"="<<endl;
        if(op==2)
            cout<<x1[i]<<"*"<<x2[i]<<"="<<endl;
        if(op==3)
            cout<<x1[i]<<"/"<<x2[i]<<"="<<endl;
    }
    void yunsuan2()
    {
        if(op==0)
            cout<<x1[i]<<"+"<<x2[i]<<"="<<"	";
        if(op==1)
            cout<<x1[i]<<"-"<<x2[i]<<"="<<"	";
        if(op==2)
            cout<<x1[i]<<"*"<<x2[i]<<"="<<"	";
        if(op==3)
            cout<<x1[i]<<"/"<<x2[i]<<"="<<"	";
    }
    
    
    int main()
    {
        srand(time(NULL));//题目避免重复
        int num,temp;//题目的数量num
        int fanwei,out,div,fushu,jixu;//数值的范围,输出方式,是否有乘除运算,加减法是否有负数
        cout<<"********欢迎使用小学四则运算定制系统********"<<endl;
        cout<<"本系统支持定制,祝您使用愉快!"<<endl;
        cout<<"请输入题目的数量num:"<<endl;
        cin>>num;
        cout<<"请选择数值范围(0--*)fanwei"<<endl;
        cin>>fanwei;
        cout<<"请选择打印方式out(0,空行打印 1,空格打印)"<<endl;
        cin>>out;
        cout<<"请选择有无乘除运算div(0,没有乘除运算 1,有乘除运算)"<<endl;
        cin>>div;
        cout<<"请选择加减运算有无负数fushu(0,没有负数 1,有负数)"<<endl;
        cin>>fushu;
        for(i=1;i<=num;i++)
        {
            x1[i]=rand()%fanwei;//输出两个用户制定范围内的数
            x2[i]=rand()%fanwei;//输出两个用户制定范围内的数
            op=rand()%4;
            if(out==0)
            {
                if(div==0&&fushu==0)
                {
                    if(op>=2)
                    {
                        op=op-2;
                        yunsuan1();
                    }
                    else
                    {
                        yunsuan1();
                    }
                }
                if(div==1&&fushu==1)
                {
                    if(x1[i]>x2[i])
                    {
                        temp=x1[i];
                        x1[i]=x2[i];
                        x2[i]=temp;
                    }
                
                    yunsuan1();
                }
                if(div==0&&fushu==1)
                {
                    
                       if(op>=2)
                    {
                        op=op-2;
                        yunsuan1();
                    }
                    else
                    {
                        yunsuan1();
                    }                 
                }
                if(div==1&&fushu==0)
                {
                  yunsuan1();
                }
            }
            else if(out==1)
            {
                if(div==0&&fushu==0)
                {
                    if(op>=2)
                    {
                        op=op-2;
                        yunsuan2();
                    }
                    else
                    {
                        yunsuan2();
                    }
                }
                if(div==1&&fushu==1)
                {
                      if(x1[i]>x2[i])
                    {
                        temp=x1[i];
                        x1[i]=x2[i];
                        x2[i]=temp;
                    }
                    
    
                    yunsuan2();
                }
                if(div==0&&fushu==1)
                {
                    if(op>=2)
                    {
                        op=op-2;
                        yunsuan2();
                    }
                    else
                    {
                        yunsuan2();
                    }        
    
                }
                if(div==1&&fushu==0)
                {
                    yunsuan2();
                }
            }
    
        }
        cout<<"要继续吗?jixu(0, 退出 1,继续)"<<endl;
        cin>>jixu;
        if(jixu==1)
        {
            cout<<endl;
            main();
        }
        else
        {
            return 0;
        }
        getch();
        return 0;
        
    }
     

     

    总结:这次程序用到了使题目不能重复的函数srand(time(NULL)),以及调用函数。因为对函数的调用不是很熟练,所以事先定义了两个函数yuansuan1(),yunsuan2();
            通过设置变量来达到题目的要求,不过本程序对于实现乘除发有无余数和有无分数还没能实现,需要进一步进行改进。还有就是程序中虽然出现了数组,但在实际应用用中没有起到相应的作用,也是需要改进的。

    项目计划总结

    周活动总结表

    姓名:张金                                                          日期:2015/3/15

    任务

    日期

    听课

    编程

    阅读课外数目

    锻炼身体

    写老师留得作业

    业余活动

    日总计

    (分钟)

    周日

    30

    30

    60

    周一

    400

    15

    415

    周二

    200

    30

    60

    60

    60

    410

    周三

    100

    60

    30

    60

    60

    60

    370

    周四

    200

    30

    30

    60

    40

    60

    420

    周五

    200

    100

    30

    60

    40

    60

    490

    周六

    40

    30

    60

    40

    60

    230

    阶段时间和效率

    周数:1

    总计

    60

    415

    410

    370

    420

    490

    230

    平均

    30

    69

    68

    61

    70

    67

    46

    最大

    30

    400

    200

    100

    200

    200

    60

    最小

    30

    15

    30

    30

    30

    30

    2,时间记录日志:

    学生:张金                                                                         日期:2015/3/15

    老师:王建民                                                                      课程:PSP

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    3/10

    08:00

    12:00

    40

    200

    上课

    14:30

    15:30

    60

    构思程序

    16:00

    17:00

    60

    写作业

    21:00

    21:30

    30

    阅读课外书物

    3/11

    08:00

    10:00

    20

    100

    听课

    11:00

    12:00

    60

    程序

    14:00

    15:00

    60

    写作业

    21:00

    21:30

    30

    阅读课外书物

    3/12

    10:00

    12:00

    20

    100

    听课

    14:00

    14:30

    30

    程序

    15:00

    16:00

    60

    写作业

    21:00

    21:30

    30

    阅读课外读物

    3/13

    08:00

    12:00

    40

    200

    听课

    14:00

    15:40

    100

    程序

    21:00

    21:30

    30

    阅读课外书物

    3,缺陷记录日志:

    学生:张金                                                                       日期:2015/3/15

    老师:王建民  

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复阶段

    修复缺陷

    3/10

    1

    001

    编程

    编译

    15min

    描述:函数定义错误

    2

    002

    编程

    编译

    10min

    描述:函数调用出现错误

    3/11

    3

    003

    编程

    编译

    2

    描述:使题目不重复使没有添加头文件

    4

    004

    编程

    编译

    10min

    描述:if结构使用错误

    3/12

    5

    005

    编程

    编译

    5min

    描述:使题目不出现乘除时出错

    3/13

    6

    006

    编程

    编译

    5min

    描述:使题目中加减法出现负数是出错

                                                                    

                                                                    

          

  • 相关阅读:
    c++函数模板
    C++左移运算符重载
    and or bool and a or b 原理解释
    Python的垃圾回收机制
    《C++ 101条建议》学习笔记——第一章快速入门
    在应用中嵌入Python:转
    使用C++扩展Python的功能 转自:http://blog.csdn.net/magictong/article/details/8897568#comments
    python扩展实现方法--python与c混和编程 转自:http://www.cnblogs.com/btchenguang/archive/2012/09/04/2670849.html
    python文件头的#-*- coding: utf-8 -*- 的作用
    Pythhon 字典 key in dict 比 dict.has_key (key)效率高 为什么?
  • 原文地址:https://www.cnblogs.com/xiaojin123/p/4338834.html
Copyright © 2011-2022 走看看