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 }