|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
运输一批材料,已知运费计算公式为f=p*w*s*- #include<stdio.h>
- int main()
- {
- float p,w,s,d,b;
- scanf("%f%f%f",&p,&w,&s);
- b=s;
- int e=s/250;
- switch(e)
- {
- case 0:d=0;break;
- case 1:d=0.02;break;
- case 2:
- case 3:d=0.05;break;
- case 4:
- case 5:
- case 6:
- case 7:d=0.08;break;
- case 8:
- case 9:
- case 10:
- case 11:d=0.1;break;
- default :d=0.15;break;
- }
- float a=p*w*b*(1-d);
- int t=a*100;
- a=t/100.0;
- printf("%.2f",a);
- }
复制代码 (1-d)
,其中p
为运输物品价值,w
为运送物品重量,s
为运送物品距离,d
为折扣。现已知p,w,s
的值,而折扣d
的计算遵守以下规则:
  s<250
没有折扣
  250≤s<500
2%折扣
  500≤s<1000
5%折扣
  1000≤s<2000
8%折扣
  2000≤s<3000
10%折扣
  3000≤s
15%折扣
  试计算运费f的值。注意,只能用switch语句判断和计算折扣值。
输入描述
标准输入,三个单精度浮点数,即p,w,s
。
输出描述
标准输出,输出运费值,小数点保留两位(无需四舍五入)。
你的代码中存在一些问题,我将会帮你进行修正。首先,你的代码中的 #include<stdio.h> 应该放在代码的最开始,而不是在中间。其次,你的折扣计算方式可能不准确,因为你是通过 s/250 的结果来决定折扣,但这可能会导致一些问题。例如,当 s 的值为 499 时, s/250 的结果为 1,但根据你的规则,此时应该没有折扣,而不是 2% 的折扣。
以下是修正后的代码:
- #include<stdio.h>
- int main() {
- float p,w,s,d,b;
- scanf("%f%f%f",&p,&w,&s);
- b=s;
- int e=s/250;
- if (s < 250) {
- e = 0;
- } else if (s < 500) {
- e = 1;
- } else if (s < 1000) {
- e = 2;
- } else if (s < 2000) {
- e = 3;
- } else if (s < 3000) {
- e = 4;
- } else {
- e = 5;
- }
- switch(e) {
- case 0:d=0;break;
- case 1:d=0.02;break;
- case 2:d=0.05;break;
- case 3:d=0.08;break;
- case 4:d=0.1;break;
- default :d=0.15;break;
- }
- float a=p*w*b*(1-d);
- int t=a*100;
- a=t/100.0;
- printf("%.2f",a);
- return 0;
- }
复制代码
这个修正后的代码应该能够正确地根据你的规则计算折扣,并且计算出正确的运费。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
|
|