C语言:这个为什么结果总是0????

来源:百度知道 编辑:UC知道 时间:2024/06/23 00:58:05
double add (double a,double b)
{double s;
s=a+b;
return s;
}
main()
{double a,b,c;
printf("输入两个数:");
scanf("%f",&a);
printf("第二个:");
scanf("%f",&a);
c=add(a,b);
printf("结果是:%f",c);
}
能算出来了,结果不正确啊~~~~~~~

#include<stdio.h>
#include<stdlib.h>

double add (double a,double b)
{double s;
s=a+b;
return s;
}

int main()
{double a,b,c;
printf("输入两个数:");
scanf("%lf",&a); //应该用%lf;
printf("第二个:");
scanf("%lf",&b); //应该用&b;
c=add(a,b);
printf("结果是:%lf",c);

system("pause");
}

printf("结果是:%f",c);

改成

printf("结果是:%g",c);

我算了,是不正确

double add (double a,double b)
{double s;
s=a+b;
return s;
}
main()
{double a,b,c;
printf("输入两个数:");
scanf("%f",&a);
printf("第二个:");
scanf("%f",&b);
c=add(a,b);
printf("结果是:%f",c);
}
double和float的精度不一样,用float输出,会产生精度损失,建议将输出改为以double类型输出

你的程序在输入第2个数时也赋给A了
而且abc都是double型的,printf没问题,因为会自动类型转换.