int main() {
float amount, discount, total
printf("请输入购物金额:")
scanf("%f", &amount)
switch ((int)amount / 100) {
case 0:
discount = 1
break
case 2:
discount = 0.9
break
case 5:
discount = 0.8
break
default:
discount = 0.75
break
}
total = amount * discount
printf("打折率为:%.2f\n", discount)
printf("实际付款金额为:%.2f\n", total)
return 0
}
在这个示例中,我们首先定义了变量
amount
、
discount
和
total
,分别用于存储输入的购物金额、打折率和实际付款金额。然后,我们使用
printf
和
scanf
分别输出提示信息和读取用户输入。接下来,搜轮我们使用
switch
语句根据购物金额计算打折率。在
switch
语句中,我们竖漏灶使用
(int)amount / 100
将购物余扮金额除以100并取整,得到购物金额所在的区间。然后,根据不同的区间设置不同的打折率。最后,我们计算实际付款金额,并使用
printf
输出打折率和实际付款金额。
这是因为这个switch...case句块的执行顺序是这样的,茄历喊一颤野开始k=8,在case从句中没有匹配的,所以它会执行defult句块中的内容,因为没有break语句来中断,所以在那之后会继续往下执行case10,case11句块中的内容,直到触底退出,因为这个过程共有3个k+=1语句,所以k被加了3次1,烂行这样k的值就从8变成了11。货物价格s变量应该为浮点类型float;
switch语句中要有default,可对应s>=10000的情况,因此直接令c=s/1000即可;
“1000元以上、5000元以下货物带迟征税2%”,感觉包括1000但不包括5000
因此对羡碰应的c为1,2,3,4,那么d=2语句应写在case 4:之后;
最后输出税金的格式为%f,默认是保留小数点后6位,不知道题目有没有其他格式要求
比如对于s<1000、税蠢派李金为0的情况,是否还要保留小数点后6位
以下修改的代码仍按照%f格式输出,具体改动的地方见注释:
附源码链接:货物税金
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)