知识点总结:
1.switch语句使用优势:通过某一单一表达式的值,将程序分为多个分支时,使用switch语句会使程序更加简洁。
通过单一表达式来控制程序流程分支时,switch语句通常比if语句使用效果更好。
2.switch语句括号内的控制表达式必须是整数类型。
3.case: case是标签,格式为:"case 1 : " ,是用来表示程序跳转的标识,标签的值必须为常量,不能为变量。
4.break语句:执行break语句时,程序会在当前语句范围运行结束。
5.default:当控制表达式的判断结果与任何1个case都不一致时,程序会跳转到default继续执行。(类似在"if-else"语句中程序不满足if语句控制表达式条件,跳转到else语句继续执行)
分类题型:
题型1:显示输入整数除以3的余数
两种方法:if语句和switch语句
代码3-18,代码3-19
int main()
{
//代码3-18,3-19
int no;
printf("请输入1个整数: "), scanf("%d", &no);
//if语句写法
if (no % 3 == 0) puts("该数能被3整除");
else if (no % 3 == 1) puts("该数除以3的余数是1");
else puts("该数除以3的余数是2");
//switch语句写法
switch (no % 3) {
case 0: puts("该数能被3整除"); break;
case 1: puts("该数除以3的余数是1"); break;
case 2: puts("该数除以3的余数是2"); break;
}
return 0;
}
题型2:写出数字对应英文选项
代码3-20
int main()
{
int sw;
printf("整数 : "), scanf("%d", &sw);
switch (sw){
case 1:puts("A");
puts("B"); break;
case 2:puts("C");
case 5:puts("D"); break;
case 6:puts("E"); break;
default:puts("F"); break;
}
return 0;
}
题型3:输出某数字对应的数字
书P74截取代码段
//书中截取代码段
int main()
{
int p, c;
scanf("%d", &p);
//if语句形式
if (p == 1) c = 3;
if (p == 2) c = 5;
if (p == 3) c = 7;
if (p == 4) c = 9;
printf("%d", c);
//switch语句改写
switch (p){
case 1:c = 3; break;
case 2:c = 5; break;
case 3:c = 7; break;
case 4 :c = 9; break;//或default :if(p==4) c=9;
}
printf("%d", c);
return 0;
}
题型4:用switch语句判断输入整数的奇偶性
练习3-12(修改代码3-4)
//练习3-12
//练习3—12 3—4作修改
int main() {
int no;
printf("请输入1个整数");
scanf("%d", &no );
switch (no % 2) {
case 0:puts("该整数是偶数"); break;
case 1:puts("该整数是奇数"); break;
}
return 0 ;
}
题型5:用switch语句实现显示输入的月份所处的季节
练习3-13(修改代码3-17)
//&3—13 3—17作修改
int main()
{
int month;
printf("请输入月份");
scanf("%d", &month);
//方法1:全写出来
switch (month) {
case 1:puts("1月是冬天"); break;
case 2:puts("2月是冬天"); break;
case 3:puts("3月是春天"); break;
case 4:puts("4月是春天"); break;
case 5:puts("5月是春天"); break;
case 6:puts("6月是夏天"); break;
case 7:puts("7月是夏天"); break;
case 8:puts("8月是夏天"); break;
case 9:puts("9月是秋天"); break;
case 10:puts("10月是秋天"); break;
case 11:puts("11月是秋天"); break;
case 12:puts("12月是冬天"); break;
}
//方法2:
switch (month) {
case 1:
case 2:printf("%d月是冬天", month);break;
case 3:
case 4:
case 5:printf("%d月是春天", month); break;
case 6:
case 7:
case 8:printf("%d月是夏天", month); break;
case 9:
case 10:
case 11:printf("%d月是秋天", month); break;
case 12:printf("%d月是冬天", month); break;
}
return 0;
}
注意:case后只能有1个标签值!
本题型代码错误示例:运行该代码会报错显示case标签值已经出现在此开关 !
//case后只能有1个标签值!
switch (month) {
case 1 || 2 || 12:printf("%d月是冬天", month); break;
case 3 || 4 || 5:printf("%d月是春天", month); break;
case 6 || 7 || 8:printf("%d月是夏天", month); break;
case 9 || 10 || 11:printf("%d月是秋天", month); break;
}