首页 > 试题广场 >

牛牛的快递

[编程题]牛牛的快递
  • 热度指数:40242 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛正在寄快递,他了解到快递在 1kg 以内的按起步价 20 元计算,超出部分按每 kg 1元计算,不足 1kg 部分按 1kg计算。如果加急的话要额外付五元,请问牛牛总共要支付多少快递费

输入描述:
第一行输入一个单精度浮点数 a 和一个字符 b ,a 表示牛牛要寄的快递的重量,b表示牛牛是否选择加急,'y' 表示加急 ,'n' 表示不加急。


输出描述:
输出牛牛总共要支付的快递费用
示例1

输入

1.5 y

输出

26
示例2

输入

0.7 n

输出

20
#include <stdio.h>
int main()
{
    int  c,t;
    float a;
    char b;
    while (scanf("%f %c",&a,&b) != EOF)
    {
        if(a<=1)
            c=20;
        if(a>1)
            c=20+(a+0.9)/1-1;
        if(b=='y')
            c=c+5;
   
        printf("%d",c);    
    }
    return 0;
}
发表于 2025-11-15 00:37:57 回复(0)
#include <stdio.h>

int main() {
    int  c,t;
    float a;
    char b;
    while (scanf("%f %c", &a, &b) != EOF) {
        if(a<=1){
            c=20;
        }
        t=a/1;
        if(t<a){
            c=20+t*1;
        }
        if(t==a){
            c=20+(t-1)*1;
        }
        if(b=='y'){
            c=c+5;
        }
    }
    printf("%d",c);    
    return 0;
}
发表于 2025-07-28 00:03:46 回复(0)
#include <stdio.h>

int main(){
    float a,f;
    char m;
    scanf("%f %c", &a, &m);//输入单精度浮点数和字符;
    int b = a,d=0;
    if (a<=1)   //判定快递重量是否小于等于1KG;
        d = 20;
    }
    else if(a>=1) //判定快递重量是否大于1KG以上;
    {   
        if (a - b != 0)  //判定快递重量是否带有小数部分;
        {
            d = 20 + b;  //快递重量带有小数部分,则快递费为20元加上超出重量1公斤1元的费用;
        }
        else    //  快递重量是正整数,则快递费为20元减去1KG的起步价;
        {
            d = 20 + (b - 1); //
        }
    }
     if(m == 'y') //判定是否需要加急;
     {
        d = d + 5;
    }
    printf("%d", d);//输出快递费;
    return 0;
}
发表于 2025-07-06 00:21:32 回复(0)
#include <stdio.h>
#include <math.h>

int main() {
   float a = 0;
   char b = 'a';
   int sum = 0;
   scanf("%f %c",&a,&b);
   if(a>0){
    sum = ceil(a)-1+20;
        if(b=='y'){
            sum+=5;
        }
   }
   printf("%d\n",sum);
    return 0;
}
发表于 2025-06-30 14:51:13 回复(0)
重点是怎么向上取整,n = a-1  (int)n是取小数点前的整数,  n-(int)n 是小数部分,当n-(int)n  != 0时,代表+1块
#include <stdio.h>

int main() {
    float a = 0.0f;
    char b = '0';
    int sum = 0;

    scanf("%f %c",&a,&b);

    if(a<=1)
    sum = 20;
    else
    {
        int m = 0;
        float n = a-1;
        if( n-(int)n != 0 )
            m = 1;


        sum = 20+(int)n+m;
    }

    if(b == 'y')
        sum += 5;

    printf("%d",sum);
    return 0;
}


发表于 2025-06-14 20:18:08 回复(0)
#include <stdio.h>

