C 函数将两个分数相加,并只输出0的小数

C 函数将两个分数相加,并只输出0的小数,c,type-conversion,function-definition,C,Type Conversion,Function Definition,我正在尝试制作一个简单的程序,它将两个分数相加。它采用四个数字作为输入: 第一个分数的分子和分母,第二个分数的分子和分母。输出应为十进制形式的两个分数之和。我的程序坏了,我一直在想如何修复它。对于尝试运行该函数的所有示例,它输出0.000 # include <stdio.h> int fracsum(float n1, float d1, float n2, float d2) { float n3, d3; double res; n3 = (n1*d2

我正在尝试制作一个简单的程序,它将两个分数相加。它采用四个数字作为输入: 第一个分数的分子和分母,第二个分数的分子和分母。输出应为十进制形式的两个分数之和。我的程序坏了,我一直在想如何修复它。对于尝试运行该函数的所有示例,它输出0.000

# include <stdio.h>

int fracsum(float n1, float d1, float n2, float d2)
{
    float n3, d3;
    double res;
    n3 = (n1*d2) + (d1*n2);
    d3 = d1 * d2;
    res = n3 / d3;
    return res;
}

int main(void)
{
    printf("%.3f %.3f %.3f\n",
       fracsum(1,2,2,4),
       fracsum(1,4,1,8),
       fracsum(4,3,5,6));

    return 0;
}
#包括
整数分形和(浮点n1、浮点d1、浮点n2、浮点d2)
{
浮球n3、d3;
双res;
n3=(n1*d2)+(d1*n2);
d3=d1*d2;
res=n3/d3;
返回res;
}
内部主(空)
{
printf(“%.3f%.3f%.3f\n”,
分形和(1,2,2,4),
分形和(1,4,1,8),
fracsum(4,3,5,6));
返回0;
}
此代码的输出为:0.000 0.000 0.000

int fracsum
但你显然想要

double fracsum

通过printf调用

定义了
int fracsum()
!请启用并处理编译器警告。谢谢!正如你们所看到的,我对C相当陌生。@DougRichmond:所以我们C。