2021-08-19

循环

没有循环和结构化变量的程序不值得编写.

1. while 语句 (先判后做)

格式:

[while 语句]   while (表达式) 语句

 圆括号里面的表达式是控制表达式,后面的语句是循环体.
 执行 while 语句时,首先计算控制表达式的值,如果值不为0,那么执行循环体,接着再次判定表达式,直到控制表达式为0.

举个例子:

int i,n,t;
  i = 1;
  t = 0;//初始化很重要 
  n = 100;
  while (i <= n) {
  t = t + i;
  i++;
}

无限循环

[ 惯用法 ] while (1) …

2. do 语句 (先做后判)

[do语句] do 语句 while 表达式

do  {
  printf("T minus %d and counting\n", i);
  --i;
}  while(i > 0);

do语句整个是一个语句, while() 要以 ; 结尾,和 while 语句有区别.

3. for 语句

[for 语句格式] for (表达式1;表达式2;表达式3) 语句

注意表达式1,表达式2,表达式3之间用分号隔开

一些常用的 for 语句:

for ( i = 0; i < n; i++)  ...
for ( i = n; i >= 0; i--)  ...

for ( int i = 0; i < n; i++)  ...//for语句声明的变量不可以在循环外访问
for (; i > 0; --i)  ...
for (; i > 0; )// 等价于while语句

用 for 语句实现无限循环: for ( ; ; )

4. 退出循环

4.1 break 语句

break 语句把程序控制从包含该语句的最内层 while 、do、for、或者 switch 语句中转移出来。因此,当这些语句出现嵌套的时候,break 语句只能跳出一层嵌套。
比如:

while(...) {
 switch (...) {
 ...
 break;
 ...
 }
...
}

这个时候 break 语句只能跳出 switch 语句,但却不能跳出 while 循环。

4.2 continue 语句

break 语句刚好把程序控制转移到循环体末尾之后,而 continue 语句刚好把程序控制转移到循环体末尾之前。用 break 语句会使程序控制跳出循环,而 continue 语句会把程序控制留在循环内。
break 语句和 continue 语句还有一个区别是:break 语句可以用在 switch 语句和循环,而 continue 语句只能用在循环中。

举个例子:

int n,num;
n = 0;
sum = 0;
while (n < 10) {
  scanf("%d", &i);
  if (i == 0) 
    continue;
  sum += i;
  n++;
 //continue jumps to here
}

4.3 goto 语句

  break 语句和 continue 语句都是跳转语句:它们把控制从程序中的一个位置转移到另一个位置。这两者都是受限制的:break 语句的目标是包含该语句的循环结束之后的那一点 ,而 continue 语句的目标是循环结束之前的那一点。goto 语句则可以跳转到函数中任何有标号的语句处。

举个例子:

for (d = 2; d < n; d++ )
  if (n % d == 0)
  goto done;
  .......
  done:
  if(d < n)
    printf("%d is divisible by %d\n", n, d);
  else
    printf("%d is prime\n", n);

5. 空语句

语句可以为空,也就是除了末尾处的分号外什么符号也没有。下面是一个示例:
i = 0; ; j = 1;
这行有三条语句,中间的一条语句为空语句。

为了凸出空循环体,有以下方法:

  1. 空语句单独放置在一行
  2. 使用虚设的 continue 语句
for (d = 2; d < n && n % d != 0; d++)
  continue;
  1. 使用空的复合语句
for (d = 2; d < n && n % d != 0; d++)
 {  }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值