int KG()
{
    float a = 0.0f;
    char b;
    scanf("%f %c", &a, &b);

    int sum = 20;

    if (a <= 1)
    {
        if (b == 'y' || b == 'Y')
        {
            return sum += 5;
        }
        else
        {
            return sum;
        }
    }
    else
    {
        int result = a;
        if (a - result > 0)
        {
            a += 1;
        }

        if (b == 'y' || b == 'Y')
        {
            return sum = sum + (a - 1) * 1 + 5;
        }
        else
        {
            return sum = sum + (a - 1) * 1;
        }
    }

}

int main()
{
    int ret = KG();
    printf("%d", ret);
}
发表于 2025-06-09 19:25:21 回复(0)
#include <stdio.h>

int main()
{
    float a = 0.0;
    char b =0;
    int m = 0;
    scanf("%f %c",&a,&b);
   
    if(b == 'y')  b = 1;
    else b = 0;
   
    if(a > 1)
    {
        if(a > (int)a) m = 20 + (int)a + b * 5;
        else m =a + 19 + b*5;   // m = 20 + a - 1 + b*5;
    }

    else if(a <= 1)
    {
        m = 20 + b*5;
    }

    printf("%d",m);
    return 0;
}

发表于 2025-04-30 11:11:49 回复(0)
向上取整函数,double ceil(double x),包含在<math.h>中
例如:ceil(3.14)的结果是3.40
ceil(-3.14)的结果是-3.0
发表于 2025-04-27 13:13:55 回复(0)
#include <stdio.h>
int Postage(float x, char y) {
    int z = 20;
    if (x > 1) {
        if (x > (int)x) {
            z += (int)x;
        } else {
            z += (int)x - 1;
        }
    }
    if (y == 'y') {
        z += 5;
    }
    return z;
}

int main() {
    float a = 0.0f;
    char b = '0';
    scanf("%f %c", &a, &b);
    int postage = Postage(a, b);
    printf("%d", postage);
    return 0;
}
发表于 2025-01-05 19:33:11 回复(0)
#include <math.h>
#include <stdio.h>

int main()
 {
    double a;
    char b;
    double c;
    scanf("%lf %c",&a,&b);

    if(a<=1.0&&b=='n')
    {
        printf("20");

    }
    else if(a<=1.0&&b=='y')
    {
        printf("25");
    }
    else
    {
        int k = floor(a);
        c = a-floor(a);
        if(b=='n')
        {
            if(c==0)
            {
                int g = 20+(k-1)*1;
                printf("%d",g);
               
            }
            else{
                int h = 20+(k-1)*1+1*1;
                printf("%d",h);
            }

           
        }
        else if(b=='y')
        {
            if(c==0)
            {
                int l = 20+(k-1)*1+5;
                printf("%d",l);
               
            }
            else{
                int u = 20+(k-1)*1+1*1+5;
                printf("%d",u);
            }


        }

    }

    return 0;
}
发表于 2024-11-30 16:14:35 回复(0)
#include <stdio.h>
int main() {
    float a;
    scanf("%f",&a);
    int n;
    char b;
    scanf("%c",&b);
    int p=a-1;
    int e=a;
    if((a-p)!=0&&(a-e)!=0)
        p=a;
    scanf("%c",&b);
    if(b == 'y')
    {
        if((a<=1)&&(a>0))
        n = 20 + 5;
        else
        n = 20 +  p * 1 + 5;
    }
    if(b == 'n')
    {
        if((a<=1)&&(a>0))
        n = 20 ;
        else
        n = 20 + p * 1 ;
    }
    printf("%d\n",n);
    return 0;
}
发表于 2024-07-29 00:18:58 回复(0)
#include <stdio.h>

int main() {
    float a;
    char b;
    scanf("%f %c", &a, &b);
    int count;
    if((a - (int)a)>0)
    count = a + 1;
    else
    count = a;
    if(b == 'y')
    printf("%d",(count-1) * 1+20+5);
    if(b == 'n')
    printf("%d",(count-1) * 1+20);
    return 0;
}
发表于 2024-07-15 16:43:17 回复(0)
#include <stdio.h>

