gpt4 book ai didi

c - 函数返回垃圾值

转载 作者:行者123 更新时间:2023-11-30 19:57:55 24 4
gpt4 key购买 nike

我有以下 C 代码:

#include <stdio.h>

// Global variables :
int i;
int x[10];
int Nmax;
int sum;

// Functions used :
void Summation();
int Average(float avg); // This function will return avg

int main()
{
float avg;

printf("Mention how many numbers to be added\n");
scanf("%d",&Nmax);
printf("Enter %d numbers\n",Nmax);
for (i=0; i<Nmax; i++){
scanf("%d",&x[i]);
}

Summation();

Average(avg);

printf("%d %d %f\n",Nmax,sum,avg);
printf("Average = %.2f\n",avg);
return 0;
}

// Summation :
void Summation()
{
sum=0;
for (i=0; i<Nmax; i++) {
sum=sum+x[i];
}
printf("Sum of them = %d\n",sum);
}


// Average
int Average(float avg)
{
avg=(float)sum/(float)Nmax;
return avg;
}

不知何故,函数Average没有返回预期的平均值。相反,它显示的是垃圾值。

典型的输入/输出:

Mention how many numbers to be added
4
Enter 4 numbers
1 2 3 4
Sum of them = 10
4 10 1637156136366093893632.000000
Average = 1637156136366093893632.00

这里出了什么问题?希望我在这里不需要指针吗?

最佳答案

对于平均函数,您将参数作为按值传递。调用该函数后,您不会将返回值分配回主函数内的 avg 变量。所以你打印的是 main 函数中声明的 avg 变量内的垃圾值。将代码更改为

avg = Average(avg);

这也是编写 C 程序的一种非常糟糕的方式。如果不需要全局变量,请不要使用它们。

关于c - 函数返回垃圾值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35409186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com