|
先看代码如下;
#include <stdio.h>
void main()
{
int buf[]={11,5,33,7,1};
int i,j,length,temp;
length=sizeof(buf)/sizeof(int);
printf("排序前:");
for(i=0;i<length;i++)
printf("%d\t",buf);
printf("\n");
for(i=1;i<=length;++i) //排序
if(buf<buf[i-1]){
temp=buf;
for(j=i-1;temp<buf[j];--j)
buf[j+1]=buf[j];
buf[j+1]=temp;
}
printf("排序后:");
for(i=0;i<length;i++)
printf("%d\t",buf);
printf("\n");
}
运行结果为:
排序前:11 5 33 7 1
排序后:4 5 7 11 33
在代码中,int buf[]={11,5,33,7,1};这一行明明是“1”,怎么会出现“4”??
另外我试了如果将最后的元素改成6,8或其他大于等于4的数据都会出现正确的答案,可如果换成1,2,或3,出现的结果都出现4。不知为什么。郁闷中!~~~~
还望各位看看哪里出现错误了! |
|