这是我的代码:
#include <stdio.h>
float aveg(a,b){
float result;
result=(a+b)/2;
return result;
}
int main(void) {
float a,b,avg;
printf("first no: ");
scanf("%f",&a);
printf(" %f\n",a);
printf("second no: ");
scanf("%f",&b);
printf(" %f\n",b);
avg=(a+b)/2;
printf("average is: ");
printf("%.2f", avg);
avg=aveg(a,b);
printf("\n average from function is: ");
printf("%.2f",avg);
}
这是我的输出......
第一个号码:3 3.000000 第二号:5 5.000000 平均值是:4.00 功能平均值为:537133056.00
有人能解释为什么我从浮动函数中得到这么多不同的数字吗? 我尝试声明这个功能:
float avg(float a, float b);
但是编译器让我犯了错误...... 有什么想法吗?
答案 0 :(得分:1)
最快的解决方法是添加一个点(将在一秒内解释):
result=(a+b)/2.;
a
和b
都声明为int
(默认情况下,因为您没有指定任何类型),因此您的(a+b)
会产生一个整数,然后除以另一个整数。
为了使你的除法结果成为一个浮点数,你应该确保至少有一个操作数是float
类型,这就是为什么2.
中的点(它只是{的简短版本} {1}})。
当然,真正的解决方法是正确声明函数参数的数据类型:
2.0
如果代码中没有其他语法错误,这将有效。