第1周 C语言及程序设计初步 例程-3 利用switch语句解决问题

应用:计算运费

每公里每吨货物的基本运费为p(price),货物重为w(weight),距离为s,折扣为d(discount),则总运费f(freight)的计算公式为 freight=price*weight*s*(1-discount)

[cpp] view plain copy
 print?
  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.     int c,s;  
  5.     float p,w,d,f;  
  6.     printf("please enter p,w,s: ");  
  7.     scanf("%f%f%d", &p, &w, &s);  
  8.     if(s>=3000)  
  9.         c=12;  
  10.     else  
  11.         c=s/250;  
  12.     switch (c)  
  13.     {  
  14.     case 0:  
  15.         d=0;break;  
  16.     case 1:  
  17.         d=2;break;  
  18.     case 2:  
  19.     case 3:  
  20.         d=5;break;  
  21.     case 4:  
  22.     case 5:  
  23.     case 6:  
  24.     case 7:  
  25.         d=8;break;  
  26.     case 8:  
  27.     case 9:  
  28.     case 10:  
  29.     case 11:  
  30.         d=10;break;  
  31.     case 12:  
  32.         d=15;break;  
  33.     }  
  34.     f=p*w*s*(1-d/100.0);  
  35.     printf("freight=%.2f\n", f);  
  36.     return 0;  
  37. }  

用switch求分段函数
[cpp] view plain copy
 print?
  1. #include <stdio.h>  
  2. #include <math.h>  
  3. int main()  
  4. {  
  5.     double x, y;  
  6.     int a;  
  7.     scanf("%lf", &x);  //需用lf,否则无法运行
  8.     a=(x<0)+(x<5)+(x<10);  //(x<0)、(x<5)、(x<10)真或假,即1或0
  9.     switch(t)  
  10.     {  
  11.     case 3: //(x<0)、(x<5)、(x<10)全为真时  
  12.         y=x;  
  13.         break;  
  14.     case 2://(x<5)、(x<10)为真时,注意case值后面是跟分号
  15.         y=x*x+2;  
  16.         break;  
  17.     case 1://仅(x<10)为真时  
  18.         y=sqrt(x+4);  
  19.         break;  
  20.     case 0:  //(x<0)、(x<5)、(x<10)没有一个为真,即x>=10  
  21.         y=1/(x-1);  
  22.     }  
  23.     printf("输出的值为%lf\n", y);  
  24.     return 0;  
  25. }  

你可能感兴趣的:(第1周 C语言及程序设计初步 例程-3 利用switch语句解决问题)