全部问题 > 当前问题

#include <stdio.h> main() { switch(month) { case 2: days=28; break; case 4:case 6:case 9:case 11: days=30; break; default: days=31; break; } printf("%d天\n",days); }

老师 这个程序哪儿错了1.png

邢慧雅 2015-7-18 14:21:04

共 14 个回答

祁老师 2015-7-18 14:32:59

变量使用之前需要定义

这里的month days没有定义

邢慧雅 2015-7-18 14:54:55

回复 祁老师:这是修改后的 这样也可以吧 


#include <stdio.h>

main()

{

int a;

printf("请输入一个月份:");

scanf("%d",&a);

switch(a)

{

  case 2:

printf("28天\n");

break;

  case 4:case 6:case 9:case 11:

printf("30天\n");

break;

  default:

printf("31天\n");    

break;

}

}


祁老师 2015-7-18 15:03:13

回复 邢慧雅:是的 可以

邢慧雅 2015-7-18 15:08:10

回复 祁老师:那如果给month和days赋值的话   int month,days;scanf("%d",&month);可以么

祁老师 2015-7-18 15:09:03

回复 邢慧雅:可以

邢慧雅 2015-7-18 15:18:01

回复 祁老师:老师这个程序里为什么会执行case 2 ? case 2不是当x=2 才会执行么?

#include <stdio.h>
main()
{ int x=1,y=0,a=0,b=0;
  switch(x)
  { case 1:
    switch(y)
    { case 0: a++; break;
      case 1: b++; break;
    }   
    case 2: a++;b++;break;
    case 3: a++;b++;
  }
  printf("a=%d,b=%d\n",a,b);
}

祁老师 2015-7-18 15:24:40

回复 邢慧雅:这是一个嵌套的switch语句,case 1后面并没有break 所以会继续执行

邢慧雅 2015-7-18 15:28:56

回复 祁老师:可是前面是switch(x)  case 2 不是表示x为2时的情况么?


祁老师 2015-7-18 15:31:05

回复 邢慧雅:你回去仔细看视频讲解吧。

x初始为1 所以执行case 1 当case任何一条语句后面没有break的时候 是会继续执行的。


邢慧雅 2015-7-18 15:32:38

回复 祁老师:我知道啊 但是case 2 中的2  是表示什么的  

祁老师 2015-7-18 15:50:29

回复 邢慧雅:2表示x的值, 如果x初始值为2 那么就直接执行case 2 但是这里的x初始值为1 所以直接执行case 1 执行完case 1之后 这里没有break所以会继续执行case 2

祁老师 2015-7-18 15:50:57

回复 邢慧雅:回头多看看视频吧, 你现在是这个switch的结构用法没有掌握哦

邢慧雅 2015-7-18 15:51:48

回复 祁老师:哦哦 懂了 谢谢老师

邢慧雅 2015-7-18 15:52:48

回复 祁老师:恩恩 

问题来自: switch语句