c语言中continue为什么不能用在while 和do.....while中

作者&投稿:剧志 (若有异议请与网页底部的电邮联系)
c语言中,while 和 do while 循环的主要区别是( )~

1、循环结构的表达式不同:
while循环结构的表达式为:while(表达式){循环体}。
do-while循环结构表达式为:do{循环体;}while(条件表达);。
2、执行末尾循环体的顺序不同
while循环的末尾循环体也是在中间循环体里,并在中间循环体中执行,循环体是否继续运行的条件也在循环体中。
do-while循环是在中间循环体中加入末尾循环体,并在执行中间循环体时执行末尾循环体,循环体是否继续运行的条件在末尾循环体里。
举例如下:
while(0)
{printf("执行循环体。");

do
{printf("执行循环体");
}while(0);
前者先判断一次条件是否满足,不满足所以不执行下面的循环体,循环体没有被执行;
后者先执行一次循环体,再判断条件是否满足,不满足所以不再执行循环体,循环体执行了一次。
这种区别只有在条件在第一次判断就为"0"(假)时才体现出来,若第一次条件判断为非"0"(真),则没有这种区别。

3、执行次数不同
while循环是先判断后执行,如果判断条件不成立可以不执行中间循环体。
do-while循环是先执行后判断,执行次数至少为一次,执行一次后判断条件是否成立,如果不成立跳出循环,成立则继续运行循环体。
4、执行时判断方式不同
while循环执行时只有当满足条件时才会进入循环,进入循环后,执行完循环体内全部语句至当条件不满足时,再跳出循环。
do-while循环将先运行一次,在经过第一次do循环后,执行完一次后检查条件表达式的值是否成立,其值为不成立时而会退出循环。
参考资料来源:
百度百科——while
百度百科——do while

第一个是对的。
do-while是先无条件执行循环体,然後再判断循环条件是否成立。
但是,for不是先执行循环体。for和while相同。

lz主要是for语句实现循环没弄明白。那我好好说明一下:
for的一般形式为:
for(表达式1;表达式2;表达式3)



*举个例子:
for(i=1;i<=100;i++)
sum = sum + 1;
"i=1"是给的循环变量i设置初始值为1,“i<=100”是指定循环条件:当循环变量i的值小於或等於100时,循环继续执行。“i++”的作用是使循环变量i的值不断变化,以便最终满足终止循环的条件,使循环结束。
它相当於以下语句:
i=1;
while(i<=100)
{
sum = sum + 1;
i++;
}


*再举个例子:
for(i=1;i<=100;i++)
{printf("%d",i);}
for语句的执行过程如下:
(1) 先求解表达式1。本例中把整数1赋给变量i。
(2) 求解表达式2,若此条件表达式的值为真(非0),则执行for语句中的循环体,然後执行第(3)步。若为假(0),则结束循环,转到第(5)步。
上例中,循环条件表达式“i<=100”是一个关系表达式,当i=1时,表达式“i<=100”的值为真(非0),故执行循环体中的语句,即printf语句,输出i的当前值1。然後执行第(3)步。
(3) 求解表达式3。在本例中,执行i++,使i的值加1,i的值变成2.
(4) 转回步骤(2)继续执行。
由於此时i=2,表达式i<=100的值为真,再次执行循环体中的语句,printf语句输出i的当前值2。然後再执行步骤(3)。如此反复,直到i变到101,此时表达式i<=100的值为假,不再执行循环体,而转到步骤(5)。
(5) 循环结束,执行for语句的下面一个语句。


ps:
大陆一般都是用红皮书作教材。lz如果有红皮书(C程序设计第四版),翻到P114~P125
有很详细的叙述三种循环的不同。

continue是从当前语句跳转到循环首部
for的判别过程是累计->判断
而while的判别过程是直接判断
就你的程序而言 如楼上所言由于i不会累计所以判别条件恒为真
解决方法就是将i的累计操作放到continue前面
可以是这样的
main()
{int i,sum;
i=0;sum=0;
while(i++<=5){
if(i==3)continue;
sum+=i;
}
printf("%d",sum);
}

不清楚你的程序想表达什么?

continue是跳到下一次循环,也就是说你的程序当i=3时, continue,又什么都没做就跳到if(i=3)这里执行,肯定就死循环了。

假如你的程序想表达1+2+4+5的话

if (i = 3)
{
i++; continue;
}

一样的啊,第一个只是把取出的字符存放在ch中,两者没有差别


c语言中简要叙述break语句和contin ue语句的区别
break用来跳出循环(结束循环);break语句还可以用在switch语句中,用来跳出switch语句。break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。当break语句用于do-while、for、while循环语句中时...

c语言continue的用法
continue用于结束本次循环,并进入下次循环。if控制紧邻其的一个语句,那么当然是为真才能执行的了。所以结论就是:if()为真,直接下次循环,为假的话,执行后续语句。

continuous和continual区别是什么
1)continuous 只用来表示不停止的动作,指“一段时间内多次发生”、“时断时续”或“中断时间很短而又接连发生”。continuous做表语和定语 be continious或continious+名词 。例句:There was continuous fighting on the frontier all day yesterday.昨天一整天,边境上战斗没有停止。The aeroplane is capable of five...

