修改下面冒泡排序程序

要求在主函数中输入10个无序整数存入数组,调用
子函数对数组重新排序,最后在主函数中输出数组中数值,输出结果5个一行显示。
#include <stdio.h>
#define M 10
int main()
{
int x[M];
int i, j;
for (i = 0; i < M; i++)
{
printf("第%d个数:", i + 1);
scanf_s("%d", &x[i]);
}
sort(x[M]);
for (i = 0; i < M; i++)
{
printf("%5d", x[i]);
if ((i + 1) % 5 == 0) putchar('\n');
}
}
int sort(int x[])
{
int i, j, t;
for (i = 1; i < M; i++)
{
for (j = 0; j < M - i; j++)
{
if (x[j] > x[j + 1])
{
t = x[j]; x[j] = x[j + 1]; x[j + 1] = t;
}
}
}
}

我这个代码错在了哪里啊?运行到26行就失败了,求解

sort(x[M]); ===> sort(x);
就可以了 你应该传数组首地址

第十二行改成sort(x);即可。

你应该是使用sort函数时出错了,我给你修改了一下,如果有错误,还请见谅。
#include <stdio.h>
#define M 10
int sort(int x[])
{
int i, j, t;
for (i = 1; i < M; i++)
{
for (j = 0; j < M - i; j++)
{
if (x[j] > x[j + 1])
{
t = x[j];
x[j] = x[j + 1];
x[j + 1] = t;
}
}
}
return 0;
}
int main()
{
int x[M];
int i, j;
for (i = 0; i < M; i++)
{
printf("第%d个数:", (i + 1));
scanf_s("%d", &x[i]);
}
sort(x);
for (i = 0; i < M; i++)
{
printf("%5d", x[i]);
if ((i + 1) % 5 == 0)
printf("\n");
}
return 0;
}