• 多功能四则运算出题器


    一、设计思想

    1.为了保证题目避免重复,我采用了srand函数来实现;

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

      定制数量:手动输入一个数n,然后把原来循环中的固定的数30,改成n,然后自动出题。

      打印方式:可以自己选择每行可以打印几个

    3.可以控制下列参数:

     

    1)是否有乘除法:通过编写两个函数来实现,一个函数带乘除,另一个函数不带乘除。通过提示来选择是否有乘除即可。

     

    (2)数值范围:可以控制出的四则运算的题目是几进制的,就用rand()%f,通过输入f的值来实现。

     

    3)加减有无负数:保证减法无负数,就要做到被减数大于减数,可以把随机产生的两个数进行比较,让最大的做被减数;有负数即不用比较两个数的大小,直接产生即可;

     

    (4)打印中每行的间隔可调整:只要再换行时用一个循环语句,循环输出endl即可。

     

    由于能力有限,其余四个功能:{是否有括号,是否支持分数(真分数,假分数……),是否支持小数(精确到多少位),打印中每行的间隔可调整;}尚未实现

    二、代码

    下面是我不太成熟的代码:

      1 #include<iostream.h>
      2 #include<stdlib.h>
      3 #include<time.h>
      4 
      5 void hycc()
      6 {
      7     int f;//定义要测试的是四则运算是几进制
      8     cout<<"请输入要测试的四则运算是几进制?"<<endl;
      9     cin>>f;    
     10     int x,y,z,t;   //x,y分别表示所产生的两个数,z来控制做加减乘除
     11     int e;//输入每行算数题的个数
     12     srand(time(NULL));
     13     int n;
     14     int b;//表示有无负数
     15     int a;//用来输入行间距
     16     cout<<"需要列出多少到数学题?"<<endl;
     17     cin>>n;      //n代表出题的个数
     18     cout<<"加减有无负数?(0代表有负数,1代表无负数)"<<endl;
     19     cin>>b;
     20     cout<<"每行需要打印几个算数题?"<<endl;
     21     cin>>e;
     22     cout<<"打印时行间距是多少?"<<endl;
     23     cin>>a;
     24     
     25     cout<<"********************************"<<endl;
     26     for(int i=0;i<n;i++)
     27     {
     28         x=rand()%f;
     29         y=rand()%f;
     30         z=rand()%4;
     31         switch(z)
     32         {
     33         case 0:
     34             cout<<i+1<<""<<x<<"+"<<y<<"="<<"     ";
     35             break;
     36             
     37         case 1:
     38             if(b==1)
     39             {
     40             if(x<y)
     41             {
     42                 t=x;
     43                 x=y;
     44                 y=t;
     45             }
     46             cout<<i+1<<""<<x<<"-"<<y<<"="<<"     ";
     47             break;
     48             }
     49             else if(b==0)
     50             {
     51             cout<<i+1<<""<<x<<"-"<<y<<"="<<"     ";
     52             }
     53         case 2:
     54             cout<<i+1<<""<<x<<"*"<<y<<"="<<"     ";
     55             break;
     56         case 3:
     57             if(y!=0)
     58             {
     59             cout<<i+1<<""<<x<<"/"<<y<<"="<<"     ";
     60             }
     61             else
     62             {
     63                 i=i-1;
     64             }
     65             break;
     66         default:
     67             cout<<"超出测试范围"<<endl;
     68             break;
     69         }
     70         if((i+1)%e==0)
     71         {
     72             for(int c=0;c<=a;c++)
     73             {
     74                 cout<<endl;
     75             }
     76         }
     77         if((i+1)==n)
     78         {
     79             cout<<endl;
     80         }
     81     }
     82 }
     83 
     84 void bhycc()
     85 {
     86     int f;
     87     cout<<"请输入要测试的四则运算是几进制?"<<endl;
     88     cin>>f;    
     89     int e;//输入每行算数题的个数
     90     int x,y,z,t;   //x,y分别表示所产生的两个数,z来控制做加减乘除
     91     srand(time(NULL));
     92     int n;//n代表出题个数
     93     int b;//代表加减有无负数
     94     int a;//用来输入行间距
     95     cout<<"需要列出多少到数学题"<<endl;
     96     cin>>n;      //n代表出题的个
     97     cout<<"加减有无负数?(0代表有负数,1代表无负数)"<<endl;
     98     cin>>b;
     99     cout<<"每行需要打印几个算数题?"<<endl;
    100     cin>>e;
    101     cout<<"打印时行间距是多少?"<<endl;
    102     cin>>a;
    103     cout<<"********************************"<<endl;
    104     for(int i=0;i<n;i++)
    105     {
    106         x=rand()%f;
    107         y=rand()%f;
    108         z=rand()%2;
    109         switch(z)
    110         {
    111         case 0:
    112             cout<<i+1<<""<<x<<"+"<<y<<"="<<"     ";
    113             break;
    114         case 1:
    115             if(b==1)
    116             {
    117             if(x<y)
    118             {
    119                 t=x;
    120                 x=y;
    121                 y=t;
    122             }
    123             cout<<i+1<<""<<x<<"-"<<y<<"="<<"     ";
    124             }
    125             else if(b==0)
    126             {
    127                 cout<<i+1<<""<<x<<"-"<<y<<"="<<"     ";
    128             }
    129             break;
    130         default:
    131             cout<<"超出测试范围"<<endl;
    132             break;
    133         }
    134         if((i+1)%e==0)
    135         {
    136             for(int c=0;c<=a;c++)
    137             {            
    138                 cout<<endl;
    139             }
    140         }
    141         if((i+1)==n)
    142         {
    143             cout<<endl;
    144         }
    145     }
    146 }
    147 
    148 
    149 int main()
    150 {
    151 
    152     char ch;
    153     cout<<"是否支持乘除?(Y/N)"<<endl;
    154     cin>>ch;
    155     if(ch=='Y'||ch=='y')
    156     {
    157         hycc();    
    158         cout<<"********************************"<<endl;
    159     }
    160     
    161     else if(ch=='N'||ch=='n')
    162     {
    163         bhycc();
    164         cout<<"********************************"<<endl;
    165     }
    166     else 
    167     {
    168         cout<<"输入错误,无法为您出题!"<<endl;
    169     }
    170     
    171     return 0;
    172 }

    三、运行结果

     

    四、实验总结

         虽然我的程序实现了一部分功能,但是由于我不会定义全局变量,还有一些功能尚未实现;而且在编写程序时遇到的最大的问题就是不会函数调用;有的功能如何实现我还根本没有思路,以后还需要多加练习。

     

     

     

  • 相关阅读:
    笔记类软件的选择——有道云笔记与OneNote
    蓝屏的解决办法
    imshow()不显示灰度图像
    对待电子产品出问题的态度
    文献的管理、阅读及笔记
    电脑安全设置
    搜索引擎的选择与在chrome上的设置
    用Quartz处理定时执行的任务
    bootstrap datetimepick 时分秒选择,坑我15个小时,整理记录
    bootstrap可编辑下拉框jquery.editable-select
  • 原文地址:https://www.cnblogs.com/zgsxh/p/4337289.html
Copyright © 2020-2023  润新知