用三个元素计算平均值,并用平均结果替换这些元素。
示例数组[1,2,7,-2,5,0, 2,8]
转化后[3,3,3,1,1,1,5,5]
出了点问题,我无法让它发挥作用。
#include <stdio.h>
int main ( ) {
int n, c[n];
int *avg;
int pom=0;
printf("Enter lenght of array\n");
scanf("%d",&n);
printf("Enter elements");
for(i = 0;i < n; i++)
scanf("%d",c[i]);
avg=Average(c , n, pom);
for(i = 0; i < n; i++)
printf("Avg elements= %d",*(avg+i))
return 0;
}
int Average(int arr[], int size, int z)
{
int k, l, m, Asum;
if (size < 0) {
return arr;
} else {
k=arr[z];
l=arr[z+1];
m=arr[z+2];
Asum=(k + l + m)/3;
arr[z]=Asum;
arr[z+1]=Asum;
arr[z+2]=Asum;
}
return Average(arr,size--,z++);
}
答案 0 :(得分:2)
int n, c[n];
是个问题。 n
未初始化,因此数组的大小是谁知道什么?这是未定义的行为。
相反
int main(void) {
int n;
int *avg;
int pom=0;
printf("Enter length of array\n");
if (scanf("%d",&n) != 1) return -1;
int c[n];
for(i = 0;i < n; i++)
// scanf("%d",c[i]);
scanf("%d",&c[i]); // pass the address of an `int`
也可能是其他问题。
答案 1 :(得分:1)
首先尝试简单输入,想象当您只输入1个数字时会发生什么,Average函数会做什么?不要运行代码,而是尝试在头脑中或用铅笔和纸张执行代码。如果您认为该程序只需要使用三个或更多数字,请尝试三个。
严肃的程序会明确拒绝无效的输入。