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。在打印方式的列数功能实现时,也是费了一番周折。

  • 相关阅读:
    微信小程序
    正则常用表达式
    nodejs基本
    node初学制作登录服务器实例
    前端面试题集锦(三)
    编程:
    js常见编程题
    前端面试题集锦(二)
    细节问题
    前端面试题集锦(一)
  • 原文地址:https://www.cnblogs.com/luyu2783/p/4337290.html
Copyright © 2011-2022 走看看