C语言——循环语句
要想了解循环就必须先明白构成循环的要素:
1、循环的起始条件;
2、循环体,即反复被执行的代码;
3、结束条件;
4、是循环趋向于结束的语句或者是操作;
循环语句分为三种分别是:goto语句、while语句、for循环语句;下面详细说明:
goto语句
goto语句其实是一个跳转语句,利用跳转语句的特性从而构成循环;
goto语句的语法:
goto 语句标号;
语句标号用标识符表示,它的定名规则与变扯名相同,即由字母、数字和下划线组成,其第一个字符必须为字母或下划线。不能用整数来作标号。
goto语句用法的例子:
#include <stdio.h>
int main(void)
{
int sum = 0;
int i = 1;
loop:
sum += i;
i++;
if(i > 100)
{
goto exit;
}
goto loop;
exit:
printf("sum = %d\n", sum);
return 0;
}
通过上述代码可以知道goto语句是通过设置标签然后利用goto语句跳转到指定标签的位置直到达到结束条件为止从而实现循环的循环的效果,不过goto语句会破坏结构化的编程的结构一般不建议使用。
while语句
while语句的语法:
while (表达式)
{
语句;
}
语义:判断表达式如果为真就执行语句,语句执行完之后再继续进行表达式的判断,如果为假就结束循环执行while循环后面的语句;
用法例子如下:
#include <stdio.h>
int main(void)
{
int sum = 0;
int i = 1;
while(i <= 100)
{
sum += i;
++i;
}
printf("sum = %d\n", sum);
return 0;
}
判断i是否小于100是就执行sum += i;和++i;语句当i大于100时结束循环打印sum的值。
do-while语句
do-while语句的语法:
do
{
语句;
}while(表达式);
注意这里的while()后面记得加上分号;
语义:
先执行do{}里面的语句,然后判断表达式如果为真就继续执行语句,然后再判断while(表达式)里面的表达式,重复这个过程,直到表达式为假,do-while 语句结束,程序继续往下。
do-whiel语句的用法例子:
记录从键盘上输入的字符个数;
#include <stdio.h>
int main(void)
{
char ret;
int count = 0;
do
{
ret = getchar();
++count;
}while(ret != '\n');
printf("count = %d\n", count);
return 0;
}
程序进去就先进行输入数据和记录字符个数然后在判断while表达式;
while语句和do-while语句的区别:
do-while语句是先执行在判断而while语句是先执行在判断,二者的逻辑顺序不同;
for语句
for循环语句的语法:
for( 表达式 1; 表达式 2; 表达式 3)
{
循环体;
}
语义:
第一步求解表达式1;
第二步判断表达式2
第三步表达式2结果为真就执行循环体语句;
第四步求解表达式3;
求解完之后,继续判断表达式2重复第二步到第四步直到表达式2判断为假,for循环结束。
for循环用法例子:
找出水仙花数;
#include <stdio.h>
int main(void)
{
int hundred = 0, ten = 0, unit = 0, i = 100;
for(i = 100; i <= 999; i++)
{
unit = i % 10;
ten = (i % 100) / 10;
hundred = i / 100;
if(i == unit*unit*unit + ten*ten*ten + hundred*hundred*hundred)
{
printf("%d is Narccissistic Number\n", i);
}
}
return 0;
}
上述代码的执行流程是这样的:先求解表达式i = 100,然后判断 i是否小于等于999是执行取出三位数的个位十位百位的操作,然后执行if判断如果if判断结果为真就输出i,if语句结束后求解表达式i++再重复以上判断i <= 999,执行循环体求解++i的步骤直到i > 999为止,通过以上流程就能准确求出水仙花数了;
这么多的循环语句我们应该选用那一种呢?
1、for循环语句多用于有一定范围的场景;
2、while循环语句和do-while循环语句多用于只有某个结束条件的场景;
结束循环的语句还有break语句和continue语句,它们的作用各不相同;
break语句
break语句可以用在switch语句中使得switch(常量表达式)和case 常量表达式二者的常量表达式只匹配一次;
break语句也可以用在循环while , do-while, for循环语句中作用是跳出本层循环执行本层循环外的语句;
continue 语句
continue语句只能用在循环中作用是结束本次循环,继续下一次循环 ;