【C++初级技能书】4.循环语句
1.初识循环结构
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int sum = 0; 6 for (int i = 1; i <= 9; i++) 7 { 8 sum = sum + i; 9 cout << i << "+"; 10 } 11 cout << endl; 12 cout << "sum=" << sum << endl; 13 14 getchar(); 15 return 1; 16 }
我们先来看一个简单的例子,上面这个例子展示了,如何计算1到9的数字相加,如果我们日常计算,可能会用计算器一个一个按,从1按到9,但是如果我们要计算1+2+...+9999+10000呢?可能计算器都累了。如果用程序来实现的话,只需要简单的几行代码。上面这个程序,除去常见的语法不做说明,需要说明的是:我们使用sum这个变量来代表最终的和,然后利用一个循环,每次循环,我们都加上循环的次数,比如第一次循环我们加1,第二次循环我们加2,直到第九次循环加9,最后循环结束时,sum变量里存的就是最终我们需要的和。
2.for循环结构
1 for ([初始化]; [条件]; [循环迭代]) 2 { 3 //每次循环要做的事 4 }
上面就是一个基本的for循环结构,在[初始化]部分,我们定义一个变量来控制整个循环,然后在[条件]部分,我们定义每次循环需要满足的条件,然后在[循环迭代]部分,处理我们用于控制循环次数的变量。
1 int 已经攒的钱 = 0元 2 for(int 星期i = 1; i <= 星期七; i = i + 1) 3 { 4 已经攒的钱 + i 5 }
上面就是伪代码,不要在意伪代码的格式/语法是否正确,只要能理解这个意思就好。
3.while循环结构
1 while([条件]) 2 { 3 //每次循环要做的事 4 }
我们用再while来重写一下1.里的例子
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int sum = 0; 6 int i = 1; 7 while (i <= 9) 8 { 9 sum = sum + i; 10 cout << i << "+"; 11 i++; 12 } 13 cout << endl; 14 cout << "sum=" << sum << endl; 15 16 getchar(); 17 return 1; 18 }
while()会在括号里的条件满足时,执行下方花括号里的逻辑,看起来好像就是把for拆开写了。
4.do...while循环结构
1 do 2 { 3 //每次循环要做的事 4 } 5 while([条件])
do...while和while循环的区别在于,do...while是每次先执行一次花括号里的逻辑,再判断while里的条件是否符合,然后再执行下一次。那么用do...while来改写1.里的逻辑,就是这样的:
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int sum = 0; 6 int i = 1; 7 do 8 { 9 sum = sum + i; 10 cout << i << "+"; 11 i = i + 1; 12 } while (i <= 9); 13 cout << endl; 14 cout << "sum=" << sum << endl; 15 16 getchar(); 17 return 1; 18 }
虽然看起来好像没什么区别,但是还是要记住,while是先判断条件是否满足再执行,do...while是执行再判断条件是否满足(不要死记硬背,多用多记忆)。
5.无限循环
那么怎么造成一个死循环呢?上面我在介绍几个循环结构的时候,都会做一个迭代,就是i=i+1,聪明的你肯定发现了,如果不写这一句迭代,那么就会一直满足执行条件,程序也就一直会运行下去。
6.跳出/跳过循环
1 int money = 10; 2 while(1) 3 { 4 money = money - 4; 5 cout<<"买到一块糖"; 6 }
不要在意这个死循环,我们来看看,如果程序一直执行,那将会出现剩余钱数为-2块钱的情况,我们可以用while(money>=4)来控制循环结束,当然我们还有一种控制循环结束的方式,就是使用break;语句,像这样:
1 int money = 10; 2 while(1) 3 { 4 money = money - 4; 5 cout<<"买到一块糖"; 6 if(money<4) 7 { 8 break; 9 } 10 }
当剩余钱数小于4块钱的时候,就不买了,跳出了while循环,同样,如果你使用其他循环语句,也可以用break跳出整个循环。
1 for(int i=0;i<=100;i++) 2 { 3 if(i % 4 != 0) 4 { 5 continue; 6 } 7 cout<<i<<"能被4整除"<<endl; 8 }
我们这里用%来计算余数,100%4代表100除以4取余数,100%4结果是0。例子中使用了continue,continue语句意思是跳过本次循环,开始下一次循环。所以上面例子中当i不能被4整除时,就跳过了cout<<i<<"能被4整除"<<endl;这一输出部分。
注意!看到这里你已经掌握了最基本的循环语句写法,后边的内容为扩展内容,如果你不会,或者看不懂,并不妨碍你学会循环语句,但是你可以看一下,如果看懂了,说明你很厉害,不想看的同学,请直接跳至练习题。
7.goto语句
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int sum = 0; 6 int i = 0; 7 8 while (1) 9 { 10 cout << "i:" << i++ << endl; 11 if (i > 10) 12 { 13 goto condition1; 14 } 15 } 16 condition1: 17 cout<<"跳到了condition1后"<<endl; 18 19 getchar(); 20 return 1; 21 }
上面就是最基本的goto语句用法,需要在一个地方使用 [位置:] 这个结构来指定跳转位置,例子里用的是 condition1:,然后在其他地方使用 [goto 位置:] 这个结构来跳转到指定位置,这是一个比较特殊的结构,在程序中可以使用goto来制造循环。
思考一下(答案不唯一)
- 编程计算3+4+5+...+11+12的和。
-
点+看答案1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int sum = 0; 6 for(int i=3;i<=12;i++) 7 { 8 sum += i; 9 } 10 cout << "sum=" << sum << endl; 11 12 getchar(); 13 return 1; 14 }
-
- 输出99乘法表。
-
点+看答案1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 for (int i = 1; i <= 9; i++) 6 { 7 for (int j = 1; j <= i; j++) 8 { 9 cout << i << "*" << j << "=" << i * j << " "; 10 } 11 cout << endl; 12 } 13 14 getchar(); 15 return 1; 16 }
-


浙公网安备 33010602011771号