如何在C中反转int数组?

如何在C中反转int数组?,c,C,我正在尝试反转阵列。 #include<stdio.h> //code to reverse the current array1 void reverse(int array1[]){ int i; int n=3; for (i = 0; i <n; i++) { array1[i]=array1[n-i-1]; printf("%d\t",array1[i]); } } int main(){

我正在尝试反转阵列。

#include<stdio.h>
//code to reverse the current array1
void reverse(int array1[]){
    int i;
    int n=3;
    for  (i = 0; i <n; i++)
    {
        array1[i]=array1[n-i-1];
        printf("%d\t",array1[i]);
    }

}

int main(){
    int array1[]={1,2,3};
     reverse(array1);
}
result 3 2 3
#包括
//用于反转当前阵列1的代码
无效反向(整数数组1[]{
int i;
int n=3;

对于(i=0;i您正在读取和写入同一数组,因此某些写入操作将中断尚未读取的数据

反转的典型方法是交换前半部分和后半部分的元素

void reverse(int array1[]){
    int i;
    int n=3;
    for  (i = 0; i <n; i++)
    {
        if (i < n-i-1) /* avoid swapping the same pair twice */
        {
            int tmp=array1[i];
            array1[i]=array1[n-i-1];
            array1[n-i-1]=tmp;
        }
        printf("%d\t",array1[i]);
    }

}
void反向(int-array1[]{
int i;
int n=3;

for(i=0;i现在无法编写代码

您正在覆盖第一个循环中位置0处的数组值,因此当代码检查位置0处的值时,它将读取新值(而不是旧值)


创建第二个数组来写入反转的值,而不是覆盖它们。

这对于使用调试器来说是一个很大的问题。请逐行检查每一行代码,并在每一步观察数组的变化。然后错误就会很明显。