一.switch语句
switch语句,是另一种多分支选择的语句,其一般形式为
switch(表达式) {
case常量表达式1:语句1;break;
case常量表达式2:语句2;break;
…
case常量表达式n:语句n;break;
default:语句n+1;
}
注:switch(表达式)必须是int类型的.
语义:计算表达式的值,后跳转到相匹配的case(分支标号)处,执行该分支的语句。分支后面如果没有break,则继续顺序执行到下面的case里去,直到遇到一个break.(遇break语句时,将跳出switch语句转到后续语句执行)。如果表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
注意:①为了跳出switch语句,需在switch语句后加一个break语句(只有关键字break,没有参数)。②在case后的各常量表达式的值不能相同,否则会出现错误。③在case后,允许有多个语句,可以不用{ }括起来。
二.循环语句
2.1while语句
一般形式为
while(表达式) 语句[;]
其中表达式是循环条件,语句是循环体。
一个while循环的意思是:当条件满足时,不断地重复循环体内的语句。条件成立是循环继续的条件。条件不成立就不执行该循环。
举例,数位数的算法
#include<stdio.h>
int main()int x;int n=0;scanf_s("%d",&x);n++;x/=10;while(x>0){n++;x/=10;}printf("%d\n",n);
其中,为了不用直接启动debug,依然可以看出程序里循环中的变量是怎样变化的,调试还有两种手段,一种是在纸上用笔分别列出结果,另一种是在程序适当的地方插入printf来输出变量的内容,例如
while(x>0){n++;x/=10;printf("x=%d,n=%d\n",x,n);
}
结果如下:
2.2do-while语句
在进入循环的时候不做检查,而在执行完一轮循环体代码后再检查条件是否满足,满足就继续循环,不满足则结束。该语句至少要执行一次循环语句。一般形式为:
do
{
<循环体语句>
}while(<循环条件>);
例子:计算从1加到100的值
#include<stdio.h>
int main()
{int i, sum = 0;i = 1;do {sum += i;i++;} while (i <= 100);//分号不能省printf("%d\n", sum);return 0;
}
2.3for语句
一般形式为:
for(表达式1;表达式2;表达式3)语句;
表达式1是初始条件,表达式2是循环条件,表达式3是循环每一轮要做的事情。
for中的每一个表达式都可以省略,但; 不能省。for(;表达式;)==while(表达式)
执行过程:①求解表达式1,②求解表达式2,值为真,执行后面的语句,然后求解表达式3,若值为假,则结束循环,③求解表达式3,④转回②步继续执行。
例子,求n!
#include<stdio.h>
int main()
{int n;scanf_s("%d", &n);int i;int sum = 1;for (i = 1; i <= n; i++)sum *= i;printf("%d!=%d\n", n, sum);return 0;
}
2.4跳转语句
break语句
只能能用在循环语句和switch语句中。
在循环语句中,可使程序提前终止循环而执行循环后面的语句。通常break总是与if语句连在一起,即满足条件时便跳出循环。
continue语句
作用:跳过循环体中剩余的语句而强行执行下一次循环。只用在循环体中,常与if条件语句一起使用,用来加速循环。
goto语句
是一种无条件转移语句,可用在程序的任何位置。使用格式为:
goto 语句标号;
goto
依赖于定义在语句开头的标识符,其形式为:标识符:语句
执行goto语句后,跳转到标识符:语句处并执行其后的语句。两者必须同处于一个函数中。
注:goto语句通常不用,它会使程序混乱且不易读。