contiue的用法

定义:continue与循环控制语句配合使用,在一些复杂的控制中,可以根据条件结束本次循环回到循环体开始部分

continue与break有区别。break要终止循环的执行,退出循环体。

单步调试一下程序

# include <stdio.h>


void main()
{
int k=1,s=0;

do
{
if((k%2)!=0)
continue;//结束了本次循环
s+=k;k++;

}while(k>10);

printf("s=%d\n",s);
}


程序分析:


第一次循环,k=1,(k%2)!=0 成立,所以执行continue语句,结束本次循环,因而没有执行循环体语句组s+=k;k++;而是直接判断while的循环条件是否成立。因为没有执行循环体语句组,所以所有变量的值都没有变化,即k=1,s=0,k小于10,不满足循环条件,从而退出do-while循环,执行打印语句:printf("s=%d\n",s);


#include "stdio.h"


void main(void) 

int i, j, total; 


/* 本程序仅用于演示 continue 的作用,实际上没有人用这么笨的方法进行统计 */ 
do 

printf("Please enter an integer: "); 
scanf("%d", &i); 


if ( i == 0 ) 

printf("Zero is not allow.\n"); 
continue; 



for ( j = 1, total = 0; j <= i; ++j ) 

if ( j % 5 ) 
{ /* j 不能被 5 整除 */ 
continue; 

++total; /* 统计从 1 到 i 一共有多少个数字可以被 5 整除 */ 

printf("Total: %d\n", total); 
} while ( i ) ; /* i 等于 0 时退出循环 */ 

我们先来分析一下内循环。假设用户输入的是 5,则内循环的前四次循环中,j % 5 都为真,然后执行 continue; 跳过循环体中余下的语句, 直接执行  ++j,继而判断 j <= i 的真假性,从而选择是否再次进入循环体。本内循环中,因为 continue 的关系,前四次循环 ++total; 都会被跳过。第五次循环 j % 5 为假,不会执行 continue; ,++total; 终于得以被执行。 

外循环中,假设用户输入 0,则 i == 0 为真,continue; 得以被执行,因此跳到 while ( i ),因为 i 为假,故外循环结束。



请注意,本例中的内循环完全是出于演示目的才用 continue 的,这使代码复杂化了,有违 continue 的初衷。continue 是为了简化代码而生的!本例中的内循环如果不使用 continue,代码将会更简单: 

for ( j = 1, total = 0; j <= i; ++j ) 

if ( j % 5 == 0 ) 

++total; /* 统计从 1 到 i 一共有多少个数字可以被 5 整除 */ 



记住,continue 是为了简化代码而生的!使用前请斟酌使用它是否能简化代码,如果不能,则不要用。 

其实本例中的外循环也可以不用 continue。以下代码没有使用 continue,但其功能和上面使用 continue 的那段代码完全一样。 

do 

printf("Please enter an integer: "); 
scanf("%d", &i); 

if ( i == 0 ) 

printf("Zero is not allow.\n"); 

else 

for ( j = 1, total = 0; j <= i; ++j ) 

if ( j % 5 == 0 ) 

++total; /* 统计从 1 到 i 一共有多少个数字可以被 5 整除 */ 


printf("Total: %d\n", total); 

} while ( i ) ; /* i 等于 0 时退出循环 */ 

不过,本例中的外循环使用 continue 使得代码的结构更加清晰明了,紧凑易读,而且也没有使代码复杂化。本例中的外循环使用 continue 告诉我们,当 i 等于 0 时跳到 while ( i )。如果不用 continue 而采用上面这段代码的话,当 i 等于 0 时,我们只能知道 else 下的那条复合语句不会被执行,却不能确定执行完 printf("Zero is not allow.\n"); 后一定会跳到 while ( i ),因为我们不知道循环体中整个 if else 结构后面是否还有其它语句。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值