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(a= =b && x= =y) printf(“a=b,x=y”);
也可以是任意类型(包括整型、实型、字符型、指针类型)
如:if(‘a’) printf(“%d”,’a’);
请区分if(x=1)与if(x= =1)的不同。
例:
#include <stdio.h>
int main()
{
float a = 4,b = 5,c = 2,t;
if(a>b) {t=a;a=b;b=t;}
if(a>c) {t=a;a=c;c=t;}
if(b>c) {t=b;b=c;c=t;}
printf(“%5.2f,%5.2f,%5.2f”,a,b,c);
return 0;
}
if语句的嵌套
if()
if() 语句块1
else 语句块2
else
if() 语句块3
else 语句块4
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语句的使用:
break语句用于强行跳出switch体,一般每个case后面应有一个break语句,default分支后的break可以省略。
多个case可以执行一组语句。
for语句
一般形式
for(expression1; expression2; expression3)
{ statements;}
执行过程
1.先求解表达式1;
2.求解表达式2,若为真,则执行循环体,然后执行步骤3;若为假,则执行步骤5;
3.求解表达式3;
4.转回执行步骤2;
5.执行for下面的语句。
for语句构成循环
例如:
for(i=1;i<=100;i++)
{
sum=sum+i;
}
goto语句
goto语句构成循环
例子,求1到100的和
int main()
{
int i = 1, sum=0;
if (i<=100) {
sum=sum+i;
i++;
}
printf(“%d”,sum);
return 0;
}
如何利用goto语句构成循环?
集中于一处退出函数
循环结构程序
当函数有很多个出口,使用goto把这些出口集中到一处是很方便的,特别是函数中有许多重复的清理工作的时候。
理由是:
-无条件跳转易于理解
-可以减少嵌套
-可以避免那种忘记更新某一个出口点的问题
-算是帮助编译器做了代码优化
int fun(inta)
{ intresult = 0;
char*buffer = kmalloc(SIZE);
out:
kfree(buffer);
if(buffer == NULL)
return-ENOMEM;
if(condition1) {
while(loop1) {
...
}
result = 1;
goto out;
}
return result;
}
while语句
while语句构成循环
基本形式
while (表达式) {
statatments;
}
do-while语句
do-while语句构成循环
基本形式
do {
statatments;
}while(表达式);
break语句
用于从循环体内跳出循环体,即提前结束循环。
break只能用在循环语句和switch语句中。
for(r=1;r<=10;r++){
area=pi*r*r;
if(area>100) break;
printf(“%f”,area);
}
continue语句
结束本次循环,接着判定下一次是否执行循环
注意continue与break的区别
continue直结束本次循环,而break终止本层循环
for(n=100;n<=200;n++) {
if (n%3 == 0)
continue;
printf(“%d”,n);
}
return语句
return语句的一般形式: return ( <表达式> )
主要用于终止包含它的函数的执行
若终止的为主函数,则主程序结束