A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 红双喜 中级黑马   /  2015-7-27 22:54  /  1073 人查看  /  18 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在基础视频里有一节讲到switch语句这块,讲了几个小程序
以下是老师的代码
#include <stdio.h>

int main(int argc, const char * argv[]) {
    int season;
    printf("请输入月份\n");
    scanf("%d",&season);
   
    if(season<1 || season>12){
        printf("请输入正确的月份\n");
        return 0;}
    switch (season){
    case 11:
    case 12:
    case 1:
   
        printf("冬季\n");
            break ;
   
    case 2:
    case 3:
    case 4:
   
    printf("春季\n");
            break;
   
    case 5:
    case 6:
    case 7:
            
            
    printf("夏季\n");

            break ;
    case 8:
    case 9:
    case 10:

    printf("秋季\n");
            break;
}
return 0;
}



那么问题来了,老师判断输入是否合法时为什么不使用default;提示用户输入合法的月份,而是要用if
用default;会有什么不好的后果么?default貌似很方便啊。
我只知道如果用if的话若为假程序则不会执行,这一点的考虑是不是为了缩短运算时间?除了这个还有其他原因么?

18 个回复

倒序浏览
  1. #include <stdio.h>

  2. int main(int argc, const char * argv[]) {
  3.     int season;
  4.     printf("请输入月份\n");
  5.     scanf("%d",&season);
  6.    
  7.     /*if(season<1 || season>12){
  8.         printf("请输入正确的月份\n");
  9.         return 0;}*/
  10.     switch (season){
  11.     case 11:
  12.     case 12:
  13.     case 1:
  14.    
  15.         printf("冬季\n");
  16.             break ;
  17.    
  18.     case 2:
  19.     case 3:
  20.     case 4:
  21.    
  22.     printf("春季\n");
  23.             break;
  24.    
  25.     case 5:
  26.     case 6:
  27.     case 7:
  28.             
  29.             
  30.     printf("夏季\n");

  31.             break ;
  32.     case 8:
  33.     case 9:
  34.     case 10:

  35.     printf("秋季\n");
  36.             break;
  37.             
  38.     default :
  39.     printf("请输入正确的月份\n");

  40.   
  41.             
  42.             
  43.             
  44.     }
  45.     return 0;
  46. }
复制代码
回复 使用道具 举报
我这样也用的好爽啊,用if还要自己想小于谁,大于谁。
回复 使用道具 举报
你说的好有道理,我竟无言以对啊
回复 使用道具 举报
在switch语句中,如果没有任何 case 表达式与开关值匹配,则控制传递给跟在可选 default 标签后的语句。如果没有 default 标签,则控制传递到 switch 以外

点评

我知道这个,看题。  发表于 2015-7-28 00:12
回复 使用道具 举报
if不 是判断吗 default应该是判断之后才用的 吧
回复 使用道具 举报
王远飞 发表于 2015-7-27 23:32
你说的好有道理,我竟无言以对啊

不是吧。
回复 使用道具 举报
应该为了省内存吧 if条件不成立的话 后面就都不执行了

点评

恩 貌似就这一个理由,后面如意大师也说了,他习惯那么写,他说既然假了,就没进行的必要了。  发表于 2015-7-28 02:11
回复 使用道具 举报
用if可读性更强。
回复 使用道具 举报
用   default;  怎么  提示用户输入合法的月份???
回复 使用道具 举报
老师是的代码只是为了能让初学者更容易理解而已。。。没你想的那么复杂!!!
回复 使用道具 举报
c语言里面的语法很多都可以替换
回复 使用道具 举报
这个问题就好像你买了面包,你不看生产日期过不过期,反而要咬一口去判断过不过期一个道理
回复 使用道具 举报
:victory::victory::victory:
回复 使用道具 举报
好牛逼的样子!
回复 使用道具 举报
两者完全可以互相替换!至于你说内存问题=。=还有运算速度问题,完全可以忽略
回复 使用道具 举报
开始我也有这样的想法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马