因为你的C语言程序中case0:到case12:,case和数字间缺少了一个空格,
所以虽然c==1但是程序却执行了第一个case0:语句d=0就退出了switch语句,
而不是执行第二个case 1:语句d=2退出switch语句.
因此你的结果是600000.00,而不是书上的结果588000.00
完整的C语言程序如下(改动的地方见注释)
#include<stdio.h>
int main()
{
int c,s;
float p,w,d,f;
printf("please enter price,weight,distance:");
scanf("%f,%f,%d",&p,&w,&s);
if(s>=3000) c=12;
else c=s/250;
switch(c)
{
case 0:d=0;break;//这里case和0之间加空格
case 1:d=2;break;//这里case和1之间加空格
case 2://这里case和2之间加空格
case 3:d=5;break;//这里case和3之间加空格
case 4://这里case和4之间加空格
case 5://这里case和5之间加空格
case 6://这里case和6之间加空格
case 7:d=8;break;//这里case和7之间加空格
case 8://这里case和8之间加空格
case 9://这里case和9之间加空格
case 10://这里case和10之间加空格
case 11:d=10;break;//这里case和11之间加空格
case 12:d=15;break;//这里case和12之间加空格
}
f=p*w*s*(1-d/100);
printf("freight=%10.2f\n",f);
return 0;
}