四则运算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]<<"="<<"\t";
    if(op==1)
        cout<<x1[i]<<"-"<<x2[i]<<"="<<"\t";
    if(op==2)
        cout<<x1[i]<<"*"<<x2[i]<<"="<<"\t";
    if(op==3)
        cout<<x1[i]<<"/"<<x2[i]<<"="<<"\t";
}


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

 

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

                                                                

 

 

 

 

 

 

 

 

                                                                

      

posted @ 2015-03-15 09:51  小小金丫  阅读(161)  评论(0编辑  收藏  举报