**While runnning the C program the output is 33.000
同时正确答案是33.200哪里出了问题?float有任何数据返回类型问题,所以我应该使用双重数据类型吗?我被卡住了**
#include <stdio.h>
float passingmarksArrray(int studentmarks[5]);
int main(){
float studentmarks_Average ;
int marks[5] = {21, 24, 32, 45, 44};
studentmarks_Average = passingmarksArrray(marks);
printf("The average marks of the student is %.3f n", studentmarks_Average );
return 0;
}
float passingmarksArrray(int studentmarks[5]){
int i;
int sumofmarks = 0;
float average;
for (int i = 0; i < 5; ++i)
{
sumofmarks = sumofmarks + studentmarks[i];
}
average = (sumofmarks / 5) ;
return average;
}
问题是,语句
(sumofmarks / 5) ;
是整数除法,不会产生浮点结果。要获得浮点结果,您需要强制执行浮点除法,方法是说
(sumofmarks / (float)5) ;
或
(sumofmarks / 5.0) ;
在表达式中(平均值=(sumofmarks/5((
sumofmarks/5返回一个整数值,然后将其转换为浮点值并存储在average中。
而sumofmarks/5.0返回浮点值。