• 软件工程个人作业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;
    }

    三、运行结果截图

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

    时间短,人比较笨。

  • 相关阅读:
    2019-2020-2 网络对抗技术 20175206李得琛 Exp5 信息搜集与漏洞扫描
    2019-2020-4 网络对抗技术 20175206李得琛 Exp4 恶意代码分析
    2019-2020-2 网络对抗技术 20175206李得琛 Exp3 免杀原理与实践
    2019-2020-2 网络对抗技术 20175206李得琛 Exp2 后门原理与实践
    2019-2020-2 网络对抗技术 20175206李得琛 Exp1 PC平台逆向破解
    ucos作业
    实现ls及ls的改进ls的实现
    stat命令的实现-mysate
    2019-2020-1 20175203 20175206 实验五 通讯协议设计
    第八周测试课下补交
  • 原文地址:https://www.cnblogs.com/420Rock/p/5267605.html
Copyright © 2020-2023  润新知