如何使用 For 循环和函数编写 C 语言程序,将数组按降序排序,并附带示例。
C 语言数组降序排序程序
此程序允许用户输入一维数组的大小和元素。接下来,在此程序中,我们使用嵌套 For 循环将数组元素按降序排序,并打印其中的所有元素。
#include <stdio.h>
int main()
{
int Array[50], i, j, temp, Size;
printf("\nPlease Enter the Number of elements in an array : ");
scanf("%d", &Size);
printf("\nPlease Enter %d elements of an Array \n", Size);
for (i = 0; i < Size; i++)
{
scanf("%d", &Array[i]);
}
for (i = 0; i < Size; i++)
{
for (j = i + 1; j < Size; j++)
{
if(Array[i] < Array[j])
{
temp = Array[i];
Array[i] = Array[j];
Array[j] = temp;
}
}
}
printf("\n **** Array of Elemenst in Descending Order are : ****\n");
for (i = 0; i < Size; i++)
{
printf("%d\t", Array[i]);
}
return 0;
}

在此,For 循环 将确保数字介于 0 和一维数组的最大大小值之间。在此示例中,它将是从 0 到 4。
for (i = 0; i < Size; i++)
{
for (j = i + 1; j < Size; j++)
{
if(Array[i] < Array[j])
{
temp = Array[i];
Array[i] = Array[j];
Array[j] = temp;
}
}
}
在此数组降序排序程序示例中,
第一个 For 循环 - 第一次迭代: for(i = 0; 0 < 5; 0++)
条件为 True,因此它将进入第二个 for 循环。
第二个 For 循环 - 第一次迭代: for(j = 0 + 1; 1 < 5; 1++)
For 循环内的条件为 True,因此编译器将进入If 语句。
if(Array[0] < Array[1]) = if(25 < 86) – 这意味着条件为 True。
temp = 25
Array[i] = 86
Array[j] = 25
现在数组将是 86 25 95 14 56。接下来,j 将增加 1。
第二个 For 循环 - 第二次迭代: for(j = 2; 2 < 5; 2++)
For 循环内的条件为 True。因此,C 语言编程编译器将进入 If 语句:if(Array[0] < Array[2])
if(86 < 95) – 这意味着条件为 True。
temp = 86
Array[i] = 95
Array[j] = 86
现在数组将是 95 25 86 14 56。接下来,j 将增加 1。
第二个 For 循环 - 第三次迭代: for(j = 3; 3 < 5; 3++)
For 循环内的条件为 True。
if(Array[0] < Array[3]) => if(95 < 14) – 这意味着条件为 False,因此它将退出 If 块,j 值将增加 1。
第二个 For 循环 - 第四次迭代: for(j = 4; 4 < 4; 4++)
For 循环内的条件为 True。
if(Array[0] < Array[4]) => if(95 < 56) – 这意味着条件为 False,因此它将退出 If 块,j 值增加 1。
C 语言数组降序排序程序中的第二个 For 循环 - 第五次迭代:for(j = 5; 5 < 5; 5++)
For 循环内的条件为 False。因此,编译器将退出 For 循环。接下来,i 值将增加 1。
第一个 For 循环 - 第二次迭代: for(i = 1; 1 < 5; 1++)
条件为 True,因此它将进入第二个 for 循环。
第二个 For 循环 - 第一次迭代: for(j = 1 + 1; 2 < 5; 2++)
For 循环内的条件为 True。
if(Array[1] < Array[2]) => if(25 < 86) – 这意味着条件为 True。
temp = 25
Array[i] = 86
Array[j] = 25
现在数组将是 95 86 25 14 56。接下来,j 将增加 1。
第二个 For 循环 - 第二次迭代: for(j = 3; 3 < 5; 3++)
For 循环内的条件为 True。因此,编译器将进入 If 语句:if(Array[1] < Array[3])
if(86 < 14) – 这意味着条件为 False,因此它将退出 If 块和第二个 For 循环。
对剩余的迭代执行相同的操作。
使用函数对 C 语言数组进行降序排序
此程序 用于对数组进行降序排序,与第一个示例相同。但是,我们使用函数 分离了对数组元素进行降序排序的逻辑。
#include <stdio.h>
int *Sort_ArrayDesc(int arr[], int Size);
int main()
{
int Array[50], i, j, Size;
int *arr;
printf("\nPlease Enter the Number of elements in an array : ");
scanf("%d", &Size);
printf("\nPlease Enter %d elements of an Array \n", Size);
for (i = 0; i < Size; i++)
{
scanf("%d", &Array[i]);
}
arr = Sort_ArrayDesc(Array, Size);
printf("\n **** Array of Elemenst in Descending Order are : ****\n");
for (i = 0; i < Size; i++)
{
printf(" Element at Array[%d] = %d \n", i, arr[i]);
}
return 0;
}
int *Sort_ArrayDesc(int arr[], int Size)
{
int i, j, temp;
for (i = 0; i < Size; i++)
{
for (j = i + 1; j < Size; j++)
{
if(arr[i] < arr[j])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
以上示例的输出。
Please Enter the Number of elements in an array : 6
Please Enter 6 elements of an Array
25 89 63 48 105 56
**** Array of Elemenst in Descending Order are : ****
Element at Array[0] = 105
Element at Array[1] = 89
Element at Array[2] = 63
Element at Array[3] = 56
Element at Array[4] = 48
Element at Array[5] = 25