多功能四则运算出题器

一、设计思想

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 }

三、运行结果

 

四、实验总结

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

 

 

 

posted @ 2015-03-14 11:54  幽梦  阅读(1253)  评论(2编辑  收藏  举报