-2
**While runnning the C program the output is 33.000 

同时正确的答案是 33.200 有什么问题是浮点数有任何数据返回类型问题,所以我应该使用双数据类型吗?

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

}
4

2 回答 2

1

问题是,声明

 (sumofmarks / 5) ;

是整数除法,不会产生浮点结果。要获得浮点结果,您需要执行浮点除法,通过说

(sumofmarks / (float)5) ;

或者

(sumofmarks / 5.0) ;
于 2020-03-30T15:08:24.577 回答
0

在表达式中(average = (sumofmarks / 5))

sumofmarks / 5返回一个整数值,然后将其转换为 float 并存储在average中。

sumofmarks / 5.0返回浮点值。

于 2020-03-30T17:10:50.287 回答