我有2个数组,我想要平均值,为什么当我尝试运行代码时avg总是为0?
void avg(int a[], int b[], float d[]);
void main()
{
int a[N],b[N],i,c[N]={0};
float D[N]={0};
avg(a,b,D);
printf("D array is: ");
for(i=0;i<N;i++)
printf("%d, ",D[i]);
}
void avg(int a[], int b[], float d[])
{
int i;
for(i=0;i<N;i++)
{
d[i]=((a[i]+b[i])/2.0);
}
}
答案 0 :(得分:1)
代码中有几个问题:
函数avg
不返回任何内容,并且C中没有引用变量概念,您可以使用在函数中传递的原始值进行操作。
a[N]
和b[N]
未初始化,这是一个很大的错误。
通过%d
类型说明符尝试打印浮点值。
代码已重新定义:
#include <stdio.h>
#include <stdlib.h>
#define MAX 5
float* find_average(int[], int[]); // to return floating point array as a pointer
int main(void) {
int arrayA[] = {2, 3, 3, 4, 5};
int arrayB[] = {4, 3, 1, 1, 2};
// allocating memory for the array
float *average = (float *)malloc(sizeof(float) * MAX);
// getting the values and assigning it to 'average' pointer
average = find_average(arrayA, arrayB);
// printing each value of 'average'
for (int i = 0; i < MAX; i++)
printf("Average %d : %.2f\n", (i + 1), *(average + i));
return 0;
}
float* find_average(int a[], int b[]) {
static float average[MAX]; // to keep the values safe
for (int i = 0; i < MAX; i++)
average[i] = (a[i] + b[i]) / 2.0;
return average;
}
这将输出:
Average 1 : 3.00 // a[0] + b[0]
Average 2 : 3.00 // a[1] + b[1]
Average 3 : 2.00 // a[2] + b[2]
Average 4 : 2.50 // a[3] + b[3]
Average 5 : 3.50 // a[4] + b[4]
答案 1 :(得分:0)
您的代码中有一些错误,我已在我的代码中更正
初始化数组大小和数组元素。
使用指针将数组传递给函数并返回数组
#include<stdio.h>
void avg(int *a, int *b, float *d,int n);
void main()
{
int N;
int a[50],b[50],i;
float D[50];
printf("Enter size of array\n");
//initialize the length of array
scanf("%d",&N);
//initialize by taking input from keyboard
printf("Enter the first array\n");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
printf("Enter the second array\n");
for(i=0;i<N;i++)
{
scanf("%d",&b[i]);
}
//call by address
avg(&a[0],&b[0],&D[0],N);
printf("D array is: ");
for(i=0;i<N;i++)
{
printf("%f, ",D[i]);
}
}
平均函数的正确形式。
要将结果存储在数组D
中,必须使用按地址调用方法
void avg(int *a, int *b, float *d,int n)
{
int i;
for(i=0;i<n;i++)
{
*(d+i)=((*(a+i)+*(b+i))/2.0);
}
}
样本输入
Enter size of array
4
Enter the first array
1
2
3
4
Enter the second array
1
2
3
4
这将输出为
D array is: 1.000000, 2.000000, 3.000000, 4.000000,