~我看你是要睡着了,比我还糊涂~

对您的 回答真的很满意 呵呵 果然有人才啊 不过美中不足的一点是 第三个空应该修正一下 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编辑过]
[此贴子已经被作者于2007-5-25 13:19:06编辑过]
int main(void)
{
int i=0,j=0;
int temp;
int a[5]={1,2,-3,3,-1};
while(i<2) {
while(a[i]<=0) i++;
while(a[j]>0) j++;
if(i<j) {
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
针对这条题目这个可以呢
int main(void)
{
int i=0,j=0;
int temp;
int a[5]={1,2,-3,3,-1}; -3,2,1,3,-1
while(j<5) { -3,-1,1,3,2
while(a[i]<=0) i++;
while(a[j]>=0&&j<4) j++;
if(i<j) {
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
考试真变态,,,,,,,,,,,,,,,