int main() {
    float weight;
    char isUrgent;
    scanf("%f %c", &weight, &isUrgent);

    float cost = 20;  // 起步价20元

    if (weight > 1) {
        cost += (int)(weight - 1 +
                      0.999);  // 超出部分每kg 1元,不足1kg按1kg计算
    }

    if (isUrgent == 'y') {
        cost += 5;  // 加急需额外加5元
    }

    printf("%.0f\n", cost);  // 输出总共的快递费用
    return 0;
}
发表于 2024-06-13 16:59:57 回复(0)

#include <stdio.h>

int main() {
    float a = 0;
    char b = 0;
    scanf("%f %c", &a, &b);
    int s = 0;
    if ( a <= 1.0 )
    {
        s = 20;
        goto finish;
    }
    if ((int)a == a)
    {
        s = (int)a - 1 + 20;
    }
    else
    {
        s = (int)a + 20;
    }
finish:
    if (b == 'y')
    {
        s = s + 5;
    }

    printf("%d", s);
    return 0;
}

发表于 2024-06-11 17:56:08 回复(0)
#include <stdio.h>

int main() {
    float a=0,  p=0;
    char b=0;
    scanf("%f %c",&a, &b );

    if (a<=1)
        p=20;
    else if (((int)a-1)>0)
     {
         p = 20+a-1;
        if (a-(int)a>0)
         p = 20 +(int)a;
     }

    if (b =='y')
    {
        p= p+5;
    }

     printf("%.0f", p);
    return 0;
}
发表于 2024-04-28 13:31:33 回复(0)
#include <stdio.h>

int main()
{
    float a = 0;
    char b = '0';
    scanf("%f %c", &a, &b);
    int money = 20;     //只要寄快递就交20块
    if (a > 1)  
    {                  //超出1千克的钱     //不足1千克按一千克算
        money = money + (int)(a - 1) + (a - (int)a > 0 ? 1 : 0);
    }
    if (b == 'y')   //加急的钱
        money += 5;
    else if (b == 'n')
        ;
    printf("%d\n", money);
}

编辑于 2024-04-16 18:24:27 回复(1)
#include <stdio.h>

int main() {
    float a;
    char b;
    int cost;
    scanf("%f %c",&a,&b);
    if(a<=1)
    {
        cost=20;
    }
    else
    {
        if(a==(int)a)
            cost=20+(int)a-1;
        else
            cost=20+(int)a;
    }
    if(b=='y')
        cost=cost+5;
    printf("%d\n",cost);
    return 0;
}
发表于 2024-04-02 20:23:23 回复(0)
#include <stdio.h>
int main() {
    float a;
    char b;
    int amount = 0;
    scanf("%f %c",&a,&b);
    if(a <= 1){
        if(b == 'y'){
            amount = 25;
        }
        else {
            amount = 20;
        }
    }
    else{
        int c = a-0.1 + 1; // 向上取整
        if(b == 'y'){
            amount =  c + 20 + 4;
        }
        else {
            amount =  c + 19;
        }
    }
    printf("%d",amount);
    return 0;
}
发表于 2024-02-23 12:33:33 回复(0)
#include <stdio.h>
#include <math.h>

int main()
{
	float weight = 0.0f;
	char rate = 0;
	int money = 0;

	scanf("%f %c", &weight, &rate);
	
	//在1kg以内,直接按起步价算
	if (weight <= 1.0f)
	{
		money = 20;
	}
	//超出1kg
	//超过的部分 + 20的起步价
	else
	{
		money = (int)ceil((double)(weight - 1)) + 20;
	}

	//如果加急 -> +5元
	if (rate == 'y')
	{
		money += 5;
	}

	printf("%d\n", money);

	return 0;
}

发表于 2024-02-20 01:32:11 回复(0)

问题信息

难度:
70条回答 2632浏览

热门推荐

通过挑战的用户

查看代码
牛牛的快递