四则运算2

1.设计思路 

上次博客已经写得很具体了,不再赘述。

2.源代码

  1 #include<iostream.h>
  2 #include<stdlib.h>
  3 #include<time.h>
  4 void choice2();
  5 void create(int m,int n){
  6 int a,b,c;
  7 a=rand()%n;
  8 b=rand()%n;
  9 c=rand()%m;
 10 switch(c){
 11 case 0:
 12      cout<<a<<"+"<<b<<"="<<endl;
 13      break;
 14 case 1:
 15      if(a>b)
 16 {
 17 cout<<a<<"-"<<b<<"="<<endl;
 18 }
 19 else
 20 {
 21 cout<<b<<"-"<<a<<"="<<endl;
 22 }
 23 break;
 24 case 2:
 25 cout<<a<<"*"<<b<<"="<<endl;
 26 break;
 27 case 3:
 28 if(b!=0)
 29 {
 30 cout<<a<<"/"<<b<<"="<<endl;
 31 }
 32 else
 33 {
 34 cout<<"这道题有误!"<<endl;
 35 }
 36 break;
 37 }
 38 }
 39 void caidan()
 40 {
 41     cout<<"----四则运算2-----"<<endl;
 42     cout<<"1. 定制出题数量"<<endl;
 43     cout<<"2. 出题打印"<<endl;
 44     cout<<"3. 退出菜单"<<endl;
 45 }
 46 void caidan2()
 47 {
 48     cout<<"----四则运算2----"<<endl;
 49     cout<<"1. 乘除法选择"<<endl;
 50     cout<<"2. 数值范围选择"<<endl;
 51     cout<<"3. 余数有无选择"<<endl;
 52     cout<<"4. 打印间隔选择"<<endl;
 53     cout<<"5. 退出菜单"<<endl;
 54 }
 55 void choice()
 56 {
 57     int xuanze,num;
 58     caidan();
 59     cout<<"输入您的选择:"<<endl;
 60     cin>>xuanze;
 61     while(xuanze!=3)
 62     {
 63         switch(xuanze)
 64         {
 65         case 1:
 66             cout<<"请输入您想定制的数量:"<<endl;
 67             cin>>num;
 68             caidan();
 69             cin>>xuanze;
 70             break;
 71         case 2:
 72             cout<<"出题打印!"<<endl;
 73             choice2();
 74             break;
 75         default:
 76             cout<<"输入有误!请重新输入!"<<endl;
 77             caidan();
 78             cin>>xuanze;
 79             break;
 80         }
 81     }
 82 }
 83 void choice2()
 84 {
 85     int key,k1,k2,k3,k4,num;
 86     caidan2();
 87     cout<<"请输入您的选择:"<<endl;
 88     cin>>key;
 89     while(key)
 90     {
 91         switch(key)
 92         {
 93         case 1:
 94             cout<<"请输入0或1(0代表有乘除,1代表无乘除!)"<<endl;
 95             cin>>k1;
 96             if(k1==0)
 97             {
 98                 cout<<"请输入你想定制的数量:"<<endl;
 99                 cin>>num;
100                 for(int i=0;i<num;i++){
101                 create(4,100);
102                 }
103             }
104             else if(k1==1)
105             {
106                 cout<<"请输入你想定制的数量:"<<endl;
107                 cin>>num;
108                 for(int i=0;i<num;i++){
109                 create(2,100);
110                 }
111             }
112             else
113             {
114                 cout<<"输入有误!请重输:"<<endl;
115                 cin>>k1;
116             }
117             caidan2();
118             cin>>key;
119             break;
120         case 2:
121             {
122             cout<<"请输入出题数值范围(数值范围默认100以内)"<<endl;
123             cin>>k2;
124             cout<<"请输入你想定制的数量:"<<endl;
125             cin>>num;
126             for(int i=0;i<num;i++){
127             create(4,k2);
128                 }
129             caidan2();
130             cin>>key;
131             break;
132             }
133         case 3:
134             cout<<"请输入0或1(0代表有余数,1代表无余数!)"<<endl;
135             cin>>k3;
136             
137             if(k3==0)
138             {
139                 cout<<"请输入出题数值范围(数值范围默认100以内)"<<endl;
140             cin>>k2;
141             cout<<"请输入你想定制的数量:"<<endl;
142             cin>>num;
143             int a=rand()%k2;
144             int b=rand()%k2;
145 
146                 if(a%b==0)
147                 {
148                     srand(time(NULL));
149                     a=rand()%k2;
150                     b=rand()%k2;
151                     for(int i=0;i<num;i++){
152                         create(4,k2);}
153                 }
154                 else
155                 {
156                     for(int i=0;i<num;i++){
157                         create(4,k2);}
158                 }
159             }
160             else if(k3==1)
161             {
162             cout<<"请输入出题数值范围(数值范围默认100以内)"<<endl;
163             cin>>k2;
164             cout<<"请输入你想定制的数量:"<<endl;
165             cin>>num;
166             int a=rand()%k2;
167             int b=rand()%k2;
168 
169                 if(a%b==0)
170                 {
171                     srand(time(NULL));
172                     a=rand()%k2;
173                     b=rand()%k2;
174                     for(int i=0;i<num;i++){
175                         create(4,k2);}
176                 }
177                 else
178                 {
179                     for(int i=0;i<num;i++){
180                         create(4,k2);}
181                 }
182             }
183             caidan2();
184             cin>>key;
185             break;
186         case 4:
187             {
188             cout<<"请输入您想打印时的间隔:"<<endl;
189             cin>>k4;
190             cout<<"请输入你想定制的数量:"<<endl;
191             cin>>num;
192             for(int i=0;i<num;i++)
193             {
194                 create(4,100);
195                 for(int j=0;j<k4;j++)
196                 {
197                     cout<<"\t";
198                 }
199             }
200             caidan2();
201             break;
202             }
203         case 5:
204             exit(1);
205         default:
206             cout<<"输入有误!请重新输入!"<<endl;
207             caidan2();
208             cin>>key;
209             break;
210         }
211     }
212 }
213 void main()
214 {
215     int xuanze;
216         choice();
217         if(xuanze==2)
218         {
219             choice2();
220         }
221 }
222             

3.结果截图:

4.程序总结

1)这次程序的设计编写遇到了不小的麻烦,其中本想着已一种简便的方法实现这一功能,却弄巧成拙,耗费了大量的时间,而主程序中一些程序代码段的重写也成为了这次的主要不足。

2)程序设计中逻辑性不强,依旧存在一些bug。

3)程序只实现了部分功能,日后一定还会再修复的。

5.PSP

 

posted @ 2015-03-15 14:23  fly_zt  阅读(137)  评论(0编辑  收藏  举报