代码在这:
#include<stdio.h>
int main()
{
void sort(int *x,int n);
int i,*p,a[5];
p=a;
printf("please enter 5 numbers:\n");
for(i=0;i<5;i++)
{
scanf("%d",p++);
}
p=a;
sort(p,5);
for(p=a,i=0;i<5;i++)
{
printf("%5d",*p);
p++;
}
putchar("\n");
return 0;
}
void sort(int *x,int n)
{
int i,j,flag,temp;
for(i=0;i<5;i++)
{
flag=i;
for(j=i+1;j<n;j++)
{
if(x[flag]<x[j])
flag=j;
}
temp=x[flag];
x[flag]=x[i];
x[i]=temp;
}
}
把
putchar("\n");
改成:
putchar('\n');
试一下,我这边gcc这个报错了,putchar用于输出字符
排序函数 sort 中,可能存在数组访问越界的情况:当 i 等于 4时,j等于 i 加一,为5。这样就越界了!输出不知道会是什么,有乱码就正常。
的确正如楼上所说,sort()函数之中存在访问越界的情况。当i取4,j相应取5,x[5]不是数组x的元素了。将i<n改作i<n-1即可