反转数组中的元素

时间:2014-05-08 19:35:13

标签: c arrays loops for-loop

我一直在尝试编写一个名为printReverse的void函数,它接受一个名为d的双数组和一个名为n的int作为参数,其中n是d中元素的数量。我希望printReverse以相反的顺序打印n个数组值。这是我到目前为止所做的,但我很难宣布论点。

#include <stdio.h>
int n
double d[n]

void printReverse(d[], double newArray){
int i;
int j;
for (i=0; j=n-1; i<n; i++; j--;){
   newArray[j]=d[i];
}

printf("%lf\n",newArray);
}

我非常感谢你对我做错的任何帮助。

修订:此代码是否有效

void printReverse(double [] d, int n){
    int i;
    for(i=n-1;i>=0;i--){
        printf("%f\n",d[i]);
    }

2 个答案:

答案 0 :(得分:0)

//take pointer to array, and size of array as parameters
void printReverse(double* arr,int size){
    for(int i =0;i<size;i++){
        printf("%f\n",arr[(size-1)-i]);
        //(size-1)-i will compute the proper index of the array to read backwards.
        //remeber arrays are 0 based meaning that the first member in the array is index 0
    }
}

这应该可以解决问题。

编辑:或者如果您尝试将阵列反转为新阵列然后打印...

void printReverse(double* arr,double* arr2,int size){
    for(int i =0;i<size;i++){
        arr2[(size-1)-i]=arr[i];
    }
    for (int i=0; i<size; i++) {
        printf("%f\n",arr2[i]);
    }
}

您需要在调用此函数的代码中使用数组。

所以...

double arr[5] = {1,2,3,4,5};
double arr2[5];

printReverse(arr,arr2, 5);

答案 1 :(得分:0)

如果你想要以相反的顺序打印和存储数组,你可以这样做:

#include <stdio.h>

void printReverse(double *d, double *newArray, int n){
    int i;
    int j;  

    for (i=0, j=n-1; i<n; i++, j--){
        newArray[i]=d[j];
        printf("%lf\n",newArray[i]);
    }   
}

int main(){

    int n = 4;
    double array[] = {1, 2, 3, 4};
    double newArr[n];

    printReverse(array,newArr,n);
}