我是c的初学者。我不知道如何使用数组作为函数参数,参数或如何从函数返回数组。据我所知,下面的代码应该可以正常工作。但我无法解决问题所在。该功能无法正常工作。
//reversing an array using function
#include<stdio.h>
void rev(int array[],int length)
{
int k,j,temp;
for(k=length-1,j=0;k>=0&&j<length;k--,j++){
temp=array[k];
array[k]=array[j];
array[j]=temp;
}
}
int main()
{
int c,arr[]={1,2,3,4,5,6,7,8,9};
rev(arr,9);
for(c=0;c<9;c++){
printf("%d ",arr[c]);
}
return 0;
}
答案 0 :(得分:3)
你只需要直到数组的中间,如果你去更多,你重新反转数组:
所以这个:
for(k=length-1,j=0;k>=0&&j<length;k--,j++){
应该是:
for(k=length-1,j=0;k > j;k--,j++){
答案 1 :(得分:0)
在我看来,你正在执行两次反向。
也就是说,您可以立即交换开始和结束元素,并在迭代结束时再次交换它们。即你最终得到相同的数组。
你可以:
答案 2 :(得分:0)
数组没问题。你的算法有问题。 //使用函数
反转数组#include<stdio.h>
void rev(int array[],int length)
{
int k,j,temp;
for(k=length-1,j=0;k>=0 && j<length / 2; k--,j++){
temp=array[k];
array[k]=array[j];
array[j]=temp;
}
}
这个反向数组。你的算法反转了两次。所以只需添加/ 2 in条件。