while语句是先判断条件为“真”时才循环,do...while语句是先进入循环再判断条件为“假”来决定是否终止循环。
inti, sum=0;inti, sum=0; scanf("%d", &i); scanf("%d", &i);while(i <= 10) {do{ sum = sum + i ; sum = sum + i ; i++; i++; } }while(i <= 10) ;
当输入小于等于10的数时,两个结果完全一样,当输入大于10的数时,左边结果为0,右边结果为输入的数。说明左边未进入循环,而右边循环了一次。
当运行到break语句或continue语句时,其后面的语句都不再运行。但不同的是:break语句中止了循环,从循环后面的语句开始运行;而continue语句并不中止循环,而是跳到循环的头部开始下一轮循环。
![]()
#include<stdio.h>intmain(void) {inti, sum=0;while(1) { scanf("%d", &i);if(i > 10 || i < 0) { printf("请输入小于10的正数\n");continue; }else if(i == 0) { printf("退出循环\n");break; } sum = 0;do{ sum = sum + i ; i--; }while(i > 0); printf("sum = %d\n", sum); }return0; }
goto语句的使用危险性很大,一般不建议使用,但在多重循环的情况下,要终止到指定的某一层循环时,用goto的确很省事。使用goto语句要注意以下几点,否则编译并不一定出错,但程序很危险。下面的例子就很危险。
![]()
#include<stdio.h>intmain(void) {intx, y; scanf("%d", &x); scanf("%d", &y);if(x == 0) { printf("aaaaaa\n");gotoLA1; //这是很危险的做法 }if(y == 100) { LA1: printf("bbbbbb\n"); }return0; }