我一直在尝试编写一个名为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]);
}
答案 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);
}