邮局邮寄包裹有如下规定:如果包裹的长、宽、高任意尺寸超过1米或重量超过40千克,不予邮寄;可以邮寄的包裹每件收取手续费5元,再根据不同的重量weight计算邮资。
weight<10kg 2.5元
10kg≤weight<30kg 2.0元
30kg≤weight<40kg 1.5元
请输入包裹的长、宽、高和重量,计算并输出邮资。用switch语句。
参考一下
#include <stdio.h>
int main() {
float length, width, height, weight;
float postage, handling_fee = 5.0;
printf("请输入包裹的长、宽、高和重量,以空格分隔:");
scanf("%f %f %f %f", &length, &width, &height, &weight);
if (length > 1.0 || width > 1.0 || height > 1.0 || weight > 40.0) {
printf("包裹尺寸或重量超过限制,无法邮寄!\n");
return 0;
}
switch ((int)weight / 10) {
case 0:
postage = 2.5;
break;
case 1:
postage = 2.0;
break;
case 2:
postage = 1.5;
break;
default:
printf("重量超过限制,无法邮寄!\n");
return 0;
}
postage *= weight;
postage += handling_fee;
printf("邮资为:%.2f元\n", postage);
return 0;
}
switch(表达式)
{
case 常量表达式1: 语句1
case 常量表达式2: 语句2
…
case 常量表达式n: 语句n
default: 语句n+1
}
例如:按照考试成绩的等级输出百分之分数段
说明:
1.switch后面括号内的“表达式”,可以是数值型或字符型型数据。
2.表达式的值与某一个case后面的常量表达式的值相等时,就执行case后面的语句,若所有的常量表达式的值都没用与表达式匹配,就执行default后面的语句。
3. 每一个case的厂里了表达式的值必须互不相同。
4. 各个case和default的出现次序不影响执行结果。
5. 若执行完一个case后面的语句,流程控制转移下一个case继续执行。
6. 终止switch语句的执行,可以用一个break语句来达到此目的。例如: