分支结构
if语句
结构为:
if(表达式)
{
语句;
}
若条件为真执行语句,否则跳过该语句。
if(表达式)
{
正确时执行语句;
}
else
{
错误时执行语句;
}
若条件为真执行第一个语句,否则执行第二个语句。
if(表达式_1)
{
语句_1;
}
else if(表达式_2)
{
语句_2;
}
else if(表达式_3)
{
语句_3;
}
else
{
语句_n;
}
由上到下判断条件,若为真则执行条件后的语句,然后执行if 语句后的语句,否则继续判断,若都不符合则执行最后一个else 后的语句。
注意:else 只与最近的if 配对。
一个if 语句示例:
int age = 0;
printf("Please input your age:>");
scanf("%d", &age);
if (age <= 18)
{
printf("未成年人\n");
}
else if (age <= 60)
{
printf("中年人\n");
}
else
{
printf("老年人\n");
}
switch语句
结构为:
switch(表达式)
{
case 常量_1 : 语句_1;
case 常量_2 : 语句_2;
case 常量_3 : 语句_3;
default : 语句_n;
}
判断表达式的值与case后的常量是否相等,若相等则执行case 后的语句,并向下执行直至break; 或} 。若都不符合则执行default 后的语句。 注意:表达式必须是整型表达式,case 后必须是一个整型常量。 一个switch 语句示例:
int day = 0;
printf("Please input a day:>");
scanf("%d", &day);
switch(day)
{
case 1 :
printf("Monday\n");
break;
case 2 :
printf("Tuesday\n");
break;
case 3 :
printf("Wednesday\n");
break;
case 4 :
printf("Thursday\n");
break;
case 5 :
printf("Friday\n");
break;
case 6 :
printf("Saturday\n");
break;
case 7 :
printf("Sunday\n");
break;
default : printf("Wrong number\n");
}
不加break; 的妙用:在多种情况都需要执行相同语句时可以不加break; 。如:
int day = 0;
printf("Please input a day:>");
scanf("%d", &day);
switch(day)
{
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
printf("Weekday\n");
break;
case 6 :
case 7 :
printf("Weekend\n");
break;
default : printf("Wrong number\n");
}
循环结构
在C语言中循环有三种,在大部分情况下这三种结构都可以互换,因此熟练掌握其中一种就足以应付大部分情况。
while语句
结构为:
while(表达式)
{
语句;
}
若表达式为真开始执行,重复执行语句直至表达式为假。 流程图:
建议:为避免陷入死循环,在使用while 循环时应包括四个部分:I(初始化,initialize)T(判断,test)E(执行,execute)M(修正,modify)。缺少其中一个或使其中一个无法执行都应当引起重视。一个标准的while 循环语句:
int i = 1;
while(i <= 10)
{
printf("%d ", i);
i++;
}
一个while 语句的运用实例:清空缓存区:
int ch = 0;
while((ch = getchar()) != EOF && ch != '\n');
for语句
结构为:
for(表达式1;表达式2;表达式3)
{
语句;
}
三个表达式分别为初始化、判断、修正。 首先进行初始化,然后判断,若为真则开始执行语句,每循环一次都进行一次修正,直至判断为假。 流程图:
建议:①不要随意在循环体中改变控制变量的值,可能会引发死循环。②控制变量的判断范围最好使用前闭区间、后开区间的写法。一个for 循环语句示例:
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
do while语句
结构为:
do
{
语句;
}
while(表达式);
先执行语句,然后判断表达式,若为真接着执行循环体直至为假,若为假则结束循环。
注意:在while 后的括号后有一个分号,不要漏了。
流程图:
可以看出,do…while 语句至少执行一次。 一个do…while 语句的实例:
int i = 0;
do
{
i++;
printf("%d ", i);
}while(i < 10);
break语句、continue语句
当循环执行到break; 时,直接跳出循环。 当循环执行到continue; 时,直接跳过当前循环并执行判断下一次循环。 这两个语句在不同循环中的作用已在不同循环的流程图中表现了出来。
|