C语言关于switch的

[复制链接]
查看11 | 回复4 | 2011-8-6 20:17:49 | 显示全部楼层 |阅读模式
#include
int main()
{
        int c,s;
        float p,w,d,f;
        printf("请输入单价、质量、距离:");
        scanf("%f%f%d",&p,&w,&s);
        if(s>=3000)
                c=12;
        else
                c=s/250;
        switch(c)
        {
        case 0:d=0;break;
        case 1:d=2;break;
        case 2:

case 3:d=5;break;
        case 4:
        case 5:
        case 6:
        case 7:d=8;break;
        case 8:
        case 9:
        case 10:
        case 11:d=10;break;
        case 12:d=15;break;
        }
        f=p*w*s*(1-d/100);
        printf("总运费为:%10.2f\n",f);
        return 0;
}
这是程序,如果s=300 那c=1.2 没有一个对的上,那她是不是归于case 1:d=2;break;
为什么是这样?

回复

使用道具 举报

千问 | 2011-8-6 20:17:49 | 显示全部楼层
如果s=300,则c=300/250=1 注意是1,不是1.2因为c=300/250=1 这个语句,是整数除以整数,结果是整数1,余数被舍弃了所以c==1...
回复

使用道具 举报

千问 | 2011-8-6 20:17:49 | 显示全部楼层
你的定义是int s,cc是整型,是不会出现小数的c=s/250=300/250=1...
回复

使用道具 举报

千问 | 2011-8-6 20:17:49 | 显示全部楼层
c是整型,哪来1.2啊...
回复

使用道具 举报

千问 | 2011-8-6 20:17:49 | 显示全部楼层
额...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行