控制语句分类
分支
-
if()~ else~
-
switch
循环
-
for()~
-
while()~
-
do~ while~
-
goto
辅助控制
-
continue
-
break
-
return
if-else语句
if语句概述
if (表达式)
语句块1
else
语句块2
常见形式
简化形式
if(表达式) 语句块 例如: if(x>y) printf(“%d”, x);
阶梯形式if语句
if(表达式1) 语句块1
else if(表达式2) 语句块2
else if(表达式3) 语句块3
else if(表达式4) 语句块4
...
else 语句块n
if语句的嵌套
if()
if() 语句块1
else 语句块2
else
if() 语句块3
else 语句块4
注意:
-
语句块:当有若干条语句时,必须用{…}括起来。
-
表达式:
- 一般情况下为逻辑表达式或关系表达式
- 如:if(a= =b && x= =y) printf(“a=b,x=y”);
- 也可以是任意类型(包括整型、实型、字符型、指针类型)
- 如:if(‘a’) printf(“%d”,’a’);
- 请区分if(x=1)与if(x= =1)的不同。
if语句的嵌套
-
else总是与它上面的最近的if配对,与书写格式无关。
-
要实行强行的配对关系可以利用{ }
如:if()
{if() 语句块1}
else 语句块2
switch语句
多分支选择结构
switch语句的基本形式
switch (表达式)
{ case 常量表达式1:语句块1;break;
case 常量表达式2:语句块2; break;
….
case 常量表达式n:语句块n; break;
default :语句块n+1
}
switch语句的使用:
-
每个常量表达式的值必须各不相同,否则将会出现矛盾。
-
当表达式的值与case后面的常量表达式值相等时,就执行此case后面的语句。
-
switch中的表达式可以是整型、字符型表达式或枚举。
-
case 常量:只起语句标号的作用。
-
break语句用于强行跳出switch体,一般每个case后面应有一个break语句,default分支后的break可以省略。
-
多个case可以执行一组语句。
for语句
for(expression1; expression2; expression3)
{
statements;
}
执行过程
-
先求解表达式1;
-
求解表达式2,若为真,则执行循环体,然后执行步骤3;若为假,则执行步骤5; 语句 -求解表达式3;
-
转回执行步骤2;
-
执行for下面的语句。
for语句构成循环
-
表达式1可省略,但循环之前应给循环变量赋值
-
表达式2可省略,将陷入死循环
-
表达式3可省略,但在循环体中增加使循环变量值改变的语句
例如:
for(i=1;i<=100;i++)
{
sum=sum+i;
}
while语句
while语句构成循环
基本形式
while (表达式) {
statatments;
}
do-while语句
do-while语句构成循环
基本形式
do {
statatments;
}while(表达式);
goto语句
循环结构程序
-
当函数有很多个出口,使用goto把这些出口集中到一处是很方便的,特别是函数中有许多重复的清理工作的时候。
-
理由是:
-
-无条件跳转易于理解
-
-可以减少嵌套
-
-可以避免那种忘记更新某一个出口点的问题
-
-算是帮助编译器做了代码优化
_loop:
statatments;
goto _loop;
break语句
-
用于从循环体内跳出循环体,即提前结束循环。
-
break只能用在循环语句和switch语句中。
for(r=1;r<=10;r++){
area=pi*r*r;
if(area>100) break;
printf(“%f”,area);
}
素数
在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。
换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数。1和0既非素数也非合数。
continue语句
-
结束本次循环,接着判定下一次是否执行循环
-
注意continue与break的区别
-
continue只结束本次循环,而break终止本层循环
for(n=100;n<=200;n++) {
if (n%3 == 0)
continue;
printf(“%d”,n);
}
return语句
-
return语句的一般形式: return ( <表达式> )
-
主要用于终止包含它的函数的执行
-
若终止的为主函数,则主程序结束