首页 > 解决方案 > 我的输出的第一个元素是错误的,我想编写一个将数组作为输入并将其反转的 C 函数

问题描述

我想编写一个将数组作为输入并将其反转但输出的第一个元素错误的 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     
 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]);
   }
}

标签: carrays

解决方案


这个循环

for(i<=n;i>0;i--)
{
  printf("%d\t",arr[i]);
}

是不正确的。第一个打印的元素超出了数组的范围,因此调用了未定义的行为,在你的情况下它是 prints 32766,在我的情况下它是 prints 0

尝试:

while(i-- > 0)
{
  printf("%d\t", arr[i]);
}

现场样品

请注意,您只是反向打印它,如果这是您需要的,那很好,如果您需要保存它,您需要做更多的工作。


推荐阅读