2、switch
switch (整形表达式)
{
case(整形表达式):
;break;
case(整形表达式):
;break;
default:(可以放在switch()的开头);break; (break可有可无)。
例如:输出星期几
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int day = 0;
int n = 1;
scanf("%d", &day);
switch(day)
{
case 1:
printf("星期1\n");
break;
case 2:
printf("星期2\n");
break;
case 3:
printf("星期3\n");
break;
case 4:
printf("星期4\n");
break;
case 5:
printf("星期5\n");
break;
case 6:
printf("星期6\n");
break;
case 7:
printf("星期天\n");
break;
default:
printf("输入错误\n");
break;
}
system("pause");
return 0;
}
输出工作日
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int day = 0;
int n = 1;
scanf("%d", &day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("输入错误\n");
break;
}
system("pause");
return 0;
}
default表示表达式的值与所有的case中的表达式的值都不想等的情况。每个switch中只能出现一个default,并且它可以出现在switch中的任何一个位置,并不影响使用。
误区一: break每次只能跳出一层语句。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:m++;
case 2:n++;
case 3:
switch (n)
{
case 1:n++;
case 2:m++, n++; break;//跳出此处的switch,并不影响外层的switch。//若此处没有break,程序依然会运行到下一行程序,不会形成死循环。
}//break;//此处的break用于结束外部的switch,所以程序不会在运行下去。n=3,m=4.
case 4:m++; break;//程序仍会运行此处的m++。此处的break用于跳出外层的这个switch,
default: break;
}
printf("n=%d m=%d\n", n, m);
return 0;
}