c语言溢出问题,输出结果不对?

任务描述
地主家的庄稼丰收了,在他家的场院里有三堆小麦,长工想把这些小麦装袋运走,已知每个麻袋最多可装小麦x公斤,问这三堆小麦最少需要多少个麻袋。输入格式:
输入仅一行,包括4个双精度浮点数,前三个数代表三堆小麦的重量,第4个数代表x, 每个数的小数位数最多为2位。
输出格式:
输出也是一行,输出整数结果。
输入样例: .
100.00 200.0 306.61 101.10
输出样例:7

 

#include <stdio.h>
int main(void)
{
    int sun;
    double sum;
    double one, two, three, x;

    printf("请输入三堆小麦的质量和每个麻袋(斤)能装多少公斤小麦\n");
    scanf_s
        ("%f, %f, %f, %f", &one, &two, &three, &x);

    sum = (one + two + three)/x;
    sun = sum / (int)sum;
    
    if (sun == 1)
        sum = sum;
    else(sun > 1);
        sum = sum + 1;
    
    
    printf("需要%d袋\n",sum);

    system("pause");
    return 0;
}

 

请输入三堆小麦的质量和每个麻袋(斤)能装多少公斤小麦
150.00 200.0 306.61 101.10
需要-641794048袋
请按任意键继续. . .

求助大佬。

scanf_s("%f, %f, %f, %f", &one, &two, &three, &x);

scanf_s使用%f读出来的是单精度float类型,你试试改成%lf。

scanf_s("%lf, %lf, %lf, %lf", &one, &two, &three, &x);

 

就是除了100没溢出其他三个数全乱了

 

#include <stdio.h>
int main(void)
{
     
    double sum,sun;
    double one, two, three, x;

    printf("请输入三堆小麦的质量和每个麻袋(斤)能装多少公斤小麦\n");
    scanf_s
        ("%lf %lf %lf %lf", &one, &two, &three, &x);
    //printf("%lf, %lf, %lf, %lf", one, two, three, x); 调试
    sum = (one + two + three) / x;
    //printf("%lf", sum);调试
    sun = sum / (int)sum;
    
    if (sun == 1)
        printf("需要%1.f袋\n", sum);
    else(sun > 1);
        sum = sum + 1;
        printf("需要%1.f袋\n",sum);

    system("pause");
    return 0;
}


//100.00 200.0 306.61 101.10

问题已解决

谢谢哥,我回去好好看看输入和输出.