一旦结果值被固定为int,我们想把这些数组的平均值取到小数点,但是即使我们把它改成(float)*result = sum_address/5;在函数call_address中,应该没有错误。
#include <stdio.h>
void call_value(int A[], int result)
{
int i;
int sum = 0;
for(i = 0; i < 5; i++)
{
sum += A[i];
}
result = sum / 5;
}
void call_address(int A[], int *result)
{
int i;
double sum_address = 0;
for(i = 0; i < 5; i++)
{
sum_address += A[i];
}
*result = sum_address / 5;
}
int main()
{
int result = 0;
int A[5] = {95, 88, 76, 54, 85};
call_value(A,result);
printf("[Call by value] result = %d\n",result);
call_address(A,&result);
printf("[Call by address] result = %.1f\n",(float)result);
}
我们期望数组的平均值为79.6,但实际上只有79.0。因为这是一个任务,所以int result = 0和int *result不应更改。
1条答案
按热度按时间n53p2ov01#
我大胆地猜测,您应该在
main
中进行除法运算,这两个函数只用于对数组的值求和。输出量:
否则,在无法更改
result
的数据类型的情况下,就没有合理的解决方案来解决此问题。