#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]);}}
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]);
}
}