利用冒泡法处理输入数据的时候无法进行接下来的操作,这是为什么?

#include<stdio.h>
void m(int *p)
{int i,j,t,a[5];
for(i=0;i<=5;i++)
{for(j=0;j<=4;j++)
if(a[j]<a[j+1])
a[j]=t;
a[j+1]=t;
a[j]=a[j+1];}}
void main()
{int i,a[5],*p;
p=a;
printf("input 5 int:\n ");
for(i=0;i<=4;i++)
scanf("%d",a[i]);
for(i=0;i<=4;i++)
{printf("%d\n",a[i]);}
m(a);
for(i=0;i<=4;i++)
{printf("%d",a[i]);}}

img

m中
a[5]内容未知。不需要定义a[5],直接用p
for(i=0;i<=5;i++)
i=5错误

改正如下,修改内容在代码注释


#include<stdio.h>
void m(int* a)
{
    int i, j, t;   //传入的就是数组,不用重新定义
    for (i = 0; i <= 5; i++)
    {
        for (j = 0; j <= 4; j++)
            if (a[j] < a[j + 1])
            {
                t=a[j];   //你的赋值顺序写错了,应该这样写
                a[j] = a[j+1];
                a[j+1] = t;
            }
    }
}
void main()
{
    int i, a[5], * p;
    p = a;
    printf("input 5 int:\n ");
    for (i = 0; i <= 4; i++)
        scanf("%d", &a[i]);  //scanf少写&
    for (i = 0; i <= 4; i++)
    {
        printf("%d\t", a[i]);
    }
    printf("\n");
    m(a);
    for (i = 0; i <= 4; i++)
    {
        printf("%d\t", a[i]);
    }
}