首页 > 试题广场 >

牛牛的快递

[编程题]牛牛的快递
  • 热度指数: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 liub(float x)
{
    if(x==(int)x)
    {
        return x-1;
    }
    else
    {
        return x;
    }
}
int main()
{
    float a;
    char b;
    int c;
    scanf("%f %c",&a,&b);
    if(b=='y')
    {
        if(a<=1)
        {
            c=25;
        }
        else
        {
            c=25+liub(a);
        }
    }
    if(b=='n')
    {
        if(a<=1)
        {
            c=20;
        }
        else
        {
            c=20+liub(a);
        }
    }
    printf("%d",c);
    return 0;
}
发表于 2022-04-19 23:47:53 回复(0)
#include<iostream>
using namespace std;

int main()
{
    float a;
    char b;
    cin >> a >> b;
    if(a <= 1) a = 20;
    else 
    {
        if ((int)(a * 10) % 10 == 0) a = 20 + ((int)a - 1);
        else a = (int)a + 20;
    }
    if (b == 'y') a += 5;
    
    cout << a << endl;
    
}

发表于 2022-02-26 14:10:05 回复(0)
新手写法
#include <stdio.h>
int main()
{
    float a;
    char b;
    scanf("%f %c", &a, &b);
    int n = 20, x = 0;
    if(a > 1)
    {
        x = a - 1;
        if(a - 1 - x > 0)
            x = x + 1;
    }
    n = n + x;
   if(b == 'y')
       n = n + 5;
    printf("%d\n", n);
   return 0;
}


发表于 2022-02-16 15:27:58 回复(3)
#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;
    scanf("%f %c", &a, &b);
    int c;
    if (a == (int)a) {
        c = 20 + a - 1;
    }
    else {
        c = 20 + (int)a;
    }
    printf("%d", (b == 'y') ? c + 5 : c);
    return 0;
}
发表于 2023-02-08 15:39:08 回复(0)
#include <stdio.h>

int main(){
    float a = 0.0;int price = 20;char b = 0;
    scanf("%f %c", &a, &b);
    if(a > 1)
        price += (int)a-1 == (float)a-1 ? a-1 : a;
    if(b == 'y')
        price += 5;
    printf("%d", price);
    return 0;
}

发表于 2022-05-22 16:56:25 回复(0)
#include <stdio.h>
int main()
{
    char b;
    int c,d=0;
    float a;
    scanf("%f %c",&a,&b);
    if (a>1)
    {
        if (b=='y')       //内嵌if语句
        d=5;
    c=20+d+(int)(a-1)+1;  //写入(int)这个的目的是让(a-1)这个计算结果取四舍五入的值
    }
    else
    {
    if (b=='y')           //同上
        d=5;
    c=20+5;
    }
    printf("%d",c);
    return 0;
}
发表于 2024-11-23 17:13:42 回复(0)
#include <iostream>  
#include <iomanip>  
#include <cmath>  

int main() {  
    float a;  // 重量  
    char b;   // 是否加急  
    std::cin >> a >> b; // 读入重量和是否加急  

    // 初始化费用  
    float cost = 20.0; // 起步价  

    // 处理超过1kg的部分  
    if (a > 1.0) {  
        cost += std::ceil(a - 1.0); // 超出部分按每kg 1元计算  
    }  

    // 判断是否选择加急  
    if (b == 'y') {  
        cost += 5.0; // 加急费用  
    }  

    // 输出结果,去掉小数部分  
    std::cout << static_cast<int>(cost) << std::endl;  

    return 0;  
}
发表于 2024-08-27 16:21:51 回复(0)
int main() {
    float a;
    char b;
    int sum = 20;
    scanf("%f %c", &a, &b);

    if (a > 1)
    {
        while (a>1)
        {
            a--;
            sum++;
        }
    }

    if (b == 'y')
    {
        sum += 5;
    }
    printf("%d", sum);
    return 0;
}

