如何在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处的值时,它将读取新值(而不是旧值)
创建第二个数组来写入反转的值,而不是覆盖它们。这对于使用调试器来说是一个很大的问题。请逐行检查每一行代码,并在每一步观察数组的变化。然后错误就会很明显。