c - 如何在 C 中反转 int 数组?
问题描述
我正在尝试反转数组。
#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
当我编译这段代码时,我在数组 [0] 位置得到 3 我的错误是什么?
解决方案
您正在读取和写入同一个数组,因此某些写入会破坏尚未读取的数据。
反转的典型方法是交换前半部分和后半部分的元素。
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]);
}
}
推荐阅读
- sql - SQL 根据具有不同条件的两行选择结果
- java - 在两个线程之间使用 LinkedBlockingQueue 是否意味着我们不需要同步它们对共享数据的访问?
- python - 如何从python pyqt中的不同类调用函数
- java - 在 Java 中调用类中的方法
- c++ - 每个包含 3 个元素的数组中最近点的索引
- python - Python:如何读取 csv 并循环清理数据
- json - 在Java中有效地分组和创建Json
- android - 如何在 Android Java 中使用 onclicklistener 获取按钮文本?
- python - 如何用“”替换“,”?如何删除值中的逗号?
- python-3.x - TypeError:“float”对象不能解释为整数:有办法吗?