【问题标题】:Reverse order through pointer通过指针倒序
【发布时间】:2015-01-15 06:48:52
【问题描述】:

我似乎无法解决我的教授给我的这个练习。所以我想在这个练习中使用指针来反转原始数组的顺序。

这是我到目前为止所做的。

#include <stdio.h>
#define SIZE 10

void reverse(int *a, int size);

int main(void){
    int array[SIZE]={1,2,3,4,5,6,7,8,9,10};
    int i;

    printf("The original order is:\n");

    for (i=0; i<SIZE; i++){
        printf("%5d", array[i]);
    }

    reverse(array, SIZE);

    printf("\nThe reverse order is:\n");

    for (i=0; i<SIZE; i++){
        printf("%5d", array[i]);
    }

    return 0;
}

void reverse(int *a, int size){
    int j;
    int hold;

    for(j=0; j<size-1; j++){
        hold = a[j];
        a[j] = a[size-1-j];
        a[size-1-j] = hold;
    }
}

【问题讨论】:

标签: c


【解决方案1】:

reverse 函数中,您确实交换了值,但又将它们交换回来!

试试这个:

void reverse(int *a, int size){
    int j;
    int hold;

    for(j=0; j<size/2; j++){
        hold = a[j];
        a[j] = a[size-1-j];
        a[size-1-j] = hold;
    }
}

【讨论】:

    【解决方案2】:

    从 0..N 运行算法会将第一个元素 0 与 N 交换,然后将元素 N 与元素 0 交换。要修复它,请使用

    for (j=0; j<size/2; j++)
    

    【讨论】:

      猜你喜欢
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 2015-03-28
      • 2020-04-19
      • 2012-02-25
      • 2018-08-13
      相关资源
      最近更新 更多