输入 10 个整数用选择排序法将它们按照升序排列好
原理说明:把一个数组从小到大排列,不停的扫描整个数组,第一次扫描把最小的数找出来并放在第一位,第二次扫描,把其余的数中最小的数找到放在第二位,以此类推,这样经过N-1次扫描之后就可以把N个数的顺序排列好了
#define A 10
#include <stdio.h>
int main()
{
int a[A],i,j,k,t;
for(i=0;i<A;i++)
scanf("%d",&a[i]);
for(j=0;j<A-1;j++)
{for(k=0;k<A-j;k++)
if(a[k]>a[k+1]) {t=a[k];a[k]=a[k+1];a[k+1]=t;}}
for(i=0;i<A;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
这段代码我在VC++6.0运行没问题,但是提交到学校网站编译结果是:
main.c:10:Bounds error: array reference (10) outside bounds of the array.
main.c:10: Pointer value: 0xbf946218
main.c:10: Object `a':
main.c:10: Address in memory: 0xbf9461f0 .. 0xbf946217
main.c:10: Size: 40 bytes
main.c:10: Element size: 4 bytes
main.c:10: Number of elements: 10
main.c:10: Created at: main.c, line 5
main.c:10: Storage class: stack