使用switch语句处理数值范围问题<C语言>

本文介绍了如何在C语言中使用switch语句处理销售额范围的折扣计算,指出存在可能导致数据丢失和代码冗长的问题,并建议避免使用switch语句解决此类问题。
摘要由CSDN通过智能技术生成

案例

   上面的问题使用if多分支很简单,但是题目要求使用switch语句,我们来复习一下switch语句

  switch语句()括号内是表达式,case后必须接整形常量(不能添加范围),且case语句必须与break语句配合才能让分支跳出,不加break语句将继续执行下一条语句。

那么是否可以适当缺少break语句来实现数值范围呢?答案是肯定的。

#include<stdio.h>
int main() {
	int sell = 0, money = 0, tmp = 0;
	double prize = 0;
	printf("输入销售额:\n");
	scanf("%d", &sell);
	tmp = money / 1000;
	money = 500 + sell;
	switch (tmp) {
	case 0:
	case 1:
		prize = 0;
		break;
	case 2:
	case 3:
	case 4:
		prize = money * 8.0 / 100.0;
		break;
	case 5:
	case 6:
	case 7:
	case 8:
	case 9:
		prize = money * 10.0 / 100.0;
		break;
	default:
		prize = money * 12.0 / 100.0;
		break;
	}
	printf("%.2lf", prize + money);
	return 0;
}

不推荐使用switch语句计算范围数值问题,可能造成数据丢失等情况,并且代码冗长,可读性不好的。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值