帮看看逻辑错误,为什么怎么运行都显示不在数组

#include"stdio.h"
int is(int a[],int n);
int wz(int a[],int n,float ave);
int main()
{
int n,a[50],k,i;
float average;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%5d",&a[i]);
}
average=is(a,n);
k=wz(a,n,average);
if(k==-1)
{
printf("平均值为%.2f,不在数组中",average);
}
else
{
printf("平均值为%.2f,其位置是%d",average,i);
}
}
int is(int a[],int n)
{
int i;
float ave;
float sum=0;
for(i=0;i<n;i++)
{
sum+=a[i];
}
ave=sum/n;
return ave;
}
int wz(int a[],int n,float ave)
{
ave=is(a,n);
int i;
for(i=0;i<n;i++)
{
if(a[i]==ave)
{
break;
return i;
}
else
return -1;
}
}

img

改了下你的代码

#include <stdio.h>
float is(float a[], int n);
int wz(float a[], int n, float ave);
int main() {
    int n, k, i;
    float a[50];
    float average;
    scanf("%d", &n);
    for(i = 0; i < n; i++) {
        scanf("%f", &a[i]);
    }
    average = is(a, n);
    k = wz(a, n, average);
    if(k == -1) {
        printf("平均值为%.2f,不在数组中", average);
    } else {
        printf("平均值为%.2f,其位置是%d", average, k);
    }
}
float is(float a[], int n) {
    int i;
    float ave;
    float sum = 0;
    for(i = 0; i < n; i++) {
        sum += a[i];
    }
    ave = sum / n;
    return ave;
}
int wz(float a[], int n, float ave) {
    int i;
    for(i = 0; i < n; i++) {
        if(a[i] == ave) {
            return i;
        }
    }
    return -1;
}