求解下面C语言的题(用switch语句)写。 谢谢!

请编一程序,输入货物的重量,计算并输出其快递费。注意货物快递是分段计价的。如,货物重量12公斤,则快递费是:5×3+5×3.5+2×4=40.5
1、某快递公司运费收取标准为:
货物重量≤5公斤,快递费收3元
5公斤<货物重量≤10公斤,快递费3.5元/公斤
10公斤<货物重量≤20公斤,快递费4元/公斤
20公斤<货物重量≤30公斤,快递费4.5元/公斤
30公斤<货物重量≤50公斤,快递费5元/公斤
货物重量>50公交,拒收

题目中的:

货物重量≤5公斤,快递费收3元

应该为

货物重量≤5公斤,快递费收3元/公斤

 #include<stdio.h>
 int a[17]={-1,0,3,5,6,10,12,18,20,25,30,35,40,50,55,57,60};// 测试数据
 int main()
 {
 int i=17;
 int zhongliang;
 float flg;
  while(i)
  {
   i--;
  //scanf("%d",&zhongliang);
  zhongliang=a[i];
  flg=0;
  switch(zhongliang/5)
  {
  case 6:case 7:case 8:case 9: case 10:
          flg += (float)(5*(zhongliang-30));  zhongliang=30;
  case 4:
  case 5: flg += (float)(4.5*(zhongliang-20));zhongliang=20;
  case 2:
  case 3: flg += (float)(4*(zhongliang-10));  zhongliang=10;
  case 1: flg += (float)(3.5*(zhongliang-5)); zhongliang=5;
  case 0: flg += (float)(3*zhongliang);  break;
  default:  flg = -1;
 }
 if(flg>=0)
  printf("%2d -- %0.2f \n",a[i],flg);
 else
  printf("%2d -- No!   \n",a[i]);
 }
 //getch(); 
 }

 

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-13
呵呵 楼上写的不错。
不过从实际角度来说,这个题目用循环写最简单。
第2个回答  2013-11-12
#include<stdio.h>
int main()
{
int weight;
float price;
while(scanf("%d",&weight)!=EOF)
{
switch(weight/5)
{
case 0: price = 3*weight ;break;
case 1: price = 3*5+3.5*(weight-5);break;
case 2:
case 3:
price = 6.5*5+4*(weight-10);break;
case 4:
case 5:
price = 6.5*5+40+4.5*(weight-20);break;
case 6:case 7:case 8:case 9:
price =6.5*5+40+45+5*(weight-30);break;
default:
price = -1;
}
if(price>0) printf("price is $f \n",price);
else print("refused!\n");
}
return 0;
}
相似回答