内容正文:
4.4节:switch语句
一、单项选择题
1.若 switch 语句中没有 default 子句,当表达式的值与所有 case 常量都不匹配时,程序会( )
A. 报错并终止运行
B. 跳过整个 switch 语句,继续执行后续代码
C. 随机执行一个 case 分支
D. 执行第一个 case 分支
2.下列关于 switch 语句中 case 常量的说法,错误的是()
A. case 后的常量必须是整型或字符型常量
B. 同一个 switch 语句中,case 后的常量值必须唯一
C. case 后的常量可以是变量
D. case 后的常量可以是常量表达式(如 1+2)
3.执行以下程序段后,变量 y 的值为()
int x = 2, y = 0;
switch(x)
{ case 1: y += 1; break;
case 2: y += 2;
case 3: y += 3; break;
default: y += 4; }
A. 2 B. 3 C. 5 D. 9
4.下列关于 switch 语句的使用,语法正确的是()
A. switch(3.14) { case 1: ... }
B. switch('a') { case 'a': ... break; }
C. int a=1; switch(a) { case a: ... }
D. switch(5) { case 1; ... break; }
5.执行以下程序段后,输出结果为()
int a = 1;
switch(a)
{ case 1: printf("A");
case 2: printf("B"); break;
case 3: printf("C"); }
A. A B. AB C. ABC D. 无输出
6.关于 switch 语句中多个 case 共用一组语句的写法,下列正确的是()
A. case 1,2,3: printf("OK"); break;
B. case 1 case 2 case 3: printf("OK"); break;
C. case 1: case 2: case 3: printf("OK"); break;
D. case 1 2 3: printf("OK"); break;
7.下列关于 switch 语句中 default 子句的位置,说法正确的是()
A. 必须放在所有 case 分支的最后
B. 必须放在所有 case 分支的最前面
C. 可以放在 switch 语句中的任意位置
D. 不能放在 case 分支中间
8. 执行以下程序段后,变量 b 的值为()
int a = 4, b = 0;
switch(a)
{ case 1: b += 1; break;
case 2: b += 2; break;
case 3: b += 3; break;
default: b += 4; }
A. 0 B. 4 C. 10 D. 编译错误
9.下列关于 switch 语句和 if-else 语句的对比,说法错误的是()
A. switch 语句更适合多分支且分支条件为常量的场景
B. if-else 语句可以处理区间条件,switch 语句不能直接处理
C. switch 语句的执行效率通常比多层 if-else 更高
D. 所有 if-else 语句都可以用 switch 语句替代
10.下列关于 switch 语句中 case 分支的大括号使用,说法正确的是()
A. 每个 case 分支必须用大括号括起来
B. 只有 case 分支内有多条语句时才需要大括号
C. case 分支内无论有多少条语句,都不能用大括号
D. 大括号只能用于 default 分支
二、填空题。
1.switch 语句中,用于结束当前 case 分支、跳出 switch 结构的语句是___________。
2.当 switch 语句中表达式的值与所有 case 常量都不匹配时,若存在______子句,则执行该子句中的语句。
3.同一个 switch 语句中,case 后的常量值必须是______的,不能重复。
4.执行以下程序段后,变量 a 的值为___________。
int a = 0;
switch(2)
{ case 1: a += 1; break;
case 2: a += 2; break;
case 3: a += 3; break; }
5.switch 语句中,default 子句是______(选填 “可选” 或 “必须”)的,可省略。
6.若 case 分支内包含多条语句,必须用______将这些语句括起来,构成复合语句。
7.执行以下程序段后,输出结果为___________。
char c = 'c';
switch(c)
{ case 'a': printf("A"); break;
case 'b': printf("B"); break;
case 'c': printf("C");
default: printf("D"); }
8.若 switch 语句中 case 常量为字符型,其值本质上是该字符的______值。
9.执行以下程序段后,变量 b 的值为___________。
int b = 5;
switch(1)
{ case 1: b *= 2;
case 2: b += 3; break;
case 3: b -= 1; }
10.执行以下程序段后,输出结果为___________。
int x = 4;
switch(x / 2)
{ case 1: printf("1"); break;
case 2: printf("2"); break;
case 3: printf("3"); break; }
三、阅读程序题。
1.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{
char ch = 'b';
switch(ch)
{ case 'a': printf("A"); break;
case 'b': printf("B");
case 'c': printf("C"); break;
default: printf("D"); } }
2.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int x = 5;
switch(x % 2)
{ case 0: printf("偶数"); break;
case 1: printf("奇数"); break; } }
3.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int y = 0;
switch(2)
{ case 1: y += 1;
case 2: y += 2;
case 3: y += 3; break;
default: y += 4; }
printf("%d", y); }
4.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int n = 4;
switch(n)
{ case 1: case 2: printf("小"); break;
case 3: case 4: printf("中"); break;
case 5: case 6: printf("大"); break; } }
5.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int m = 10;
switch(m / 3)
{ case 1: printf("1"); break;
case 2: printf("2"); break;
case 3: printf("3"); break;
default: printf("其他"); } }
6.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int k = 2;
switch(k)
{ case 1: printf("A"); break;
default: printf("B");
case 2: printf("C"); break; } }
7.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int b = 5;
switch(b)
{ case 1: b *= 2; break;
case 5: b += 3; break;
default: b -= 1; }
printf("%d", b); }
8.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int m = 0;
switch(3)
{ case 1: m += 1;
case 2: m += 2;
case 3: m += 3;
default: m += 4; }
printf("%d", m); }
9.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ char c = 'e';
switch(c)
{ case 'a': case 'b': case 'c': printf("前三个"); break;
case 'd': case 'e': case 'f': printf("中间三个"); break;
default: printf("其他"); } }
10.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int k = 2;
switch(k)
{ case 1: k += 1; break;
case 2: k *= 2;
case 3: k -= 1; break;
default: k += 5; }
printf("%d", k); }
四、程序填空题(根据题意,将空缺的语句补上)
1.以下程序实现判断用户输入的字符是否为元音字母(a、e、i、o、u,不分大小写),请补充完整。
#include <stdio.h>
main()
{ char ch;
printf("请输入一个字符:");
scanf("%c", &ch);
switch(ch)
{ case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U':
printf("是元音字母");
______;
default:
printf("不是元音字母"); } }
2.以下程序实现根据用户输入的数字(1-4)输出对应的季节(1 - 春季,2 - 夏季,3 - 秋季,4 - 冬季),请补充完整。
#include <stdio.h>
main()
{ int season;
printf("请输入数字1-4:");
scanf("%d", &season);
switch(______)
{ case 1: printf("春季"); break;
case 2: printf("夏季"); break;
case 3: printf("秋季"); break;
case 4: printf("冬季"); break;
default: printf("输入错误"); } }
3.以下程序实现根据用户输入的整数判断其除以 3 的余数,并输出结果,请补充完整。
#include <stdio.h>
main()
{ int num, rem;
printf("请输入一个整数:");
scanf("%d", &num);
_________________;
switch(rem)
{ case 0: printf("除以3余0"); break;
case 1: printf("除以3余1"); break;
case 2: printf("除以3余2"); break; } }
4.以下程序实现根据用户输入的成绩(0-100)的十位数判断等级(90-100 为 A,80-89 为 B,70-79 为 C,60-69 为 D,60 以下为 E),请补充完整。
#include <stdio.h>
main()
{ int score, level;
printf("请输入成绩(0-100):");
scanf("%d", &score);
if(score == 100)
level = 9;
else
______________;
switch(level)
{ case 9: printf("等级:A"); break;
case 8: printf("等级:B"); break;
case 7: printf("等级:C"); break;
case 6: printf("等级:D"); break;
default: printf("等级:E"); break; } }
5.以下程序实现根据用户输入的商品编号(101-105),输出商品名称和单价(101-笔记本-5元,102-钢笔-15元,103-橡皮-2元,104-尺子-3元,105-笔记本电脑-3999元),补充完整switch后的表达式。
#include <stdio.h>
main()
{ int id;
printf("请输入商品编号(101-105):");
scanf("%d", &id);
switch(______)
{ case 1: printf("笔记本,单价:5元"); break;
case 2: printf("钢笔,单价:15元"); break;
case 3: printf("橡皮,单价:2元"); break;
case 4: printf("尺子,单价:3元"); break;
case 5: printf("笔记本电脑,单价:3999元"); break;
default: printf("商品编号错误"); } }
五、编程题。
1. 编写一个 C 语言程序,使用 switch 语句,根据用户输入的数字(1-7),输出对应的星期几的中文名称(1 对应周一,7 对应周日)。
2.编写一个 C 语言程序,使用 switch 语句,根据用户输入的字符('+'、'-'、'*'、'/'),输出对应的运算符含义(如输入 '+' 输出 “加法运算符”)。
3.编写一个 C 语言程序,使用 switch 语句,根据用户输入的整数(1-12),输出对应的月份英文缩写(1-Jan,2-Feb,…,12-Dec)。
4.编写C语言程序,使用switch语句实现简易体温检测功能。用户输入体温(保留1位小数,如36.5),判断体温状态:36.0-37.2为“正常体温”,37.3-38.0为“低热”,38.1-39.0为“中度发热”,39.1及以上为“高热”,低于36.0为“体温偏低”。
5.编写C语言程序,使用switch语句实现简易快递计费功能。用户输入快递重量(单位:kg,整数),计费规则:1kg及以内8元,2-3kg(含)每kg加3元,4-5kg(含)每kg加2.5元,6kg及以上每kg加2元,输出总运费(保留1位小数)。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
4.4节:switch语句
一、单项选择题
1.若 switch 语句中没有 default 子句,当表达式的值与所有 case 常量都不匹配时,程序会( )
A. 报错并终止运行
B. 跳过整个 switch 语句,继续执行后续代码
C. 随机执行一个 case 分支
D. 执行第一个 case 分支
【答案】B
【解析】default 子句是可选的,当表达式与所有 case 常量都不匹配且无 default 时,switch 语句不执行任何分支,直接执行后续代码。
2.下列关于 switch 语句中 case 常量的说法,错误的是( )
A. case 后的常量必须是整型或字符型常量
B. 同一个 switch 语句中,case 后的常量值必须唯一
C. case 后的常量可以是变量
D. case 后的常量可以是常量表达式(如 1+2)
【答案】C
【解析】 case 后必须是常量表达式,不能是变量,否则无法在编译阶段确定值,违反 C 语言语法规则。
3.执行以下程序段后,变量 y 的值为( )
int x = 2, y = 0;
switch(x)
{ case 1: y += 1; break;
case 2: y += 2;
case 3: y += 3; break;
default: y += 4; }
A. 2 B. 3 C. 5 D. 9
【答案】C
【解析】 x=2 匹配 case 2,执行y += 2(y=2),因无 break,继续执行 case 3 的y += 3(y=5),遇到 break 跳出 switch。
4.下列关于 switch 语句的使用,语法正确的是( )
A. switch(3.14) { case 1: ... }
B. switch('a') { case 'a': ... break; }
C. int a=1; switch(a) { case a: ... }
D. switch(5) { case 1; ... break; }
【答案】B
【解析】A 选项 switch 表达式为浮点型,非法;C 选项 case 后为变量,非法;D 选项 case 后应为冒号而非分号,语法错误;B 选项字符型表达式符合语法要求。
5.执行以下程序段后,输出结果为( )
int a = 1;
switch(a)
{ case 1: printf("A");
case 2: printf("B"); break;
case 3: printf("C"); }
A. A B. AB C. ABC D. 无输出
【答案】B
【解析】a=1 匹配 case 1,输出 "A",因无 break,继续执行 case 2,输出 "B",遇到 break 跳出 switch。
6.关于 switch 语句中多个 case 共用一组语句的写法,下列正确的是( )
A. case 1,2,3: printf("OK"); break;
B. case 1 case 2 case 3: printf("OK"); break;
C. case 1: case 2: case 3: printf("OK"); break;
D. case 1 2 3: printf("OK"); break;
【答案】C
【解析】C 语言中多个 case 共用一组语句,需连续写多个 case 标签,每个 case 后加冒号,再写共用语句,因此 C 选项正确。
7.下列关于 switch 语句中 default 子句的位置,说法正确的是( )
A. 必须放在所有 case 分支的最后
B. 必须放在所有 case 分支的最前面
C. 可以放在 switch 语句中的任意位置
D. 不能放在 case 分支中间
【答案】C
【解析】default 子句的位置不影响语法合法性,可放在 switch 内任意位置,程序执行时只有当所有 case 常量都不匹配时才会执行 default 分支。
8. 执行以下程序段后,变量 b 的值为( )
int a = 4, b = 0;
switch(a)
{ case 1: b += 1; break;
case 2: b += 2; break;
case 3: b += 3; break;
default: b += 4; }
A. 0 B. 4 C. 10 D. 编译错误
【答案】B
【解析】a=4 与所有 case 常量都不匹配,执行 default 分支,b += 4,因此 b=4。
9.下列关于 switch 语句和 if-else 语句的对比,说法错误的是( )
A. switch 语句更适合多分支且分支条件为常量的场景
B. if-else 语句可以处理区间条件,switch 语句不能直接处理
C. switch 语句的执行效率通常比多层 if-else 更高
D. 所有 if-else 语句都可以用 switch 语句替代
【答案】D
【解析】并非所有 if-else 语句都能被 switch 替代,例如条件为区间判断(如x>10)时,switch 语句无法直接处理。
10.下列关于 switch 语句中 case 分支的大括号使用,说法正确的是( )
A. 每个 case 分支必须用大括号括起来
B. 只有 case 分支内有多条语句时才需要大括号
C. case 分支内无论有多少条语句,都不能用大括号
D. 大括号只能用于 default 分支
【答案】B
【解析】case 分支内若只有一条语句,可省略大括号;若有多条语句,必须用大括号括成复合语句,否则语法错误。
二、填空题。
1.switch 语句中,用于结束当前 case 分支、跳出 switch 结构的语句是___________。
【答案】break
【解析】break 语句的核心作用是终止当前分支,跳出 switch 结构,避免后续分支被顺序执行。
2.当 switch 语句中表达式的值与所有 case 常量都不匹配时,若存在______子句,则执行该子句中的语句。
【答案】default
【解析】default 子句用于处理表达式值与所有 case 常量都不匹配的情况。
3.同一个 switch 语句中,case 后的常量值必须是______的,不能重复。
【答案】唯一
【解析】case 常量值重复会导致编译错误,因为程序无法确定执行哪个分支。
4.执行以下程序段后,变量 a 的值为___________。
int a = 0;
switch(2)
{ case 1: a += 1; break;
case 2: a += 2; break;
case 3: a += 3; break; }
【答案】2
【解析】表达式值为 2,匹配 case 2,执行a += 2,遇到 break 跳出,a=2。
5.switch 语句中,default 子句是______(选填 “可选” 或 “必须”)的,可省略。
【答案】可选
【解析】 没有 default 子句时,若表达式与所有 case 常量都不匹配,switch 语句不执行任何分支。
6.若 case 分支内包含多条语句,必须用______将这些语句括起来,构成复合语句。
【答案】大括号({})
【解析】复合语句需用大括号括起,否则只有第一条语句属于该 case 分支,后续语句会被视为 switch 语句外的代码。
7.执行以下程序段后,输出结果为___________。
char c = 'c';
switch(c)
{ case 'a': printf("A"); break;
case 'b': printf("B"); break;
case 'c': printf("C");
default: printf("D"); }
【答案】CD
【解析】c='c' 匹配 case 'c',输出 "C",因无 break,继续执行 default 分支,输出 "D"。
8.若 switch 语句中 case 常量为字符型,其值本质上是该字符的______值。
【答案】ASCII 码
【解析】C 语言中字符型数据本质上是其 ASCII 码对应的整型值,因此字符型 case 常量会被转换为整型比较。
9.执行以下程序段后,变量 b 的值为___________。
int b = 5;
switch(1)
{ case 1: b *= 2;
case 2: b += 3; break;
case 3: b -= 1; }
【答案】13
【解析】表达式值为 1,匹配 case 1,执行b *= 2(b=10),因无 break,继续执行 case 2,b += 3(b=13),遇到 break 跳出。
10.执行以下程序段后,输出结果为___________。
int x = 4;
switch(x / 2)
{ case 1: printf("1"); break;
case 2: printf("2"); break;
case 3: printf("3"); break; }
【答案】2
【解析】 x/2=4/2=2,匹配 case 2,输出 "2"。
三、阅读程序题。
1.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{
char ch = 'b';
switch(ch)
{ case 'a': printf("A"); break;
case 'b': printf("B");
case 'c': printf("C"); break;
default: printf("D"); } }
【答案】BC
2.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int x = 5;
switch(x % 2)
{ case 0: printf("偶数"); break;
case 1: printf("奇数"); break; } }
【答案】奇数
3.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int y = 0;
switch(2)
{ case 1: y += 1;
case 2: y += 2;
case 3: y += 3; break;
default: y += 4; }
printf("%d", y); }
【答案】5
4.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int n = 4;
switch(n)
{ case 1: case 2: printf("小"); break;
case 3: case 4: printf("中"); break;
case 5: case 6: printf("大"); break; } }
【答案】中
5.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int m = 10;
switch(m / 3)
{ case 1: printf("1"); break;
case 2: printf("2"); break;
case 3: printf("3"); break;
default: printf("其他"); } }
【答案】3
6.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int k = 2;
switch(k)
{ case 1: printf("A"); break;
default: printf("B");
case 2: printf("C"); break; } }
【答案】C
7.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int b = 5;
switch(b)
{ case 1: b *= 2; break;
case 5: b += 3; break;
default: b -= 1; }
printf("%d", b); }
【答案】8
8.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int m = 0;
switch(3)
{ case 1: m += 1;
case 2: m += 2;
case 3: m += 3;
default: m += 4; }
printf("%d", m); }
【答案】7
9.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ char c = 'e';
switch(c)
{ case 'a': case 'b': case 'c': printf("前三个"); break;
case 'd': case 'e': case 'f': printf("中间三个"); break;
default: printf("其他"); } }
【答案】中间三个
10.写出下列程序段的输出结果:________________。
#include <stdio.h>
main()
{ int k = 2;
switch(k)
{ case 1: k += 1; break;
case 2: k *= 2;
case 3: k -= 1; break;
default: k += 5; }
printf("%d", k); }
【答案】3
四、程序填空题(根据题意,将空缺的语句补上)
1.以下程序实现判断用户输入的字符是否为元音字母(a、e、i、o、u,不分大小写),请补充完整。
#include <stdio.h>
main()
{ char ch;
printf("请输入一个字符:");
scanf("%c", &ch);
switch(ch)
{ case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U':
printf("是元音字母");
______;
default:
printf("不是元音字母"); } }
【答案】break;
2.以下程序实现根据用户输入的数字(1-4)输出对应的季节(1 - 春季,2 - 夏季,3 - 秋季,4 - 冬季),请补充完整。
#include <stdio.h>
main()
{ int season;
printf("请输入数字1-4:");
scanf("%d", &season);
switch(______)
{ case 1: printf("春季"); break;
case 2: printf("夏季"); break;
case 3: printf("秋季"); break;
case 4: printf("冬季"); break;
default: printf("输入错误"); } }
【答案】season
3.以下程序实现根据用户输入的整数判断其除以 3 的余数,并输出结果,请补充完整。
#include <stdio.h>
main()
{ int num, rem;
printf("请输入一个整数:");
scanf("%d", &num);
_________________;
switch(rem)
{ case 0: printf("除以3余0"); break;
case 1: printf("除以3余1"); break;
case 2: printf("除以3余2"); break; } }
【答案】rem = num % 3
4.以下程序实现根据用户输入的成绩(0-100)的十位数判断等级(90-100 为 A,80-89 为 B,70-79 为 C,60-69 为 D,60 以下为 E),请补充完整。
#include <stdio.h>
main()
{ int score, level;
printf("请输入成绩(0-100):");
scanf("%d", &score);
if(score == 100)
level = 9;
else
______________;
switch(level)
{ case 9: printf("等级:A"); break;
case 8: printf("等级:B"); break;
case 7: printf("等级:C"); break;
case 6: printf("等级:D"); break;
default: printf("等级:E"); break; } }
【答案】level = score / 10
5.以下程序实现根据用户输入的商品编号(101-105),输出商品名称和单价(101-笔记本-5元,102-钢笔-15元,103-橡皮-2元,104-尺子-3元,105-笔记本电脑-3999元),补充完整switch后的表达式。
#include <stdio.h>
main()
{ int id;
printf("请输入商品编号(101-105):");
scanf("%d", &id);
switch(______)
{ case 1: printf("笔记本,单价:5元"); break;
case 2: printf("钢笔,单价:15元"); break;
case 3: printf("橡皮,单价:2元"); break;
case 4: printf("尺子,单价:3元"); break;
case 5: printf("笔记本电脑,单价:3999元"); break;
default: printf("商品编号错误"); } }
【答案】id - 100
五、编程题。
1. 编写一个 C 语言程序,使用 switch 语句,根据用户输入的数字(1-7),输出对应的星期几的中文名称(1 对应周一,7 对应周日)。
【参考代码】
#include <stdio.h>
main()
{ int day;
printf("请输入数字1-7:");
scanf("%d", &day);
switch(day)
{
case 1: printf("周一"); break;
case 2: printf("周二"); break;
case 3: printf("周三"); break;
case 4: printf("周四"); break;
case 5: printf("周五"); break;
case 6: printf("周六"); break;
case 7: printf("周日"); break;
default: printf("输入错误,请输入1-7之间的数字");
}
}
2.编写一个 C 语言程序,使用 switch 语句,根据用户输入的字符('+'、'-'、'*'、'/'),输出对应的运算符含义(如输入 '+' 输出 “加法运算符”)。
【参考代码】
#include <stdio.h>
main()
{
char op;
printf("请输入一个运算符(+、-、*、/):");
scanf("%c", &op);
switch(op)
{
case '+': printf("加法运算符"); break;
case '-': printf("减法运算符"); break;
case '*': printf("乘法运算符"); break;
case '/': printf("除法运算符"); break;
default: printf("无效运算符");
}
}
3.编写一个 C 语言程序,使用 switch 语句,根据用户输入的整数(1-12),输出对应的月份英文缩写(1-Jan,2-Feb,…,12-Dec)。
【参考代码】
#include <stdio.h>
main()
{
int month;
printf("请输入数字1-12:");
scanf("%d", &month);
switch(month)
{
case 1: printf("Jan"); break;
case 2: printf("Feb"); break;
case 3: printf("Mar"); break;
case 4: printf("Apr"); break;
case 5: printf("May"); break;
case 6: printf("Jun"); break;
case 7: printf("Jul"); break;
case 8: printf("Aug"); break;
case 9: printf("Sep"); break;
case 10: printf("Oct"); break;
case 11: printf("Nov"); break;
case 12: printf("Dec"); break;
default: printf("输入错误,请输入1-12之间的数字");
}
}
4.编写C语言程序,使用switch语句实现简易体温检测功能。用户输入体温(保留1位小数,如36.5),判断体温状态:36.0-37.2为“正常体温”,37.3-38.0为“低热”,38.1-39.0为“中度发热”,39.1及以上为“高热”,低于36.0为“体温偏低”。
【参考代码】
#include <stdio.h>
main()
{
float temp;
int t;
printf("请输入体温(保留1位小数):");
scanf("%f", &temp);
t = temp * 10; // 转换为整数,简化switch判断
switch(t / 10) // 按整数部分分组
{
case 35: printf("体温偏低,请注意保暖"); break;
case 36:
if(t >= 360 && t <= 372)
printf("正常体温,继续保持");
else
printf("低热,请多喝水、注意休息");
break;
case 37:
if(t >= 373 && t <= 380)
printf("低热,请多喝水、注意休息");
else
printf("中度发热,建议物理降温");
break;
case 38: printf("中度发热,建议物理降温"); break;
default: printf("高热,建议及时就医"); break;
}
}
5.编写C语言程序,使用switch语句实现简易快递计费功能。用户输入快递重量(单位:kg,整数),计费规则:1kg及以内8元,2-3kg(含)每kg加3元,4-5kg(含)每kg加2.5元,6kg及以上每kg加2元,输出总运费(保留1位小数)。
【参考代码】
#include <stdio.h>
main()
{
int weight;
float freight = 8.0;
printf("请输入快递重量(kg,整数):");
scanf("%d", &weight);
if(weight <= 0)
{
printf("重量输入错误");
return 0;
}
switch(weight)
{
case 1: printf("总运费:%.1f元", freight); break;
case 2: case 3:
freight += (weight - 1) * 3;
printf("总运费:%.1f元", freight);
break;
case 4: case 5:
freight += (weight - 1) * 2.5;
printf("总运费:%.1f元", freight);
break;
default:
freight += (weight - 1) * 2;
printf("总运费:%.1f元", freight);
break;
}
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$