
| 
 | 
|  | 作者: none [onizuka]  论坛用户 | 登录 | 
| void Func(int A[],int n)   //数组A中的n个元素全部为整数类型 { int i=0,j=n-1; while(i<j) { while(A[i]<0)i++; while(A[j]>=0)j++; if(i<j) Swap(A[i],A[j]); //将数组中A的第i个元素和第j个元素对调 else return; i++;j++; } } | 
| 地主 发表时间: 04-08-31 08:31 | 
|  | 回复: 286 [unique]  版主 | 登录 | 
| while(A[j]>=0)j++; 这句将导致j访问数组越界,因此将产生无法意料的结果。 if(i<j) Swap(A[i],A[j]); //将数组中A的第i个元素和第j个元素对调 else return; 如果i<j则交换,否则退出循环,但事实上,就是没有else,也将退出循环,因此这话是多余的。 整个程序的功能好象是:把后面的负数与前面的正数进行交换。 如果改成: void Func(int A[],int n) //数组A中的n个元素全部为整数类型 { int i=0,j=n-1; while(i<j) { while(A[i]<0)i++; while(A[j]>=0)j--; if(i<j) Swap(A[i],A[j]); //将数组中A的第i个元素和第j个元素对调 i++;j--; } } 则程序变成,数组A中,把负数放前面,把正数放后面。 | 
| B1层 发表时间: 04-08-31 09:38 | 
|  | 回复: none [onizuka]  论坛用户 | 登录 | 
| Thanks a lot | 
| B2层 发表时间: 04-08-31 10:45 | 
| 
 | 
20CN网络安全小组版权所有
Copyright ©    2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon   

粤ICP备05087286号