continue的功能是什么详细介绍
5、continue 语句是跳过循环体中剩余的语句而强制执行下一次循环,其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定continue 语句与 break 语句一样, 它将中断正常的控制流程contin。6、continue语句只用在循环语句中作用是表示结束本次循环,而不终止整个循环的...

c语言continue的用法
楼主你的程序,有问题。i(a[i]>a[j]){t=a[=i];a[i]=a[j];a[j]=t;} continie;此句有问题,此处continue无意义,而且你的continue写错了。正确的语句如下:if(a[i]>a[j]){t=a[=i];a[i]=a[j];a[j]=t;}

break 和continue语句有什么区别,能否举例说明,越详细越好。谢谢了...
continue语句只是结束本次的循环,而不是终止整个的执行,接着进行下一次是否执行循环的判定。而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。比如(1)main(){intn;for(n=100;n<=200;n++){if(n%3==0)continie;print("%d",n);} } 当n能被3整除时,执行continue语句,...

C++如何用continnue 语句编一个算1+3+5+7+...+99的编程啊?
循环的时候用,每次逢偶数就continue跳到下一个数字,奇数的话就sum+=i; for(int i=1;i<100;i++){ if(i%2==0)continue;else sum+=i;} 就这一步,其他的都一样

怎么用汇编语言实现,四位共阳数码管显示16个数据,可以每组4个显示...
@A+DPTR MOV 34H,A POP ACC PUSH ACC INC DPTR MOVC A,@A+DPTR MOV 35H,A POP ACC PUSH ACC INC DPTR MOVC A,@A+DPTR MOV 36H,A POP ACC ADD A,#4 CJNE A,#16,CONTINCONTIN: JC CONTIN1 CLR ACONTIN1: MOV DISD,A T0ISRE: POP ACC RETIT1ISR...

C语言中关于掷骰子和赌注的代码编写
include <stdio.h>#include <stdlib.h>#include #define MONEY 200int get_num(void){ srand(clock()); return 1+rand()%6;}int win(int me_num,int computer_num,int n,int *me,int *computer){ if(me_num-computer_num > 0) { printf("太厉害了,您这把赢了呢!\\...

4位共阳数码管,怎么用汇编语言让它显示16个数据?可以每组4个显示,_百度...
@A+DPTR MOV 34H,A POP ACC PUSH ACC INC DPTR MOVC A,@A+DPTR MOV 35H,A POP ACC PUSH ACC INC DPTR MOVC A,@A+DPTR MOV 36H,A POP ACC ADD A,#4 CJNE A,#16,CONTINCONTIN: JC CONTIN1 CLR ACONTIN1: MOV DISD,A T0ISRE: POP ACC RETIT1ISR...

