zoukankan      html  css  js  c++  java
  • 四则运算2

    本周对程序再做进一步的改进,要求满足如下条件:

    1.题目避免重复。

    2.可订制(数量/打印方式)

    3.可以控制下列参数:

    • 是否有乘除法
    • 是否有括号(最多可支持10个数参与计算)
    • 数值范围
    • 加减有无负数
    • 除法有无余数

    分析如下:

    面对问题,首先进行问题细化。根据以上要求,第一,生成一个随机数,通过取2的余数和取4的余数来选择有无乘除法。第二,通过#define random() (rand()%1000) 来选择数值范围。第三,通过控制表达式的结果是否为负选择加减有无负数。第四,通过两个操作数取余是否为0选择除法有无余数。以上条件均可供用户选择。

    如下是本次程序的源代码:

    //李妍 2015.3.12
    //四则运算新 
    #include<iostream>
    #include<fstream> 
    #include<iomanip>
    #include<cmath>  
    #include<string>  
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    using namespace std;
    #define random() (rand()%1000) 
    
     //是否有乘除法
    char operator_random(int c1)
    {
        char o;
        int c,c2;
        if(c1==0)
        {
            c2=2;
        }
        if(c1==1)
        {
            c2=4;
        }
        c= (rand() % 100)%c2;
        if (c == 0) o = '+';
        else if (c == 1) o = '-';
        else if (c == 2) o = '*';
        else o = '/';
        return o;
    }
    
    void main()
    {
        srand((unsigned)time(NULL));//设置时间种子 ,以使程序每次得到的结果都不同 
        int c1,number,output_mode,value_range,num_1,num_2,plus_or_minus,yushu,j,x,kuohao;
        char o;
        cout<<"是否有乘除法?0否 , 1是:"<<endl;
        cin>>c1;
        cout<<"题目如何输出?0在文件中输出 ,1在此直接输出:"<<endl;
        cin>>output_mode;
        cout<<"请输入数值范围:"<<endl;
        cin>>value_range;
        cout<<"有无括号?0没有,1有"<<endl;
        cin>>kuohao;
        cout<<"加减有无负数?0没有,1有:"<<endl;
        cin>>plus_or_minus;
        cout<<"除法有无余数?0没有,1有:"<<endl;
        cin>>yushu;
        cout<<"请输入题目的数量:"<<endl;
        cin>>number;
        ofstream fout;
        if(output_mode==0)
        {
            fout.open("yunsuan.txt");
            fout<<number<<"道随机四则运算:"<<endl;
        }
        else
        {
            cout<<number<<"道随机四则运算:"<<endl;
        }
        for (int i = 0; i < number; i++)
        {
           num_1=random()%value_range+1;
           num_2=random()%value_range+1;
           o=operator_random(c1);
           int j=num_1-num_2;
           int x=num_1%num_2;
    
           if(output_mode==0)
           {
               if(((j<0)&&(plus_or_minus==0))||((j>=0)&&(plus_or_minus==1))||((x!=0)&&(yushu==0))||((x==0)&&(yushu==1)))
               {
                   i--;
               }
               else
               {
                  fout<<num_1<<o<<num_2<<"="<<endl; 
               }
           }
           else
           {
                if(((j<0)&&(plus_or_minus==0))||((j>=0)&&(plus_or_minus==1))||((x!=0)&&(yushu==0))||((x==0)&&(yushu==1)))
               {
                   i--;
               }
               else 
               {
                   cout<<num_1<<o<<num_2<<"="<<endl;    
                }
           }
        }
        if(output_mode==1) 
        {
            fout.close();
        }
    } 

    总结:当老师布置这个作业的时候,我觉得自己不可能完成,但是通过自己的努力,一点一点查阅资料和一行一行编写代码,最终完成了这个任务。面对编程我有了一些信心,希望自己可以再接再厉,加油!

    项目计划日志:

    时间记录日志:

    缺陷记录日志:

  • 相关阅读:
    Google Data Highlighter
    java里的单例实现
    zuul实现的限流
    vscode解决nuget插件不能使用的问题
    springboot~yml里的自定义配置~续
    Cocos2d—X游戏开发之CCToggle(菜单标签切换)CCControlSwitch(开关切换)
    Flash Builder 4的快捷方式和调试技巧
    无刷电机之无感方案控制难点解析
    UVa10815
    [置顶] 学生管理系统验收出现的问题及解决方法
  • 原文地址:https://www.cnblogs.com/liyan-luckygirl/p/5269491.html
Copyright © 2011-2022 走看看