c语言入门:[24]switch语句

2025-10-21 04:12:24

现在对于下面的程序我们应该一看就懂,其实这样写无论从逻辑上还是电脑执行上都已经很好了,只是我们书写起来包括阅读上显得代码有点臃肿。

main()

{

   int n;

   printf("请输入一个小写数字(1~9)");

   scanf("%d",&n);

   if(1==n)

   {

     printf("壹\n");

   }

   else if(2==n)

   {

     printf("贰\n");

   }

   else if(3==n)

   {

     printf("叁\n");

   }

   else if(4==n)

   {

     printf("肆\n");

   }

   else if(5==n)

   {

     printf("伍\n");

   }

   else if(6==n)

   {

     printf("陆\n");

   }

    else if(7==n)

   {

     printf("柒\n");

   }

    else if(8==n)

   {

     printf("捌\n");

   }

    else if(9==n)

   {

     printf("玖\n");

   }

   else

   {

     printf("数字应是1~9\n");

   }

}

那我们用switch语句替换一下

main()

{

   int n;

   printf("请输入一个小写数字(1~9)");

   scanf("%d",&n);

   switch(n)

   {

     case 1:printf("壹\n");break;

     case 2:printf("贰\n");break;

     case 3:printf("叁\n");break;

     case 4:printf("肆\n");break;

     case 5:printf("伍\n");break;

     case 6:printf("陆\n");break;

     case 7:printf("柒\n");break;

     case 8:printf("捌\n");break;

     case 9:printf("玖\n");break;

     default:printf("数字应是1~9\n");break;

   }

}

其实switch就是一个特殊的多分支选择语句, switch(n)意思就是选择n这个变量判断n到底都有可能是什么值,下面的一个case就是一个分支,case后面就是一个n可能的值,break表示退出的意思这里是退出这个switch语句,这里的default是默认路径跟开头的if语句写法里的else是一个意思就是以上分支都不执行时默认执行这个。

为什么要学习switch语句那,其实就是为了某些情况下书写起来规整些,switch是特殊的if语句所以所有用switch语句写的代码用if都能写,但很多选择判断switch语句可就不行了。

下面介绍下switch语句的特点。

1.语法上swtich是用一个大括号来表示它的作用范围的,case语句后面是冒号,每一个case就是一个分支只不过这里不用大括号,case后面可以写很多条正常的语句,当然嵌套进去if语句循环语句啥的都行,例如:

case 1:

   语句1;

   语句2;

   if语句;

   while循环语句;

case 2:

   语句1;

   语句2;

2.switch就是用来选择判断整数的,所以switch后面的括号里的值只能是整数,当然字符也行,因为字符有asc码可以和整数互转这个是之前介绍过的,switch(n)如果n是float类型那直接就报语法错误了。如果把上面的例子里switch(n)换成switch(n>0)运行,我输入数字5后的截图如下

c语言入门:[24]switch语句

为什么会是输出1呢?因为n>0这个表达式的值为1,所以符合第一个case 1: ,然后执行了printf("壹\n");后退出了switch语句。

所以switch大多是用来判断某个整数变量的可能的几种取值情况,大多数时候switch后面的括号里就是一个整数变量。

3.在switch语句执行过程中一旦某个case后面的值符合后,这个case后面的其它case语句程序就不判断了所以才要加break;

如果我们把上面的例子去掉break

main()

{

   int n;

   printf("请输入一个小写数字(1~9)");

   scanf("%d",&n);

   switch(n)

   {

     case 1:printf("壹\n");

     case 2:printf("贰\n");

     case 3:printf("叁\n");

     case 4:printf("肆\n");

     case 5:printf("伍\n");

     case 6:printf("陆\n");

     case 7:printf("柒\n");

     case 8:printf("捌\n");

     case 9:printf("玖\n");

     default:printf("数字应是1~9\n");

   }

}

下面看运行截图

c语言入门:[24]switch语句

你会看到一但case 3:符合后,后面的case语句就不判断了,而且他们后面的代码也会被执行,所以我们才要加break。

当然我们也可以利用这个特点。请看下面的代码。

main()

{

   int n;

   printf("请输入一个月份(1~12)");

   scanf("%d",&n);

   switch(n)

   {

     case 1:

     case 3:

     case 5:

     case 7:

     case 8:

     case 10:

     case 12:

        printf("大月31天\n");

        break;

     case 4:

     case 6:

     case 9:

     case 11:

        printf("小月30天\n");

        break;

   }

如果我们输入3,第一个case 1:程序判断下不符合,判断下一个,case 3:符合,符合后下面的其它case压根不判断了,case 3后面包括case 3下方其它case后面的代码都会被执行直到遇到break才退出。

switch语句就讲到这,留个练习吧,输入年月 输入这个月有多少天,例如输入 2015年12月 则输出2015年12月有31天,要求用switch语句做,当然这里面有2月份要特殊处理下,你可以在case 2:里面嵌套if语句来判断是不是闰年。

之前一直说有交流代码啥的留评论里,现在看来百度经验的评论里只能留一两行代码,看来是白费了,不行发到百度贴吧里吧,看看哪天建立个贴吧啥的。

(共篇)上一篇:随机数|下一篇:
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