C 语言反转数组程序

如何使用 While 循环、For 循环、函数和递归编写 C 语言反转数组的程序,附带示例?

使用 While 循环反转数组的 C 语言程序

此程序允许用户输入大小和元素。接下来,此反转数组程序将使用 While 循环反转给定的元素。

#include<stdio.h>
 
int main() 
{
   int a[100], i, j, Size, Temp;
 
   printf("\nPlease Enter the size : ");
   scanf("%d",&Size);
 
   //Inserting elements in to it
   for (i = 0; i < Size; i++) 
   {
      scanf("%d", &a[i]);
   }
 
   j = i - 1;   // Assigning j to Last element
   i = 0;       // Assigning i to first element
 
   while (i < j) 
   {
      Temp = a[i];
      a[i] = a[j];
      a[j] = Temp;
      i++;             
      j--;         
   }
 
   printf("\nResult is: ");
   for (i = 0; i < Size; i++) 
   {
      printf("%d \t", a[i]);
   }
 
   return 0;
}

使用 while 循环的输出。

Please Enter the size : 6
10 20 30 40 50 60

Result is : 60  50 40 30 20 10

此 C 语言反转数组程序中的以下语句要求用户输入大小,并将用户输入的值赋给 Size 变量。

   printf("\nPlease Enter the size : ");
   scanf("%d",&Size);

下面反转程序中的 For 循环 将帮助迭代 a[5] 数组中的每个单元格。For 循环迭代从 0 开始,for 循环内的条件 (i < Size) 将确保编译器不会超出数组限制。

C 语言 for 循环内的 Scanf 语句将把用户输入的值存储到每个单独的数组元素中,例如 a[0]、a[1]、a[2]、a[3] 和 a[4]

   for (i = 0; i < Size; i++) 
   {
      scanf("%d", &a[i]);
   }

接下来,While 循环内的条件将确保 i 值小于 j。在 while 循环内部,我们借助第三个变量执行了交换

如果您想在不使用临时变量的情况下执行交换,请参阅不使用临时变量的交换文章。

最后,我们使用 for 循环将反转后的数组打印到控制台输出。

   for (i = 0; i < Size; i++) 
   {
      printf("%d \t", a[i]);
   }

使用 For 循环反转数组的 C 语言程序

此程序允许用户输入大小和元素。然后,此程序将使用 For 循环反转给定的元素数组。

#include<stdio.h>
 
int main() 
{
   int a[100], b[100], i, j, Size;
 
   printf("\nPlease Enter the size of an array: ");
   scanf("%d",&Size);
 
   //Inserting elements into the array
   for (i = 0; i < Size; i++) 
   {
      scanf("%d", &a[i]);
   }
 
   for(i = Size-1, j = 0; i >= 0; i--, j++) 
   {
      b[j] = a[i];     
   }
 
   printf("\nResult of an Reverse array is: ");
   for (i = 0; i < Size; i++) 
   {
      printf("%d \t", b[i]);
   }
 
   return 0;
}

分析:在此示例程序中,我们只是用 For 循环替换了反转数组的 while 循环。除此之外,其他都相同。

C Program to Reverse an Array using For Loop

使用函数反转数组的 C 语言程序

此程序允许用户输入大小和元素。接下来,此程序将使用 函数反转给定的元素数组。

#include<stdio.h>
void ArrayReverese(int a[], int Start, int End);
void printArray(int a[], int Size);

int main() 
{
   int a[100], i, Size;
 
   printf("\nPlease Enter the size : ");
   scanf("%d",&Size);
   
   //Inserting elements into the Declared one
   for (i = 0; i < Size; i++) 
   {
      scanf("%d", &a[i]);
   }

    ArrayReverese(a, 0, Size-1);
    printf("\nResult is: \n");
    printArray(a, Size); //Printing  
    return 0;
}

/* Function to Reverse the Given */
void ArrayReverese(int a[], int Start, int End)
{
   int Temp;
   while (Start < End) 
   {
      Temp = a[Start];
      a[Start] = a[End];
      a[End] = Temp;
      Start++;             
      End--;         
   }  
}     

/* Function to print the Output */
void printArray(int a[], int Size)
{
  int i;
  for (i = 0; i < Size; i++) 
   {
      printf("%d ", a[i]);
   }
  printf("\n");
}
Program to Reverse an Array using Functions

当编译器在 main() 程序中遇到 ArrayReverse (a, 0, Size – 1) 这一行时,编译器将立即跳转到下面的函数并执行该函数内的代码。在这里,它会反转数组。

void ArrayReverese(int a[], int Start, int End)

接下来,我们还声明了一个用于打印数组的函数。当编译器在 main() 程序中遇到 printArray (a, Size) 这一行时,编译器将立即跳转到下面的函数并执行该函数内的代码。

void printArray(int a[], int Size)

我们已经在上面的示例中解释了代码或逻辑。

使用递归反转数组的 C 语言程序

此程序允许您输入大小和元素,并使用 递归反转给定的数组。

#include<stdio.h>

void ArrayReverese(int a[], int Start, int End);
void printArray(int a[], int Size);

int main() 
{
   int a[100], i, Size;
   printf("\nPlease Enter the size : ");
   scanf("%d",&Size);
   //Inserting elements
   for (i = 0; i < Size; i++) 
   {
      scanf("%d", &a[i]);
   }
    ArrayReverese(a, 0, Size-1); 
    printf("\nResult is: \n");
    printArray(a, Size); //Printing A
    return 0;
}

/* Function to Reverse */
void ArrayReverese(int a[], int Start, int End)
{
   int Temp;
   if (Start < End)
   {
      Temp = a[Start];
      a[Start] = a[End];
      a[End] = Temp;
      ArrayReverese(a, Start + 1, End - 1);        
   }  
}     

/* Function to print the Output */
void printArray(int a[], int Size)
{
  int i;
  for (i = 0; i < Size; i++) 
   {
      printf("%d ", a[i]);
   }
  printf("\n");
}
Program to Reverse an Array using Recursion

在此反转数组项的程序中,当编译器在 main() 程序中遇到 ArrayReverse (a, 0, Size – 1) 这一行时,编译器将立即跳转到下面的函数并执行该函数内的代码。在这里,它正在反转它。

void ArrayReverese(int a[], int Start, int End)

在此函数中,If 语句将检查起始位置是否小于结束位置。如果条件为 TRUE,则仅执行此 If 块内的语句。

在 If 语句内部,我们编写了以下语句来使用更新后的值递归调用该函数。如果您在此程序中遗漏了此语句,那么在完成第一行后,它将终止。

ArrayReverese(a, Start + 1, End - 1);

接下来,我们还声明了一个用于打印项的函数。当编译器在 main() 程序中遇到 printArray (a, Size) 这一行时,编译器将立即跳转到下面的函数并执行该函数内的代码。

void printArray(int a[], int Size)

我们已经在上面的示例中解释了反转数组的代码或逻辑。

评论已关闭。