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 }