数组排序调换输出
#include <stdio.h>int main()
{
int i,j;
int a={11,22,33,44,56,67,78,98,93,100};
int *p=a;
for(i=0,j=9;i<10;i++,j--)
{
*(p+j)=*(a+i);
}
for(i=0;i<10;i++)
{
printf("%d\n",*(p+i));
}
for(i=0;i<10;i++)
{
printf("%d",*(p+i));
}
return 0;
}
求大佬帮忙求解{:5_109:} 这个程序试图反转一个数组,但是实现有问题。当i和j同步增减时,你会在数组的前半部分进行交换,然后在后半部分又将它们换回来,所以这个数组并没有被反转。你应该只在i < j时交换a]和a 。
这是一个正确的实现方法:
#include <stdio.h>
int main()
{
int i,j;
int a={11,22,33,44,56,67,78,98,93,100};
int temp;
for(i=0,j=9;i<j;i++,j--)
{
// 使用临时变量 temp 进行交换
temp = a;
a = a;
a = temp;
}
for(i=0;i<10;i++)
{
printf("%d\n", a);
}
return 0;
}
在这个新的程序中, i和j从数组的两端开始,并向中心移动,只在i < j时交换元素,以确保每对元素只交换一次。 能不能用指针
{:10_266:}{:10_266:}{:10_266:}
页:
[1]