注册 登录
编程论坛 C语言论坛

新手在线求大佬指导,太难了

修行的老衲 发布于 2019-10-21 14:20, 3685 次点击
某汽车运输公司根据距离来算运费,距离越远一公里的运费越低
距离0<=s<500,一公里运费0.5
距离500<=s<1000,一公里运费0.4
距离1000<=s<2000,一公里运费0.3
距离2000<=s<4000,一公里运费0.2
距离s>=4000,一公里运费0.1
 请编写程序,输入距离,输出该距离对应的运费。(用switch解决)
13 回复
#2
修行的老衲2019-10-21 14:37
我该怎么写啊
#3
rjsp2019-10-21 14:37
必须要用 switch ?

switch( s/500 }
{
case 0:
case 1:
case 2: case 3:
case 4: case 5: case 6: case 7:
default:
}
#4
修行的老衲2019-10-21 15:29
回复 3楼 rjsp
是的
#5
修行的老衲2019-10-21 15:39
思绪混乱,陷入僵局,在线求带
#6
rjsp2019-10-21 16:48
你总要说说你哪里不会,或会些什么,别人总不知道从英文的26个字母教起吧

程序代码:
#include <stdio.h>

int main( void )
{
    unsigned long s;
    printf( "输入距离(非负整数,单位:公里): " );
    if( scanf("%lu",&s) != 1 )
    {
        puts( "输入格式错误." );
        return 1;
    }

    double f;
    switch( s/500 )
    {
    case 0:
        f = 0.5;
        break;
    case 1:
        f = 0.4;
        break;
    case 2: case 3:
        f = 0.3;
        break;
    case 4: case 5: case 6: case 7:
        f = 0.2;
        break;
    default:
        f = 0.1;
        break;
    }

    printf( "总运费是 %.2f 元\n", s*f );
}

#7
修行的老衲2019-10-21 17:36
是C语言的初学者,才刚刚学到break语句
#8
修行的老衲2019-10-21 18:53
回复 6楼 rjsp
我不太懂最后一个步骤,就是%.2,这个代表啥
#9
纯蓝之刃2019-10-21 18:59
%f 代表着输出的值为浮点数。像输出23.450000
%.2f  代表输出的浮点数以两位小数的方式显示。像输出23.45
#10
修行的老衲2019-10-21 20:14
谢谢了
#11
修行的老衲2019-10-21 21:20
我终于把老师布置的三个程序给打出来了,谢谢你们的帮忙
#12
自学的数学2019-10-21 21:51
这道题从数学角度来说,写得有点不明白,比如:距离500<=s<1000,一公里运费0.4,这里就给人一种不理解的地方,我们可以这样理解:假设距离是800公里,那么,就有两点情况:
    1:这800公里中,每一公里的运费是0.4元,那么800公里的运费共计就是800*0.4=320元。
    2:800公里=500公里+300公里,其中前500公里的运费是500*0.5=250元。后300公里的运费是300*0.4=120元,所以这800元的共计运费就是:500*0.5+300*0.4=370元。因为原题里面说的是:距离500<=s<1000,一公里运费0.4。
    如果是第一种情况,那么6楼的编程不错,如果是第二种情况呢?
    如果是第二种情况呢,编程如下:
程序代码:
#include <stdio.h>
int main( void )
{
    unsigned long s;
    printf( "输入距离(非负整数,单位:公里): " );
    if( scanf("%lu",&s) != 1 )
    {
        puts( "输入格式错误." );
        return 1;
    }

    double f;
    switch( s/500 )
    {
    case 0:  f = 0.5;  printf( "总运费是 %.2f 元\n", s*f ); break;
    case 1:  f = 0.4;  printf( "总运费是 %.2f 元\n", 500*0.5+(s-500)*f ); break;
    case 2: case 3:   f = 0.3; printf( "总运费是 %.2f 元\n", 500*0.5+500*0.4+(s-1000)*f ); break;
    case 4: case 5: case 6: case 7:    f = 0.2; printf( "总运费是 %.2f 元\n", 500*0.5+500*0.4+1000*0.3+(s-2000)*f ); break;
    default: f = 0.1;printf( "总运费是 %.2f 元\n", 500*0.5+500*0.4+1000*0.3+2000*0.2+(s-4000)*f ); break;
    }
}
#13
forever742019-10-21 23:19
应该是第二种情况,否则就会出现501公里比500公里运费便宜的现象。
#14
阿杰su2019-10-28 21:06
回复 楼主 修行的老衲
c语言编程软件可以发一下吗我不会下载
1