我的输出的第一个元素是错误的,我想写一个以数组为输入并反转它的C函数
我想写一个C函数,它接受数组作为输入并反转它,但是输出的第一个元素是错误的,所以我想了解这个问题输出的分析。例如,如果我输入我的输出的第一个元素是错误的,我想写一个以数组为输入并反转它的C函数,c,arrays,C,Arrays,我想写一个C函数,它接受数组作为输入并反转它,但是输出的第一个元素是错误的,所以我想了解这个问题输出的分析。例如,如果我输入[34 3 2 1 12]则输出为[32766 12 1 2 3] #include <stdio.h> void reverse_array(int arr[],int n); #define size 5 int main() { int i=0; int arr[size]; //scan array from user print
[34 3 2 1 12]
则输出为[32766 12 1 2 3]
#include <stdio.h>
void reverse_array(int arr[],int n);
#define size 5
int main()
{
int i=0;
int arr[size];
//scan array from user
printf("please enter elements of array:\n");
for(i=0;i<size;i++)
{
scanf("%d",&arr[i]);
}
//call fun
printf("the reverse array is :");
reverse_array(arr,size);
}
//define function
void reverse_array(int arr[], int n)
{
int i=n;
for(i<=n;i>0;i--)
{
printf("%d\t",arr[i]);
}
}
#包括
无效反向数组(int-arr[],int-n);
#定义尺寸5
int main()
{
int i=0;
int arr[尺寸];
//从用户扫描阵列
printf(“请输入数组的元素:\n”);
对于(i=0;i您“仅”打印数组元素,而您可能希望实际反转数组中的顺序
经典的方式是这样的:
void reverse_array(int arr[], int n)
{
for(int i = 0; i < n / 2; ++i)
{
const int j = (n - 1) - i;
const int k = arr[j];
arr[j] = arr[i];
arr[i] = k;
}
}
void reverse_数组(int arr[],int n)
{
对于(int i=0;i
这将通过交换元素来反转阵列的位置。此循环
for(i<=n;i>0;i--)
{
printf("%d\t",arr[i]);
}
请注意,您只需反向打印它,如果这是您需要的,那很好,如果您需要保存它,您需要做更多的工作。我认为您正在尝试这样做
void reverse_array(int arr[], int n)
{
int i;
for(i=n-1;i>=0;i--) //i=n-1 i.e 4, it runs 4,3,2,1,0
{
printf("%d\t",arr[i]);
}
}
有两个问题
第一个是i的初始化应该是int i=n-1;而不是int i=n;因为arr[n]不存在
其次,for循环应该循环到i>=0,而不是i>0,因为如果迭代只工作到i>0,则不会打印arr[0]
#包括
无效反向数组(int-arr[],int-n);
#定义尺寸5
int main()
{
int i=0;
int arr[尺寸];
//从用户扫描阵列
printf(“请输入数组的元素:\n”);
对于(i=0;i=0;i--)
{
printf(“%d\t”,arr[i]);
}
}
如果aray的大小为n
那么它的最后一个元素索引是n-1
。而且你的for
也很奇怪。第一部分iyou访问的是arr[5],它不存在,但32766意味着我打印的arr[5]没有在我的代码中定义,所以它应该是arr[n-1]@sarahamdy,它打印的是arr[5]
,你说i=n
,也就是5,然后在递减之前打印它,注意在我的修正中i
在打印节点之前递减,因此打印arr[5-1]
@sarahamdy,还要注意for循环中的第一个字段i
void reverse_array(int arr[], int n)
{
int i;
for(i=n-1;i>=0;i--) //i=n-1 i.e 4, it runs 4,3,2,1,0
{
printf("%d\t",arr[i]);
}
}
#include <stdio.h>
void reverse_array(int arr[],int n);
#define size 5
int main()
{
int i=0;
int arr[size];
//scan array from user
printf("please enter elements of array:\n");
for(i=0;i<size;i++)
{
scanf("%d",&arr[i]);
}
//call fun
printf("the reverse array is :");
reverse_array(arr,size);
}
//define function
void reverse_array(int arr[], int n)
{
int i;
for(i=n-1;i>=0;i--)
{
printf("%d\t",arr[i]);
}
}