You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Dev C++中实现除法结果整数与小数部分拆分的问题

解决C语言除法取整数部分和小数部分的问题

先说说你现有代码里的几个问题:

  • main()应该写成标准的int main(),函数末尾要加return 0;
  • 你把a/b同时赋值给c和d,那e = c - d结果必然是0,完全起不到获取小数部分的作用
  • 用%.0f格式化浮点数会自动四舍五入,所以5.5会被输出成6,这不是你要的截断式整数部分
  • 变量f没用到,属于冗余代码

正确的实现思路

要得到除法结果的整数部分和小数部分,核心逻辑很简单:

  1. 先计算被除数 / 除数的完整结果
  2. 整数部分:对正数来说,直接把浮点数强制转换成int类型,会自动截断小数部分(比如5.5转成int就是5)
  3. 小数部分:用完整的除法结果减去整数部分即可

另外要注意:

  • 必须判断除数是否为0,避免程序崩溃
  • 输出小数部分时,用%g格式符可以自动去掉末尾多余的0(比如0.5不会输出成0.500000)

修正后的代码

#include <stdio.h>

int main() {
    float dividend, divisor, result, integer_part, decimal_part;
    
    // 输入被除数和除数
    printf("请输入被除数和除数:");
    scanf("%f %f", &dividend, &divisor);
    
    // 判断除数是否为0
    if (divisor == 0) {
        printf("除数不能为0!\n");
        return 1; // 异常退出
    }
    
    // 计算完整结果
    result = dividend / divisor;
    // 获取整数部分(强制类型转换截断小数)
    integer_part = (int)result;
    // 获取小数部分
    decimal_part = result - integer_part;
    
    // 输出结果,%g自动去掉末尾多余的0
    printf("整数部分:%.0f\n", integer_part);
    printf("小数部分:%g\n", decimal_part);
    
    return 0;
}

测试示例

输入11和2时,输出:

整数部分:5
小数部分:0.5

如果输入10和3,输出:

整数部分:3
小数部分:0.333333

内容的提问来源于stack exchange,提问作者Star

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 13:22:02