c语言:大米袋装

大米袋装

任务描述

地主家的庄稼丰收了,在他家的场院里有三堆小麦,长工想把这些小麦装袋运走,已知每个麻袋最多可装小麦x公斤,问这三堆小麦最少需要多少个麻袋。

输入格式:

输入仅一行,包括4个双精度浮点数,前三个数代表三堆小麦的重量,第4个数代表x,每个数的小数位数最多为2位。

输出格式:

输出也是一行,输出整数结果。

输入示例

c 复制代码
100.00 200.0 306.61 101.10

输出示例

c 复制代码
7

思路

本来想着用/和%来解决,若余数为0,则为num,若不为0,则加1。

c 复制代码
# include<stdio.h>
int main()
{
    double a,b,c,d;
    int num,e;
    scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
    num=(a+b+c)/d;
    e=(int)(a+b+c)%(int)d;
    if(e==0)
    {
        printf("%d",num);
    }
    else
        printf("%d",num+1);
    return 0;
}

但由于是浮点数,浮点数不能参与取余运算,因此转为int类型,但这是向下取整,故不可行。正确做法是调用ceil函数,正确代码如下。

c 复制代码
# include<stdio.h>
# include<math.h>
int main()
{
    double a,b,c,d;
    int num;
    scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
    num = ceil((a+b+c)/d); // 使用 ceil 函数向上取整
    printf("%d", num);
    return 0;
}

还有另一种正确做法,代码如下:

c 复制代码
# include<stdio.h>
int main()
{
    double a,b,c,d;
    int num;
    scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
    num = (a+b+c)/d;
    if(a+b+c-num*d>0)
        printf("%d",num+1);
    else
        printf("%d",num);
    return 0;
}
相关推荐
Hhy_11073 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
曦樂~14 小时前
Cpp面筋
c语言·c++
HUANGZHENXUAN1231 天前
最大子矩阵和:从 O(n⁴) 到 O(n³) 的列压缩 + Kadane
c语言·前端
§ꦿCFོ༉1 天前
嵌入式八股文—C语言入门学习(二)
c语言·学习·嵌入式·编程语言
David猪大卫2 天前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
Zwawa2 天前
两根线怎么挂住一堆设备:I2C 协议原理
c语言·单片机·嵌入式
武子康2 天前
h3.c 的两个权重槽,怎样把内存压力换成 SSD 等待
c语言·人工智能·agent
§ꦿCFོ༉3 天前
嵌入式八股—C语言入门学习(一)
c语言·编程语言·嵌入式八股文
沐晓时光3 天前
C语言入门,字符串和字符串函数知识讲解
c语言·开发语言
智者知已应修善业3 天前
【51单片机实现从下到上,从上到下,从中间到两边,两边到中间】2024-10-23
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机