扫描功能在循环内不起作用

时间:2014-11-17 03:03:50

标签: c scanf

有人可以向我解释为什么"扫描"函数在以下代码中不起作用?我该怎么做才能解决这个问题?谢谢!

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;
}

2 个答案:

答案 0 :(得分:1)

mean = sumage/20;

这里sumage是一个整数。因此,除法是整数除法。

更改为(float)sumage / 20.0以获得预期结果。

答案 1 :(得分:0)

您正在尝试使用float值填充integer

mean = sumage/20;

需要castfloat才能将值存储为float

mean = (float) sumage/20;

底线,int/int = int,除非另有说明。算术转换的 C99 参考是:

  

6.3.1.8常规算术转换

     

否则,如果任一操作数的相应实数类型为float,   另一个操作数在不更改类型域的情况下转换为a   类型,其对应的实数类型是float.51)