~我看你是要睡着了,比我还糊涂~
j<5
a[j]>=0&&j<5
是不是这样啊
对您的 回答真的很满意 呵呵 果然有人才啊 不过美中不足的一点是 第三个空应该修正一下 a[j]>0&&j<4(注意这里是j<4,写成j<5就错了)
否则 如果要越界出错的 会打印出数组下一个单元的一个不确定的数 呵呵
就象#include <stdio.h>
int main(void)
{
int i=0,j=0,k;
int temp;
int a[5]={-84,-2,8,3,1};
for(k=0;k<5;k++)
printf("%d\n",a[k]);
printf("\n\n");
while(++j<5) {
while(a[i]<=0&&i<4) i++;/*这里最好也加上*/
while(a[j]>0) j++;/*把这句话改成while(a[j]>0&&j<4) j++;就不会错了 */
if(i<j) {
temp=a[i];
a[i]=a[j];
a[j]=temp;}
}
for(k=0;k<5;k++)
printf("%d\n",a[k]);
getchar();
}
编译 运行下试一试 会出错的
[此贴子已经被作者于2007-5-25 13:06:36编辑过]