如何使用 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 语言程序
此程序允许用户输入大小和元素。接下来,此程序将使用 函数反转给定的元素数组。
#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");
}

当编译器在 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");
}

在此反转数组项的程序中,当编译器在 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)
我们已经在上面的示例中解释了反转数组的代码或逻辑。
评论已关闭。