这是第五篇,我准备记一下“选择结构程序设计”的笔记。
众所周知,在很多情况下,我们需要根据某个条件是否满足来决定是否执行指定的操作任务,或者我们需要从给定的多种操作选择其一,选择结构就可以解决这样的问题。
一.if 语句的选择结构及其嵌套
1.
if(表达式)语句1
if(表达式)
语句1
else
语句2
3.
if (表达式1) 语句1
else if(表达式2) 语句2
else if(表达式3) 语句3
… …
else if (表达式m) 语句m
else 语句m+1
这个形式下的 if 语句拥有“内嵌语句”,每个内嵌语句的末尾都要有分号。
在系统对 if 语句编译时,如果发现出现分号,还会检查其后有无 else ,如果没有,就认为整个 if 语句结束,如果有。则把 else 子句作为 if 语句的一部分;else 语句不能单独使用。
4.
if()
if() 语句1
else 语句2
else
if() 语句3
else 语句4
在这里要注意配对关系,else 总是与它上面最近的未配对的 if 配对。因此为了使程序清晰易读,最好采用锯齿形的缩进形式。
二.switch 多分支选择结构
当分支较多时,比如说成绩分类,使用嵌套的 if 语句会使程序冗长而且可读性降低,这时我们可以使用 switch 语句直接处理多分支选择。
#include<stdio.h>
int main ()
{
char grade;
scanf("%c",&grade);
printf("Your score:");
switch(grade)
{
case 'A':printf("85~100\n");break;
case 'B':printf("70~84\n");break;
case 'C':printf("60~69\n");break;
case 'D':printf("<60\n");break;
default:printf("输入了错误数据!\n");
}
return 0;
}
switch(表达式)
{
case 常量1 : 语句1
case 常量2 : 语句2
… … …
case 常量n : 语句n
default : 语句n+1
}
switch 表达式值的类型应为整数类型(包括字符型)。
switch 下面的花括号内是一个复合语句,在执行时,先计算 switch 后面的“表达式”的值,然后将它与各 case 标号比较,如果与某一个 case 标号中的常量相同,流程就转到此 case 标号后面的语句;如果没有与 switch 表达式相匹配的 case 常量,流程就转去执行 default 标号后面的语句,若没有 default 标号,此时还没有与 switch 相匹配的 case 常量。则不执行任何语句,流程转到 switch 语句的下一个语句。
case 标号出现的次序不影响执行结果,但每一个 case 常量必须互不相同。
一般情况下,在执行一个case子句后,应当用 break 语句使流程跳出 switch 结构,这样就可以终止 switch 语句的执行。
#include <stdio.h>
int main ()
{
void action 1 (int t,int t),action 2 (int,int);//函数声明
char ch;
int a=15,b=23;
ch=getchar()
switch(ch)
{
case 'a':
case 'A':action 1(a,b);break;
case 'b':
case 'B':action 2(a,b);break;
......
default:putchar('\a');
}
return 0;
}