范磊 C++ 第7章 循环语句

  1 // section_7.cpp : Defines the entry point for the console application.
  2 //范磊 C++ 第7章 循环语句
  3 
  4 #include "stdafx.h"
  5 #include "iostream"
  6 
  7 using namespace std;  //cout 和 endl 前面不用加 std:: 了.
  8 
  9 //7.1 循环语句的前身--go to 语句
 10 void fun1()
 11 {
 12     int i;
 13 
 14     i = 1;
 15 number:
 16     i++;
 17     std::cout << "*" ;
 18     if(i < 10)
 19     {
 20         goto number;
 21     }
 22     cout << "
 程序结束 
";
 23     cout << "*********
";
 24 }
 25 
 26 //------------------------------------------------------
 27 //7.3 while语句
 28 void fun2()
 29 {
 30     int i;
 31     
 32     i = 1;
 33 
 34     while(i < 10)
 35     {
 36         cout << "*" ;
 37         i++ ;
 38     }
 39     cout << "
 程序结束 
" ;
 40     cout << "*********
" ;
 41 }
 42 
 43 //------------------------------------------------------
 44 //7.3.1 带运算符的while语句
 45 void fun3()
 46 {
 47     int a;
 48     cout << "请输入一个大于0,小于100的数: " ;
 49     cin >> a ;
 50     while(a>0 && a<100)
 51     {
 52         cout << "a:" << a << endl ;
 53         a++ ;
 54     }
 55 }
 56 
 57 //------------------------------------------------------
 58 //7.3.2 以字符为条件的while语句
 59 void fun4()
 60 {
 61     char choice;
 62 
 63     choice = 'y' ;
 64     while(choice == 'y' || choice == 'Y')
 65     {
 66         cout << "
问君能有几多愁,恰似一江春水向东流.
" ;
 67         cout << "再看一遍? 是按y,否按n :" ;
 68         cin >> choice ;
 69     }
 70     cout << "程序执行完毕,再见. 
" ;
 71 }
 72 
 73 //------------------------------------------------------
 74 //7.3.3 限定while的循环次数
 75 void fun5()
 76 {
 77     int count;
 78     int many;
 79 
 80     cout << "你想看几次? "; 
 81     cin >> many ;
 82     count = 0 ;
 83     while(count < many)
 84     {
 85         cout << "
问君能有几多愁,恰似一江春水向东流.
" ;
 86         count++ ;
 87     }
 88     cout << "
程序执行完毕,再见. 

" ;
 89 }
 90 
 91 //------------------------------------------------------
 92 //7.3.4 continue语句
 93 //让程序执行到循环体的某处就不再继续执行后面的语句,
 94 //可以用continue语句使跳转到循环开始的地方,继续执行.
 95 void fun6()
 96 {
 97     int i;
 98     i = 0;
 99     
100     while(i < 3)
101     {
102         i++ ;        //第一次执行 i++后,i == 1.
103         if(i == 1)    //因为i == 1,所以执行if{ }里面的continue语句,跳回去判断while(i < 3) 这里了.
104         {            //下面的cout << "i的值为:" << i << endl ;这行代码就忽略了.
105             continue;
106         }
107         cout << "i的值为:" << i << endl;    //当没有执行continue语句时,就按顺序执行到这行语句了.
108     }
109 }
110 
111 //------------------------------------------------------
112 //7.3.5 break语句
113 //执行break语句,可以强制退出循环,执行循环体下面的语句.
114 void fun7()
115 {
116     int i;
117     i = 0;
118 
119     while(i < 3)
120     {
121         i++ ;
122         if(i == 1)
123         {
124             break;        //如果没有break 语句的话,循环里面的cout << "i 的值为:" << i << endl; 会执行3次的.
125         }                //但是执行了break,直接跳出了while(i < 3) { }的循环体,所以什么都没输出.
126         cout << "i 的值为:" << i << endl ;
127     }
128 }
129 
130 //------------------------------------------------------
131 //7.4 do{ }  while();语句
132 //程序执行时先执行一次do{ }里面的的语句,然后再判定while( )里面的条件
133 //如果条件为真,则返回到do{ }再执行一次,然后从新判定while( )条件是否符合,如此循环.
134 void fun8()
135 {
136     int many;
137     cout << "你想看几次? :" ;
138     cin >> many;
139     do        //先把 do{ }的语句执行一遍.
140     {
141         cout << "
问君能有几多愁,恰似一江春水向东流.
" ;
142         many-- ;
143     }while(many > 0);        //注意这里要加 ; 号.
144     cout << "
程序执行完毕,再见. 

" ;
145 }
146 
147 //------------------------------------------------------
148 //7.5 for循环
149 //for(表达式1; 表达式2; 表达式3)
150 //执行时,先执行表达式1,然后再判断表达式2是否为真,若真,则执行for{ }里面的语句,执行完以后再执行表达式3,
151 //执行完表达式3后,再反过头来判定表达式2是否为真,若真,则再次执行for{ }里面的语句,执行完以后再次执行表达式3.
152 //如此循环,直到表达式2为假,则运行for{ } 后面的语句.
153 void fun9()
154 {
155     int many;
156     int count;
157     cout << "你想看几次? :" ;
158     cin >> many;
159     for(count = 0; count < many; count++)
160     {
161         cout << "
问君能有几多愁,恰似一江春水向东流.
" ;
162     }
163     cout << "
程序执行完毕,再见. 

" ;
164 }
165 
166 //------------------------------------------------------
167 //7.5.1 灵活的for循环
168 //for循环可以对多个变量进行初始化操作,初始化语句之间用 , 号分开.
169 void fun10()
170 {
171     for(int x = 0, int y = 0, int z = 0; x < 3; x++, y++, z++) //定义变量同时也赋值.
172     {
173         cout << "x:" << x << "y:" << y << "z:" << z << endl ;
174     }
175 }
176 
177 //------------------------------------------------------
178 //7.5.2 条件为空的for循环
179 void fun11()
180 {
181     int i;
182     i = 0;
183 
184     for( ; i < 5; )        //表达式1为空,表达式3为空.可以理解为执行了"什么都不做"这个动作.
185     {
186         i++ ;
187         cout << "
问君能有几多愁,恰似一江春水向东流.
" ;
188     }
189 
190 }
191 
192 //------------------------------------------------------
193 //7.5.2 三个条件为空的for循环.
194 //要注意想办法跳出循环,否则会一直无线循环.
195 void fun12()
196 {
197     int i;
198     i = 0;
199 
200     for( ; ; )
201     {
202         if(i < 5)    //如果没有这个if语句,for 语句则进行无线循环.因为第2个表达式是空的,可以认为是0.
203         {
204             cout << "
问君能有几多愁,恰似一江春水向东流.
" ;
205             i++ ;
206         }
207         else
208         {
209             break ;        //用于跳出for() 循环.
210         }
211     }
212 }
213 
214 //------------------------------------------------------
215 //7.5.3 执行为空的for循环
216 void fun13()
217 {
218     for(int i = 0; i < 5; cout << "i:"  << i++ << endl )    //第3个表达式其实是一个语句.
219     {
220         //cout << "i:"  << i++ << endl   //我们应该尽量这样写,不要把语句写到for()里面.
221         ;    //没有任何东西,为空. 这个 { }可以在这样的情况下省略掉.
222     }
223 }
224 
225 //------------------------------------------------------
226 //7.5.4 嵌套的for循环
227 //在forx循环里面还有循环
228 void fun14()
229 {
230     int a;
231     int b;
232     char c;
233 
234     cout << "多少行? " ;
235     cin >> a;
236     cout << "多少列? " ;
237     cin >> b;
238     cout << "什么字? " ;
239     cin >> c;
240 
241     for(int i = 0; i < a; i++)            //外层循环,决定多少行.
242     {
243         for(int j = 0; j < b; j++)        //内层循环,决定多少列.
244         {
245             cout << c ;        
246         }
247         cout << "
" ;
248     }
249 }
250 
251 //------------------------------------------------------
252 //7.6 switch case语句
253 //switch 其实就是特殊的if语句.
254 void fun15()
255 {
256     int choice;
257 
258     cout << "请输入一个数:" ;
259     cin >> choice ;
260     switch(choice)
261     {
262     case 0: cout << "你输入的是0. 
" ;
263         break;    //break是一定要加的,用来跳出switch 语句的.不加的话,后果很严重.
264     case 1:
265         {
266             cout << "你输入的是1. 
" ;
267             break;
268         }
269     case 3: cout << "你输入的是3. 
" ;
270         break;
271     case 4: cout << "你输入的是4. 
" ;
272         break;
273     case 5: cout << "你输入的是5. 
" ;
274         break;
275     case 6: cout << "你输入的是6. 
" ;
276         break;
277     case 7: cout << "你输入的是7. 
" ;
278         break;
279     case 8: cout << "你输入的是8. 
" ;
280         break;
281     case 9: cout << "你输入的是9. 
" ;
282         break;
283     case 10: cout << "你输入的是10. 
" ;
284         break;
285     default:cout << "你输入的不是0-10之间的数字. 
" ;
286     }
287     cout << "程序结束.
" ;
288 }
289 /*
290 其实switch等同于下面
291 if(choice == 1)
292 {
293     cout << "你输入的是0. 
" ;
294 }
295 if(choice == 2)
296 {
297     cout << "你输入的是2. 
" ;
298 }
299 if(choice == 3)
300 {
301     cout << "你输入的是3. 
" ;
302 }
303 */
304 
305 
306 //-----------------------------------------------------
307 //7.6.2 switch的菜单功能
308 void fun16()
309 {
310     int quit;
311     quit = 0;
312     for( ; ;)
313     {
314         char choice;        //choice 定义为一个字符型变量.
315         cout << "(0)零 (1)壹 (2)贰 (3)叁 (4)肆 (5)伍 (6)陆 (7)柒 (8)捌 (9)玖 (q)退出 :" ;
316         cin >> choice ;
317         switch(choice)
318         {
319         case '0' : cout << "你输入的是零. 
 " ;    //因为choice是字符型变量,所以 0 要加多个 ' ' 号,作为一个字符.
320             break;                                    //如果0不加' ', 则认为0是一个数字.
321         case '1' : cout << "你输入的是壹. 
 " ;
322             break;
323         case '2' : cout << "你输入的是贰. 
 " ;
324             break;
325         case '3' : cout << "你输入的是叁. 
 " ;
326             break;
327         case '4' : cout << "你输入的是肆. 
 " ;
328             break;
329         case '5' : cout << "你输入的是伍. 
 " ;
330             break;
331         case '6' : cout << "你输入的是陆. 
 " ;
332             break;
333         case '7' : cout << "你输入的是柒. 
 " ;
334             break;
335         case '8' : cout << "你输入的是捌. 
 " ;
336             break;
337         case '9' : cout << "你输入的是玖. 
 " ;
338             break;
339         case 'q' : quit = 1;
340             break;
341         default : cout << "你输入的不是0-9之间的有效数字. 
 " ;
342         }
343         if(quit == 1)
344         {
345             break;    //这个break用于跳出switch语句.
346         }
347         cout << "程序结束. 
" ;
348     }
349 }
350 //第7章主要例子完毕.
351 //----------------------------------------------------------
352 
353 
354 int main(int argc, char* argv[])
355 {
356     //fun1();        //7.1 循环语句的前身--go to 语句
357     //fun2();        //7.3 while语句
358     //fun3();        //7.3.1 带运算符的while语句
359     //fun4();        //7.3.2 以字符为条件的while语句
360     //fun5();        //7.3.3 限定while的循环次数
361     //fun6();        //7.3.4 continue语句
362     //fun7();        //7.3.5 break语句
363     //fun8();        //7.4 do while语句
364     //fun9();        //7.5 for循环
365     //fun10();        //7.5.1 灵活的for循环
366     //fun11();        //7.5.2 条件为空的for循环
367     //fun12();        //7.5.2 三个条件为空的for循环
368     //fun13();        //7.5.3 执行为空的for循环
369     //fun14();        //7.5.4 嵌套的for循环
370     //fun15();        //7.6 switch语句
371     //fun16();    //7.6.2 switch的菜单功能
372     
373     return 0;
374 }