软件工程个人作业01

before:写一个能自动生成三十道小学四则运算题目的“软件”,要求:除了整数以外,还要支持真分数的四则运算

一,程序的设计思想

  利用时间做种,分别随机产生运算的两个数字,运算符号,其中运算符号可以存在一个字符数组里,对数组下标随机。然后可以有一个判定机制,防止出现零做被除数的情况出现。最后就是为了以后好扩展一些,我把主要的功能放到另外的函数里了,主函数里写了一个时间种子,这样每次产生的题目都不一样。

二,源程序代码

#include<iostream>
using namespace std;
#include<time.h>
#include<string>
void intCal()//产生整数计算
{
     
    int shu1=0,shu2=0;
    //随机数产生0-100
    //shu1=srand(1000)
    shu1=0+rand()%100;
    shu2=0+rand()%100;

    int sum=0;
    int fushu=0;
    string fuhao[4]={"+","-","*","/"};
    fushu=((0+rand()%4)+4)%4;
    //cout<<fushu<<endl;
    //判断shu2是否为0和是否为除法 若为则重新生成
    while(shu2==0&fushu==3)
    {
        shu2=0+rand()%100;
    }
    //随机产生的符号
    switch(fushu)
    {
        case 0:cout<<shu1<<fuhao[fushu]<<shu2<<"="<<endl;break;
        case 1:cout<<shu1<<fuhao[fushu]<<shu2<<"="<<endl;break;
        case 2:cout<<shu1<<fuhao[fushu]<<shu2<<"="<<endl;break;
        case 3:cout<<shu1<<fuhao[fushu]<<shu2<<"="<<endl;break;
    }
}
void fract()//产生分数运算
{
    int zhenfens1_m=0,zhenfens1_z=0,zhenfens2_m=0,zhenfens2_z=0;

    zhenfens1_m=0+rand()%100;
    zhenfens1_z=0+rand()%100;

    //判断产生的真分数正确性
    while(zhenfens1_m<zhenfens1_z)
    {
    zhenfens1_m=0+rand()%100;
    zhenfens1_z=0+rand()%100;
    }

    zhenfens2_m=0+rand()%100;
    zhenfens2_z=0+rand()%100;

    //判断产生的真分数正确性
    while(zhenfens2_m<zhenfens2_z)
    {
    zhenfens2_m=0+rand()%100;
    zhenfens2_z=0+rand()%100;
    }

    string fuhao[4]={"+","-","*","/"};
    int fushu=((0+rand()%4)+4)%4;
    //cout<<fushu<<endl;

    //判断shu2是否为0和是否为除法 若为则重新生成
    //随机产生的符号
    switch(fushu)
    {
        case 0:cout<<"("<<zhenfens1_z<<"/"<<zhenfens1_m<<")"<<fuhao[fushu]<<"("<<zhenfens2_z<<"/"<<zhenfens2_m<<")"<<"="<<endl;break;
        case 1:cout<<"("<<zhenfens1_z<<"/"<<zhenfens1_m<<")"<<fuhao[fushu]<<"("<<zhenfens2_z<<"/"<<zhenfens2_m<<")"<<"="<<endl;break;
        case 2:cout<<"("<<zhenfens1_z<<"/"<<zhenfens1_m<<")"<<fuhao[fushu]<<"("<<zhenfens2_z<<"/"<<zhenfens2_m<<")"<<"="<<endl;break;
        case 3:cout<<"("<<zhenfens1_z<<"/"<<zhenfens1_m<<")"<<fuhao[fushu]<<"("<<zhenfens2_z<<"/"<<zhenfens2_m<<")"<<"="<<endl;break;
    }
}
void main()
{
    srand(time(NULL));//用系统当前时间设置rand()随机序列种子,保证每次运行随机序列不一样
    char ch='a';//选择运算种类
    int i;//选择产生题目的个数
    int c=1;
    while(c)
    {
        cout<<"请选择运算种类:(输入a或A将打印整数运算,输入b或B将打印假分数运算:)"<<endl;
        cin>>ch;
        cout<<"请选择要打印题目的数量:"<<endl;
        cin>>i;
        if(ch=='a'||ch=='A')
        {
            int j;//计数器
            for(j=0;j<i;j++)
            {
                intCal();
            }
        }
        else if(ch=='b'||ch=='B')
        {
            int j;//计数器
            for(j=0;j<i;j++)
            {
                fract();
            }
        }
        cout<<"继续请输入1,否则请输入0"<<endl;
        cin>>c;
    }
    cout<<"OVER!"<<endl;
}

 

三、运行结果截图

四、个人上课未按时完成的原因

时间短,人比较笨。

posted @ 2016-03-11 23:24  张晓晨  阅读(201)  评论(1编辑  收藏  举报

作者: 张晓晨

出处: https://www.cnblogs.com/420Rock/>

关于作者:专注java与大数据领域,请多多赐教!

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(zhangxiaochen643@sina.com)咨询.