zoukankan      html  css  js  c++  java
  • 新增四则运算用户选择功能小程序

    一 设计思想

    1.因为要设定许多可控参数,可以把这些参数构成一个数组,也就是一个参数集,然后对每个参数分情况进行设定;

    2.数组中包括题目数量、乘除控制、数值范围、分数控制、正负控制、打印列数共6个元素;

    3.对于控制变量,可以设置为1和0 控制;

    二 程序代码

    #include "stdafx.h"
    #include "stdlib.h"      //调用其中随机函数
    #include "iostream.h"
    #include "time.h"
    int main(int argc, char* argv[])
    {
        int a[6],ch;      //定义一个数组,用来存放可控参数
         int temp;
        srand((unsigned)time(NULL)); //使随机产生的式子每次不重复
         int k1,k2;  //k1,k2为两个随机数,产生n个式子
           
         cout<<"请输入出题数目:"<<endl;
        cin>>a[0];
        cout<<"请输入是否有乘除(有->1;   无->0):"<<endl;
        cin>>a[1];
        cout<<"请输入出数值范围:";
        cin>>a[2];
        cout<<"请输入是否选择分数(有->1;   无->0):"<<endl;
        cin>>a[3];
        cout<<"请输入结果是否有负数(有->1;   无->0):"<<endl;
        cin>>a[4];
        cout<<"请输入几列:"<<endl;
        cin>>a[5];
        for(int i=1;i<=a[0];i++)      //由用户决定打印多少道题a[0]
        {
    
            if(a[3]==0){
            k1=rand()%(a[2]);   //随机产生a[2]以内的数,a[2]是由用户输入的数值范围
             k2=rand()%(a[2]);
            if(a[4]==0)         //控制结果没有负数,如果相减出现负数,则交换两个数
            {
                if(k1<k2)
                {
                temp=k1;
                k1=k2;
                k2=temp;
                }
            }
            else
            k1=rand()%(a[2]);   
            k2=rand()%(a[2]);
            if(a[1]==1){           //a[1]为控制乘除参数
                ch=rand()%4;      //ch有四种情况,加减乘除
            }
            else
                ch=rand()%2;      //ch有两种情况,加减,没有乘除
            
                if((i+1)%a[5]==0)      //a[5]为打印列数,式子个数除以列数的余数决定了它的位置
                {
                    cout<<endl;
                }
            switch(ch)
            {
            case 0:
                cout<<k1<<"+"<<k2<<"="<<"		";
                break;
            case 1:
                cout<<k1<<"-"<<k2<<"="<<"		";
                break;
            case 2:
                cout<<k1<<"*"<<k2<<"="<<"		";
                break;
            case 3:
                cout<<k1<<"/"<<k2<<"="<<"		";
                break;
            }        
            }
            else{
                int n1,n2,n3,n4;
         n1=rand()%20;   //随机产生20以内的数
          n2=rand()%20;
         n3=rand()%20;   
         n4=rand()%20;     
              if(a[1]==1){
                ch=rand()%4;
                 }
              else
                ch=rand()%2;
                //随机产生一个运算符号
                if((i+1)%a[5]==0)
                {
                    cout<<endl;
                }
             switch(ch)        //输出分数
              {
              case 0:
                cout<<"("<<n1<<"/"<<n2<<")+("<<n3<<"/"<<n4<<")="<<"		";
                break;
              case 1:
                cout<<"("<<n1<<"/"<<n2<<")-("<<n3<<"/"<<n4<<")="<<"		";
                break;
              case 2:
                cout<<"("<<n1<<"/"<<n2<<")*("<<n3<<"/"<<n4<<")="<<"		";
                break;
              case 3:
                cout<<"("<<n1<<"/"<<n2<<")/("<<n3<<"/"<<n4<<")="<<"		";
                break;
            }
            }
        }
        cout<<endl;
        return 0;
    }

    三 运行结果截图

     

    四 编程心得

    1.编程前首先看到这一个又一个的要求,就不知道该如何下手了,后来按照上课老师帮我们分析的思路,这一个又一个可以控制的参数,可以放到一个数组中,同类参数可以考虑这样做,也避免了编程时思路混乱或者功能遗漏。

    2.编程时对于是否有分数这个功能选择时,本来想生成一个函数,返回一个分数值,但是这个分数值的显示应该是个字符串,没有做出来,就在主函数里面用了选择语句,重新写了一个式子输出,比较笨的方法。

    3。在打印方式的列数功能实现时,也是费了一番周折。

  • 相关阅读:
    BZOJ2219数论之神——BSGS+中国剩余定理+原根与指标+欧拉定理+exgcd
    Luogu 3690 Link Cut Tree
    CF1009F Dominant Indices
    CF600E Lomsat gelral
    bzoj 4303 数列
    CF1114F Please, another Queries on Array?
    CF1114B Yet Another Array Partitioning Task
    bzoj 1858 序列操作
    bzoj 4852 炸弹攻击
    bzoj 3564 信号增幅仪
  • 原文地址:https://www.cnblogs.com/luyu2783/p/4337290.html
Copyright © 2011-2022 走看看