流程控制《2》switch

来源:互联网 发布:获取windows权限 编辑:程序博客网 时间:2024/05/28 20:19

#include <stdio.h>


/*

switch语句的结构:


switch (表达式) {

case 数值1或范围1:

代码段1

break; //break用来跳出整个switch语句块,如果某一个case下面没有出现break,那么会依次执行后续的每一个case下的代码,直到遇到第一个break,跳出switch

case 数值2或范围2

代码段2

break;

...

default:

代码段n

[break;]

}


//switch语句块执行的流程是:首先根据switch后面的()里的表达式的值,依次和每个case标号后的数值进行比较,一旦和某个case后的值比较的结果相等,就会执行这个case标号下的语句,直到遇到break才跳出整个switch语句块。


   */


/*

switchif的比较:

1,并不是所有情况下if都可以和switch互换的

2,当分支非常多时,建议使用switch

3,当无法确定一个有限范围时,只能用if

   */


int main()

{

/*

printf("请输入任意一个字符:\n");

char c;

scanf("%c", &c);


printf("请输入两个整数:\n");

int n1, n2;

scanf("%d%d", &n1, &n2);


switch (c) {

case '+':

printf("%d + %d = %d\n", n1, n2, n1+n2);

//break; //因为这里的break被注释起来了,所以程序会继续向下执行,在下一个case标号下面的代码中出现了break,才使得程序跳出了整个switch语句块

case '-':

printf("%d - %d = %d\n", n1, n2, n1-n2);

break;

case '*':

printf("%d * %d = %d\n", n1, n2, n1*n2);

break;

case '/':

printf("%d / %d = %d\n", n1, n2, n1/n2);

break;

default:

; //空语句可以解除default分支下没有任何代码带来的编译错误

}

*/


/*

switch (c) {

case 'a' ... 'z':

printf("小写字母!\n");

break;

case 'A' ... 'Z':

printf("大写字母!\n");

break;

case '0' ... '9':

printf("个位数字!\n");

break;

default:

printf("特殊字符!\n");

}

*/


/*

printf("请输入一个整数(1~12):\n");

int month;

scanf("%d", &month);


switch (month) {

//case 5 ... 3: //错误的,范围必须是从小到大的

case 3 ... 5: 

printf("春季\n");

break;

case 6 ... 8:

printf("夏季\n");

break;

case 9 ... 10:

printf("秋季\n");

break;

case 12:

case 1:

case 2: //三个case用的是同一段代码,前两个case下面是不能有break

printf("冬季\n");

break;

default:

printf("输入不合法!\n");

}

*/


/*

//ifswitch不能互换的一个返利:

int a = 101;

switch (a) {

case a>100: //编译报错

printf("a > 100\n");

break;

}*/


return0;

}

#include <stdio.h>

int main()

{  

   int a =0;

    

   switch (a) {

        int x =10;//swith下面case之前定义变量,并不会真正被赋值,因为switch执行的流程就决定了,这条代码会执行跳过

case0: {//在某一个case下面定义变量,需要明确的告诉编译器这个变量的作用范围,就是将这个case下面的代码段用{}包住。否则编译错误。

           int b =20 + a;

            printf("x = %d\n", x);//因为x的赋值操作并没有执行,所以打印出来的是一个垃圾数字。

break;

}

       case2:            

           break;

    }

    

   return0;

}



0 0
原创粉丝点击