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;
}
相关推荐
松涛和鸣26 分钟前
从零开始理解 C 语言函数指针与回调机制
linux·c语言·开发语言·嵌入式硬件·排序算法
无限进步_3 小时前
C语言动态内存的二维抽象:用malloc实现灵活的多维数组
c语言·开发语言·数据结构·git·算法·github·visual studio
星轨初途5 小时前
数据结构排序算法详解(5)——非比较函数:计数排序(鸽巢原理)及排序算法复杂度和稳定性分析
c语言·开发语言·数据结构·经验分享·笔记·算法·排序算法
f***01936 小时前
CC++链接数据库(MySQL)超级详细指南
c语言·数据库·c++
小曹要微笑7 小时前
STM32F7 时钟树简讲(快速入门)
c语言·stm32·单片机·嵌入式硬件·算法
前端世界9 小时前
float 还是 double?用储罐体积计算带你看懂 C 语言浮点数的真实世界坑
java·c语言·开发语言
小青龙emmm10 小时前
2025级C语言第二次周测(国教专用)题解
c语言·开发语言·算法
学习路上_write10 小时前
FREERTOS_互斥量_创建和使用
c语言·开发语言·c++·stm32·单片机·嵌入式硬件
程序猿编码12 小时前
PRINCE算法的密码生成器:原理与设计思路(C/C++代码实现)
c语言·网络·c++·算法·安全·prince
charlie11451419113 小时前
深入理解C/C++的编译链接技术6——A2:动态库设计基础之ABI设计接口
c语言·开发语言·c++·学习·动态库·函数