#include<stdio.h>
void main()
{
int a[3]={3,5,6};
int i,j,k;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(a[j]<a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
printf("排序后:");
for(j=1;j<4;j++)
printf("%4d",a[j]);
while(1);
}
输出结果为: 5 3-858993460
(输出结果不知道怎么发不了图片,所以我打出来了)
数组长度为3,循环1到3,都数组越界了呀
#include<stdio.h>
int main()
{
int a[3]={3,5,6};
int i,j,k;
for(i=0;i<3;i++)
for(j=0;j<3-i-1;j++)
if(a[j]<a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
printf("排序后:");
for(j=0;j<3;j++)
printf("%4d",a[j]);
return 0;
}
for(j=0;j<3;j++)
改为
for(j=0;j<2-i;j++)
最后输出的for循环为for(j=0;j<3;j++)
内循环j==2的时候j+1越界了