防城港市15333067590: 求c语言大神指教 为何此程序中的continue语句无作用; -
郑谭交沙: continue 是用来跳过循环后面句子用的,放到循环最后当然无作用,如果你是想跳出循环的话,用 break

防城港市15333067590: c语言 在这个程序中continue 怎么没有用啊????代吗如下 -
郑谭交沙: #include void main() { int n, m, h; for(n = 100; n < 201; n++)//1 { for(m = 2; m < n; m++) //2 { h = n%m; if(h == 0) { //continue; 你用continue必定m=n-1 for循序结束了,这里的continue没作用 break; } } if(m==n) //这里要加上判断标识 printf("%d\n", n); } }

防城港市15333067590: C语言continue. -
郑谭交沙: continue 是跳过此次循环的剩下部分,直接进入下个循环.于是i++不执行,仍为3,再次进入循环油进入continue,所以死循环了. break是直接跳出循环.不过i达不到6.

防城港市15333067590: c语言中continue语句是否只能用于三个循环语句中 -
郑谭交沙: continue的作用就是结束当前一次的循环,所以肯定只能应用在循环语句当中,不过也不是完全同意楼上的看法,有的时候break和continue还是要用的,尤其是控制循环的时候,但是一定要注意!!!

防城港市15333067590: c语言中break语句和continue语句的区别,尤其当它们用在switch语句时 -
郑谭交沙: 1、break语句和continue语句在switch中都是跳出循环用的. 2、当在switch中执行到break时,立即跳出switch循环,执行switch下面的语句. 3、当在switch中执行到continue时,立即跳出switch本次循环,进入switch下一次循环. 4、例:如果switch预设不中断要执行10次的话,当执行到第6次遇到break则跳出,余下的4次循环也不执行;当执行到第6次遇到continue则跳出第6次循环,执行第7次及以后循环.

防城港市15333067590: C语言中break怎么和continue区别? -
郑谭交沙: break可以理解为中断整个循环,而continue只是中断一次循环,举个栗子:for(i=1;i{ 语句1;if(条件)break; 语句2;if(条件)continue; 语句3;} 语句4;如果程序运行到break语句,则循环结束,跳转到“语句4”.如果程序运行到continue,则跳过语句3,直接进行i++,去执行下一次循环,循环完之后,再跳转到“语句4”.

防城港市15333067590: C语言中..关于continue和break的问题:
郑谭交沙: 我来回答这个问题吧,当初我也有所疑惑~! 首先纠正一下你的观念…… 1. continue在for循环中不是进行下一次循环,是你理解错误.continue的作用是结束本次循环,虽然结果一样,但是细节上会不一样. 举个例子: for(……) { …… continue...

防城港市15333067590: C语言中continue的用法在for循环与while循环中的区别 -
郑谭交沙: for(part1;part2;part3) 在for循环中,使用 continue 是跳到part3部分.(如果,你在part3的地方做了循环变量的修改,那么,循环变量的值会改变、)而while(exp); 中没有part3这一部分,所以,你在使用的时候,需要自己先进行循环变量的修改.

防城港市15333067590: 在C语言中 error C2044: illegal continue是什么意思 -
郑谭交沙: 这条语句出现在VC或VS对C/C++源文件编译阶段,其中文含义为非法的continue语句. C语言中,continue语句,用于循环结构中,作用是不执行后续循环体,而是继续执行下次循环.continue可以用于各种循环,如while, do-while,for循环等.当continue不属于任何循环,即不在任何一个循环体中时,就会报这个错误. 针对这个错误提示,需要查看提示中continue的位置,以及设计中这个语句属于哪个循环体,是否忘记加大括号等.

防城港市15333067590: 判断题: c语言的continue语句只能冲破一层循环时对的还是错的? -
郑谭交沙: 不对.continue并不会退出循环,只是让当前循环体从头开始执行.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网