有人可以向我解释为什么"扫描"函数在以下代码中不起作用?我该怎么做才能解决这个问题?谢谢!
int main() {
int age, sumage;
float mean;
sumage = 0;
for (int a = 1; a <= 20; a = a + 1) {
printf("Enter age: \n");
scanf("%d", &age);
sumage = sumage + age;
}
mean = sumage/20;
printf("mean = é %f \n" , mean);
return 0;
}
答案 0 :(得分:1)
mean = sumage/20;
这里sumage
是一个整数。因此,除法是整数除法。
更改为(float)sumage / 20.0
以获得预期结果。
答案 1 :(得分:0)
您正在尝试使用float
值填充integer
:
mean = sumage/20;
需要cast
到float
才能将值存储为float
:
mean = (float) sumage/20;
底线,int/int
= int
,除非另有说明。算术转换的 C99 参考是:
6.3.1.8常规算术转换
否则,如果任一操作数的相应实数类型为float, 另一个操作数在不更改类型域的情况下转换为a 类型,其对应的实数类型是float.51)