发表于 2024-08-09 10:31:50 回复(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() {
    int money=0;
    float a;
    char b;
    scanf("%f %c",&a,&b);
    if(a<=1.0){
        money=20;
    }
    else {
        money=20+ceil(a-1);
    }
    if(b=='y'){
        money+=5;
    }
    printf("%d",money);
    return 0;
}

编辑于 2024-02-06 16:42:51 回复(0)
#include <stdio.h>

int main() {
    float a;
    char b;
    int price;
    scanf("%f %c", &a, &b);
    if(a<=1)
        price = 20;
    else
        if(a==(int)a)
            price = 20+(int)a-1;
        else
            price = 20+(int)a;
    printf("%d\n", (b=='y')?price+5:price);
    return 0;
}

发表于 2022-11-09 16:10:42 回复(1)
#include <stdio.h>

int main()
{
    float a;    //快递的重量
    char b;    //是否加急
    int much;   //快递的费用
    scanf("%f %c", &a, &b);
    float tmp = a;  //记录 a 的值
    if (b == 'y')   //加急
    {
        if (a > 1 && (int)a == tmp)    //a为整数
        {
            much = 25 + a - 1;
            printf("%d\n", much);
        }
        else if (a > 1 && (int)a != tmp)   //a 为小数
        {
            much = 25 + (int)a;
            printf("%d\n", much);
        }
        else
        {
            printf("25\n");
        }
    }

    if (b == 'n')   //不加急
    {
        if (a > 1 && (int)a == tmp)    //a 为整数
        {
            much = 20 + a - 1;
            printf("%d\n", much);
        }
        else if (a > 1 && (int)a != tmp)   //a 为小数
        {
            much = 20 + (int)a;
            printf("%d\n", much);
        }
        else
        {
            printf("20\n");
        }
    }
    return 0;
}

发表于 2022-09-17 15:53:03 回复(0)
#include<stdio.h>
int main()
{
    float a;
    char b;
    scanf("%f %c",&a,&b);
    if (b=='y')
    {
        if (a<=1)
        {
            printf("25");
        }
        else 
        {
            printf("%.0f",24.4+a);
        }
    }
    else 
    {
        if (a<=1)
        {
            printf("20");
        }
        else
        {
            printf("%.0f",19.4+a);
        }
    }
    return 0;
}
发表于 2022-08-09 23:40:45 回复(0)
本题核心是如何判断m的数据类型(浮点、整数?)

取余(a%b),其中a、b都必须是整型
所以要进行这样处理:((int)(m*10)%10==0),但是这只能针对一位小数
最终,这样处理最好else if(int(m)-m==0)
发表于 2022-06-08 09:14:07 回复(0)
#include <iostream>
#include <cmath>
using namespace std;

int main() {
    float a, sum;
    char b;

    cin >> a >> b;
    sum = 19 + ceil(a);
    if (b == 'y')
        sum += 5;
    cout << sum;
}
发表于 2022-05-05 21:49:45 回复(0)
#include <stdio.h>

int main()
{
    float a=0;
    char ch=0;
    scanf("%f %c",&a,&ch);
    if(a<=1)
    {
        if(ch=='y')
        printf("%d",25);
        else
         printf("%d",20);
    }
    if(a>1)
    {
        if(ch=='y')
        {
            if(a-1>(int)(a-1))
            printf("%d",26+(int)(a-1)*1);
            else
            printf("%d",25+(int)(a-1)*1);

        }
        else
        {
            if(a-1>(int)(a-1))
            printf("%d",21+(int)(a-1)*1);
            else
            printf("%d",20+(int)(a-1)*1);

        }
       
    }

    return 0;
}
发表于 2025-11-25 18:58:56 回复(0)
a,c=input().split()
f=float(a)
p=0
if f<=1:
    p=20
else:
    t=(f-1)%1
    if t!=0:
        p=20+(f-1)+1
    else:
        p=20+(f-1)
if c=="y":
    p+=5

print(int(p))

发表于 2025-11-21 19:25:31 回复(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;
        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
<iostream>
using namespace std;
const double eps = 1e-9;
int main() {
    double a; char b;
    cin >> a >> b;
    a -= eps;
    cout << (int)a + (b == 'y' ? 5 : 0) + 20 << '\n';
}

发表于 2025-11-11 23:30:21 回复(0)

问题信息

难度:
144条回答 2631浏览

热门推荐

通过挑战的用户

查看代码
牛牛的快递