一、与if else的对比:
if语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。例如,人口统计分类(按年龄分为老、中、青、少、儿童),工资统计分类,银行存款分类等。
当然这些都可以用嵌套的if语句来处理,但如果分支较多,则嵌套的if语句层数多,程序冗长而且可读性降低。C语言提供switch语句直接处理多分支选择。
二、两段代码的运行:
#include <stdio.h>
int main()
{
int idata;
printf("请输入一个数\n");
scanf("%d",&idata);
switch(idata){
case 1: //一定要用break;如果有多种情况共用,需要放在一块
case 2:
case 3:
printf("满足1、2和3三种情况\n");
break;
case 4:
printf("满足第4种情况\n");
break;
default:
printf("满足其他情况\n");
}
getchar();
char cdata;
printf("请输入一个字符\n");
scanf("%c",&cdata);
switch(cdata){
case 'c':
case 'A':
case 'B':
printf("满足前三种情况\n");
break;
default:
printf("满足其他情况\n");
}
return 0;
}
三、注释:
关于 getchar();
这段代码可以吸收回车,在第一段的选择语句代码中,输入整型数后,需要用回车来确认,若没有消除回车的装置,就不能输入字符,因为回车也是字符,cdata——直接将回车吸收了。当 getchar();出现时,回车就会被吸收了。
1、没有 getchar();时的编译结果:
2、存在 getchar 时的编译结果: