运行这个代码,为什么会出现下面的情况,是哪里错了


#include
int main()
{
    void sort(float *x,int n);
    int i,m;
    float *p;
    float a[1000];
    p=a;
    scanf("%d",&m);
    for(i=0;iscanf("%f",p++);
     }
     p=a;
     sort(p,m);
     return 0;
}

void sort(float *x,int n)
{
    int i,j,k,t;
    float aver;
    for(i=0;i-1;i++){
        k=i;
        for(j=j+1;jif(*(x+j)>*(x+k))k=j;
        if(k!=i)
        {
            t=*(x+i);*(x+i)=*(x+k);*(x+k)=t; }
    }
    for(i=0;iprintf("max=%0.2f\nmin=%0.2f\navge=%0.2f",*x,*(x+n-1),aver/n);
    
}

img

img

修改如下,供参考:

#include <stdio.h>
int main()
{
    void sort(float* x, int n);
    int i, m;
    float* p;
    float a[1000];
    p = a;
    scanf("%d", &m);
    for (i = 0; i<m;i++)
        scanf("%f", p++);
    p = a;
    sort(p, m);
    return 0;
}
void sort(float* x, int n)
{
    int i, j, k, t;
    float aver = 0;
    for (i = 0; i < n - 1; i++) {
        k = i;
        for (j = k + 1; j < n; j++)
            if (*(x + j) > *(x + k)) k = j;
        if (k != i)
        {
            t = *(x + i); *(x + i) = *(x + k); *(x + k) = t;
        }
    }
    for (i = 0; i < n; i++)
        aver += *(x + i);
    printf("max=%0.2f\nmin=%0.2f\navge=%0.2f", *x, *(x + n - 1), aver / n);
}