现在的位置: 首页 > 03 分支结构 > 正文

switch-case-break:字符释义

2013年11月16日 03 分支结构 ⁄ 共 1245字 ⁄ 字号 switch-case-break:字符释义已关闭评论

【问题:字符解释】
从键盘输入一个字符,当输入的字符为“y”或“n”或“c”时,分别显示“Yes”、“No”、“Cancel”,输入其他字符时显示“Illegal!”。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
int main(int argc, char *argv[])
{
    char c=getchar();
    switch(c) {
    case 'y':
        printf("Yes\n");
        break;
    case 'n':
        printf("No\n");
        break;
    case 'c':
        printf("Cancel\n");
        break;
    default:
        printf("Illegal!\n");
        break;
    }
    return 0;
}

switch-case-break的基本结构如下:

1
2
3
4
5
6
7
8
9
switch()
{
	case :
		break;
	case :
		break;
	default:
		break;
}

【问题:字符解释】
从键盘输入一个字符,当输入的字符为“Y”或“y”、“N"或“n”、"C"或“c”时,也就是说不区分大小写,分别显示“Yes”、“No”、“Cancel”,输入其他字符时显示“Illegal!”。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
int main(int argc, char *argv[])
{
    char c=getchar();
    switch(c) {
    case 'y':
        printf("Yes\n");
        break;
    case 'Y':
        printf("Yes\n");
        break;        
    case 'n':
        printf("No\n");
        break;
    case 'N':
        printf("No\n");
        break;        
    case 'c':
        printf("Cancel\n");
        break;
    case 'C':
        printf("Cancel\n");
        break;        
    default:
        printf("Illegal!\n");
        break;
    }
    return 0;
}

上面的代码看着有点重复,能简化一下吗? 当然!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
int main(int argc, char *argv[])
{
    char c=getchar();
    switch(c) {
    case 'y':
    case 'Y':
        printf("Yes\n");
        break;        
    case 'n':
    case 'N':
        printf("No\n");
        break;        
    case 'c':
    case 'C':
        printf("Cancel\n");
        break;        
    default:
        printf("Illegal!\n");
        break;
    }
    return 0;
}

这里应用了switch-case中的穿透,意思是当跳转到相应的分支后,只要没遇到break,就一直往下执行!

在本例中,如果输入字符 n,这个分支什么都没做,由于没有break,就继续执行,所以无论输入n还是N,执行的语句是一样的。

switch考查两点

所写的任何switch语句都必须遵循以下规则:只能针对基本数据类型使用switch,这些类型包括int、char等; case标签必须是常量表达式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 2012_03_C_21
#include <stdio.h>
 
int main()
 {
      int s=0,n;
      for(n=0; n<3; n++) {
         switch(s) {
          case 0:
          case 1:
              s+=1;
          case 2:
              s+=2;
              break;
          case 3:
              s+=3;
          default:
              s+=4;
          }
          printf("%d,",s);
      }
    return 0;
  }

输出:3,10,14,

抱歉!评论已关闭.