if (表达式)
语句;
if (表达式)
语句1;else
语句2;
1.2 演示代码if (表达式1)
语句1;else if (表达式2)
语句2;...
else if (表达式n)
语句n;
else
语句n+1;
#includeint main() { int age = 0; scanf("%d", &age); if (age < 18) { printf("未成年n"); printf("不能饮酒n"); }//if控制多条语句要用{}括起来 return 0; }
#includeint main() { int age = 0; scanf("%d", &age); if (age < 18) { printf("未成年n"); printf("不能饮酒n"); } else printf("成年n"); return 0; }
#include1.3 else悬空的问题int main() { int age = 0; scanf("%d", &age); if (age <= 6) printf("童年n"); else if(age>=7 && age<=17) printf("少年n"); else if (age >= 18 && age <= 40) printf("青年n"); else if (age >= 41 && age <= 65) printf("中年n"); else printf("老年n"); return 0; }
#includeint main() { int a = 0; int b = 2; if (a == 1) if (b == 2) printf("hehen"); else printf("hahan"); return 0; } //什么都不输出,没有{}的约束下else和离它最近的if匹配
#include1.4 判断一个数是奇数还是偶数int main() { int a = 0; int b = 2; if (a == 1) { if (b == 2) printf("hehen"); } else printf("hahan"); return 0; } //输出haha
#include1.5 输出1~100之间的奇数int main() { int num = 0; scanf("%d", &num); if (num % 2 == 1) printf("奇数n"); else printf("偶数n"); return 0; }
#include2. switch语句 2.1 语法结构int main() { int i = 1; while (i <= 100) { if (i % 2 == 1) printf("%d ", i); i++; } return 0; }
switch(整型表达式)
{case 整形常量表达式1:
语句1;
break;
case 整形常量表达式2:
语句2;
break;
...
case 整形常量表达式n:
语句n;
break;
default:
语句n+1;
break;
}
2.2 演示代码switch(整型表达式)
{case 整形常量表达式1:
....
case 整形常量表达式a:
语句1;
break;
case 整形常量表达式a+1:
....
case 整形常量表达式b:
语句2;
break;
....
case 整形常量表达式c:
....
case 整形常量表达式d:
语句n;
break;
default:
语句n+1;
break;
}
#includeint main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期一n"); break; case 2: printf("星期二n"); break; case 3: printf("星期三n"); break; case 4: printf("星期四n"); break; case 5: printf("星期五n"); break; case 6: printf("星期六n"); break; case 7: printf("星期日n"); break; default: printf("输入有误,请重新输入n"); break; } return 0; }
#include2.3 case穿透的问题int main() { int day = 0; 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; } return 0; }
在switch语句中,如果case控制的语句体后面不写break,将出现穿透现象。在不判断下一个case值的情况下,向下运行,直到遇到break,或者整体switch语句结束。
#include2.4 default子句int main() { int day = 0; scanf("%d", &day); switch (day) { case 1: printf("星期一n"); case 2: printf("星期二n"); case 3: printf("星期三n"); case 4: printf("星期四n"); case 5: printf("星期五n"); case 6: printf("星期六n"); case 7: printf("星期日n"); default: printf("输入有误,请重新输入n"); break; } return 0; } //如果输入5,输出结果为: //星期五 //星期六 //星期日 //输入有误,请重新输入 //
当switch表达式的值与所有case标签的值都不匹配时,如果没有default子句,那么所有的语句都被跳过,程序不会终止,也不会报错;如果有default子句,那么这个default子句后面的语句就会执行。
尽量在每个switch语句中都放一条default子句。



