|
|
发表于 2023-5-22 20:41:12
|
显示全部楼层
本楼为最佳答案
[b]这个程序试图反转一个数组,但是实现有问题。当 i 和 j 同步增减时,你会在数组的前半部分进行交换,然后在后半部分又将它们换回来,所以这个数组并没有被反转。你应该只在 i < j 时交换 a[i] 和 a[j] 。
这是一个正确的实现方法:
- #include <stdio.h>
- int main()
- {
- int i,j;
- int a[10]={11,22,33,44,56,67,78,98,93,100};
- int temp;
- for(i=0,j=9;i<j;i++,j--)
- {
- // 使用临时变量 temp 进行交换
- temp = a[i];
- a[i] = a[j];
- a[j] = temp;
- }
- for(i=0;i<10;i++)
- {
- printf("%d\n", a[i]);
- }
- return 0;
- }
复制代码
在这个新的程序中, i 和 j 从数组的两端开始,并向中心移动,只在 i < j 时交换元素,以确保每对元素只交换一次。[/b] |
|