double类型排序输出的问题

问题遇到的现象和发生背景

在学函数指针数组的时候想到写一个对double类型数组可以自主选择顺序逆序排序的代码,发现逆序的时候最大值始终为零,而顺序的时候就正常,麻烦大家帮我看看

用代码块功能插入代码,请勿粘贴截图
#include 
#include 
#include  
#define max 5
void print(double data[]);
void upsort(double data[]);
void downsort(double data[]);
void (*ptr[2])(double data[]);
int main()
{
    double x[max+1];
    int count;
    for(count=0;countprintf("enter the double%d:",count);
        scanf("%lf",&x[count]);
        getchar();
    }
    puts("enter the number 1 or 0 to choose the upsort or downsort");
    ptr[0]=downsort;
    ptr[1]=upsort;
    int ch;
    scanf("%d",&ch);
    if(ch==0||ch==1)
    {
        ptr[ch](x);
        print(x);
    }
    else
    {
        puts("error");
        exit(1);
    }
    return 0;
}
void print(double data[])
{
    int count;
    for(count=0;countprintf("%lf\n",data[count]);
    }
}
void upsort(double data[])
{
    int a,b;
    double i;
    for(a=0;afor(b=0;bif(data[b]>data[b+1])
            {
                i=data[b];
                data[b]=data[b+1];
                data[b+1]=i;
            }
        }
    }
}
void downsort(double data[])
{
    int a,b;
    double i;
    for(a=0;afor(b=0;bif(data[b]1])
            {
                i=data[b];
                data[b]=data[b+1];
                data[b+1]=i;
            }
        }
    }
}

运行结果及报错内容

img


img

  for(a=0;a<max-1;a++)
    {
        for(b=0;b<max-i-1;b++)
        {
            if(data[b]<data[b+1])
            {
                i=data[b];
                data[b]=data[b+1];
                data[b+1]=i;
            }
        }
    }