该程序是关于函数做平均值的。我收到一个错误:
错误:数字常量之前的预期";"、"、"或")
在 avg_array() 函数中,每当我构建它时。帮助将不胜感激,谢谢!
#include <stdio.h>
#define SIZE 5
// Prototypes
int avg_array (int*, int);
main()
{
int values[SIZE];
int avg;
int i;
printf("Enter 5 numbers please. n");
for(i=0; i<SIZE; i++)
{
scanf("%d", &values[i]);
}
avg = avg_array(values, SIZE);
printf("n The avg of the array is %d n", avg);
getchar();
getchar();
} // end main()
/* Implement avg_array() WHERE THE ERROR PERTAINS */
avg_array(int my_array[], int SIZE)
{
int sum;
int i;
int fxn_average;
for(i=0; i<SIZE; i++)
{
sum = sum + my_array[i];
}
fxn_average = (sum/SIZE);
return (fxn_average);
}
您正在使用标识符SIZE
作为参数。 这也是由预处理器转换为5
的宏。 预处理器应用宏后,它看起来像
avg_array (int my_array[], int 5)
由于5
是数字常量而不是标识符,因此会生成错误。 更改变量名称。
看起来您还有一个缺少返回类型的函数签名,该返回类型应与上面声明的原型匹配。 试试这个:
int avg_array (int *my_array, int size)
{
int sum = 0;
int i;
for(i=0; i<size; i++)
{
sum = sum + my_array[i];
}
return sum/size;
}
变量sum
应初始化为 0。 不需要局部变量fxn_average
,因为您可以在末尾仅使用 return sum/size;
。
我将第一个参数的类型从 int[]
(int
数组)更改为int *
(指向 int
的指针),以便函数定义与问题中给出的原型匹配。该函数被声明为
int avg_array (int*, int);
这些参数没有标识符;只指定了它们的类型。 这是有效的C,但许多风格指南都反对它,因为命名参数有助于读者理解含义或意图。 例如,如果您正在编写编程接口,程序员可能会看到的只是头文件中的函数原型。 必须清楚编写正确的函数调用的参数是什么。 无论如何,添加标识符如下所示:
int avg_array (int *my_array, int size);
这与我上面使用的定义相同。