• 四则运算2


    一.设计思想。

    1.避免题目重复,可以将前面生成的四则算式的数字和符号分别存储,将即将生成的算式与前面进行比对。 2.通过某个参数可以使得用户调控是否要定制数量,当需要定制数量时可以通过接收用户输入的数字,来调控for循环的循环次数。 3.通过接收用户输入的选项使得用户选择是否有乘除法、调控数值范围、除法有无余数、是否支持分数(真分数,假分数。

    二.源代码。

    #include<iostream>
    #include<stdlib.h>
    #include<string.h>
    #include<stdio.h>
    using namespace std;
    #include <ctime>
    #include <cstdlib>
    void panduanchongfu()
    {
        int d,e,k,m,n, p;
        int o=0,b=0;
        cout<<"请输入要显示的四则运算的个数"<<endl;
        cin>>k;
        cout<<endl;
        int shuzi[200][4];
        char yunsuanfu[4]={'+','-','*','/'};
        char fuhao[16][2]={{'+','+'},{'+','-'},{'+','*'},{'+','/'},{'-','+'},{'-','-'},{'-','*'},{'-','/'},{'*','+'},{'*','-'},{'*','*'},{'*','/'},{'/','+'},{'/','-'},{'/','*'},{'/','/'}};
        int g[100];    
        srand(time(0));//根据系统时间设置随机数种子
        int r,t,temp;
        cout<<"-------------------"<<endl;
        cout<<"请输入产生式数字的范围。(请输入两个数字:如 10 50:代表产生式的数字范围为(10-50)"<<endl;
        cout<<"-------------------"<<endl;
        cin>>r>>t;
        cout<<endl;
        if(r>t)
        {
            temp=r;
            r=t;
            t=temp;
        }
        int a;
        cout<<"-------------------"<<endl;
        cout<<"0.无乘除法。"<<endl;
        cout<<"1.有乘除法。"<<endl;
        cout<<"请输入选项(0或1)"<<endl;
        cout<<"-------------------"<<endl;
        cin>>a;
        cout<<endl;
        if(a!=0)
        {
            cout<<"-------------------"<<endl;
            cout<<"0.无余数。"<<endl;
            cout<<"1.有余数。"<<endl;
            cout<<"请输入选项(0或1)"<<endl;
            cout<<"-------------------"<<endl;
            cin>>p;
            cout<<endl;
        }
        cout<<"-------------------"<<endl;
        cout<<"0.无分数。"<<endl;
        cout<<"1.有分数。"<<endl;
        cout<<"请输入选项(0或1)"<<endl;
        cout<<"-------------------"<<endl;
        int s;
        cin>>s;
        cout<<endl;
        for(int i=0;i<k;i++)
        {
            shuzi[i][0]=rand()%(t-r)+r;//取得区间[0,100)的整数
            shuzi[i][1]=rand()%(t-r)+r;
            shuzi[i][2]=rand()%(t-r)+r;
            shuzi[i][3]=rand()%(t-r-1)+r+1;
            d=rand()%100;
            e=rand()%100;
            if(a==1||a==0) 
            {
                switch(a)
                {
                case 0:
                    n=e%2;//判断运算符号的随机数
                    m=d%2;
                    break;
                case 1:
                    n=e%4;//判断运算符号的随机数
                    m=d%4;
                    break;
                }
            }
            else
            {
                cout<<"输入选项有误,请正确输入。"<<endl;
                cout<<"-------------------"<<endl;
                cout<<"0.无乘除法。"<<endl;
                cout<<"1.有乘除法。"<<endl;
                cout<<"请输入选项(0或1)"<<endl;
                cout<<"-------------------"<<endl;
                cin>>a;
                i=i-1;
                continue;
            }
            
                   
            if((m==3&&shuzi[i][0]%shuzi[i][1]!=0&&p==0)||(n==3&&shuzi[i][1]%shuzi[i][2]!=0&&p==0))
            {
                i=i-1;
            }
            else
            {
                if((shuzi[i][1]==0&&m==3&&a==0)||(shuzi[i][2]==0&&n==3&&a==0))
                {
                    i=i-1;
                }
                else
                {
                    for(int l=0;l<16;l++)
                    {
                        if(yunsuanfu[m]==fuhao[l][0]&&yunsuanfu[n]==fuhao[l][1])
                        {
                            
                            g[o]=l;
                            o++;
                        }
                    }
                    for(int j=i-1;j>=0;j--)
                    {
                        if(shuzi[i][0]==shuzi[j][0]&&shuzi[i][1]==shuzi[j][1]&&shuzi[i][2]==shuzi[j][2]&&g[i]==g[j])
                        {
                            i=i-1;
                            break;
                        }
                    }
                }
            }
            
        }
        if(s==0)
        {
            for(i=0;i<k;i++)
            {
                if(g[i]==12||g[i]==13||g[i]==14)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<"÷"<<shuzi[i][1]<<fuhao[g[i]][1]<<shuzi[i][2]<<"="<<endl;
                }
                else if(g[i]==3||g[i]==7||g[i]==11)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
                else if(g[i]==15)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<"÷"<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
                else
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<fuhao[g[i]][1]<<shuzi[i][2]<<"="<<endl;
            }
        }
        else
        {
            for(i=0;i<k;i++)
            {
                int q0,q1,q2;
                q0=rand()%3;
                q1=rand()%3;
                q2=rand()%3;
                
                if(q0==1)
                {
                    cout<<""<<i+1<<"题:"<<"("<<shuzi[i][0]<<"/"<<shuzi[i][3]<<")"<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
                else if(q0==0)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
                else if(q1==1)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<"("<<shuzi[i][1]<<"/"<<shuzi[i][3]<<")"<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
                else if(q1==0)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
                else if(q2==1)
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<"("<<shuzi[i][2]<<"/"<<shuzi[i][3]<<")"<<"="<<endl;
                }
                else
                {
                    cout<<""<<i+1<<"题:"<<shuzi[i][0]<<fuhao[g[i]][0]<<shuzi[i][1]<<"÷"<<shuzi[i][2]<<"="<<endl;
                }
            }
        }
    }
    
    int main()
    {
        panduanchongfu();
        return 0;
    }

    三.运行结果。


    四.PSP.

    一、项目计划总结:

    周活动总结表

                        姓名: 李明                                日期:2015/3/15

    日期       任务

    听课

    编写程序

    阅读课本

    准备考试

    日总计

    周日

    周一

    周二

     100

     20

     120

    周三

     30

     15

     45

    周四

     60

     20

     80

    周五

     100

     120

     20

     240

    周六

     120

     20

     140

    周总结

     200

     330

     95

     625

    阶段时间和效率                                            周数(上一次周活动表的周数+1):

    不包括上一周在内的累计时间                                                                         

    总计

    平均

    最大

    最小

    以前各周的累计时间                                                                                    

    总计

    平均

    最大

    最小

    二、时间记录表:

    学生        李明                                                日期      2015/3/15                 

    教师        王建民                                             课程           PSP       

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

     3.11

     1900

     1930

     30

     编程

     3.12

     1700

     1800

     60

     编程

     3.13

     1630

     1730

     60

     编程

     3.13

     1900

     2000

     60

     编程

     3.14

     1900

     2100

     120

     编程

    三、缺陷记录日志:

    学生      李明             

    日期        2015/2/15           

    教员       王建民   

    程序号    四则运算            

             

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

     3.11

     定义字符串数组时,没有正确定义数组内容。比较字符串时,两个字符串类型不同,一个是char类型,一个是char*类型,不能比较。

     3.12

     If判断句中,应该用==。有时一个变量进行了,两次调用,造成赋值混乱。

     3.13

     Case将:写到数字前面了。 多个判断并列,造成每个都要执行。

     3.14

     如果用户没有输入01,提示错误时没有继续循环,没用continue

  • 相关阅读:
    zabbix server 给agent 添加 CPU 监听笔记
    解决windows文件名过长无法删除的问题
    一个大的OpenAPI Specification yaml 分割成小的yaml文件
    win10 移除2345输入法
    树莓派登录ssh 很慢和开机启动tightvncserver
    docker gitlab-ce 容器root密码重置小记
    Arduino Nokia 5110 LCD屏幕使用小记
    Docker Compose文件下载慢的处理笔记
    Ubuntu 18.04 安装rtorrent笔记
    vagrant Which interface should the network bridge to?
  • 原文地址:https://www.cnblogs.com/nulidexuezha/p/4339033.html
Copyright © 2020-2023  润新知