仍旧先看两端代码:
if...else...
void main()
{
char ch;
uint count1=0;
uint count2=0;
uint count=0;
while((ch=getchar())!='#')
{
if(ch==' ')
count1++;
else if(ch=='\n')
count2++;
else
count++;
}
printf("空格数:%d\n换行数:%d\n总字符数:%d\n",count1,count2,count);
switch...case...
//统计输入字符数,换行数以及空格数。
void main(){
int count1=0;
int count2=0;
int count=0;
char ch;
while((ch=getchar())!='#')
{
switch(ch)
{
case ' ' : count1++;break;
case '\n': count2++;break;
default:count++;break;
}
}
printf("空格数:%d\n换行数:%d\n总字符数:%d\n",count1,count2,count);
}
例如不是a就是b,这样使用if...else...就很简单可以实现,如上面的情况一。但如果情况是这样的呢,如果不是a可能是b也可能是c或者d,抑或随意能想到的那个可选项,这种情况怎么处理?如果使用if...else...嵌套实现就可能降低程序的可读性。而且我们自己在编程的时候也可能搞混乱,方法就是使用 switch...case...,如上面的情况二。下面介绍switch语句的用法。
switch...case...语句用来处理多重选择,它的基本用法如下:
switch(判断表达式或变量)
{
case 常量1:表达式1;break;
case 常量2:表达式2;break;
........
case 常量n:表达式n;break;
default:表达式;break;
}
值得注意的是不能使用变量作为case的标签。其中case之后表达式可选择缺省。执行过程是当程序扫描至标签列表(case1等),找与switch后圆括号里值相匹配的值,然后执行相应的动作,也就是case后面的紧跟的表达式。标签匹配怎么办那就直接跳转至default语句,如果default语句缺省,程序跳转出switch语句,继续向下执行。那break有什么作用呢?其实它的作用就导致程序跑出switch语句,如果没有break语句,相匹配的语句到switch末尾的每一条语句都将被执行。