如何编写一个C语言程序,使用for循环和函数对数组进行升序排序,并附带示例。
使用for循环对数组进行升序排序的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 Ascending Order are : ****\n");
for (i = 0; i < Size; i++)
{
printf("%d\t", Array[i]);
}
return 0;
}

在此升序数组排序程序中,For循环将确保数字介于0和最大大小值之间。在此示例中,它将从0到3。
让我按迭代次数向您展示程序中的嵌套For循环。
第一个For循环 – 第一次迭代:for(i = 0; 0 < 4; 0++)
条件为True,因此它将进入第二个for循环。
第二个For循环 – 第一次迭代:for(j = 0 + 1; 1 < 4; 1++)
For循环内的条件为True,因此编译器将进入If语句。
if(19 > 25)
这意味着条件为False,因此它将退出If块,j值将增加1。
第二个For循环 – 第二次迭代:for(j = 2; 2 < 4; 2++)
For循环内的条件为True。因此,C语言编译器将进入If语句。
if(19 > 4) – 这意味着条件为True。
temp = 19
Array[i] = 4
Array[j] = 19
现在,数组将是4 25 19 21。接下来,j将增加1。
升序数组排序C语言程序的第三次迭代:for(j = 3; 3 < 4; 3++)
For循环内的条件为True,因此编译器将进入If语句:if(Array[0] > Array[3])
if(4 > 21) – 这意味着条件为False。因此,它将退出If块,j值将增加1。
第四次迭代:for(j = 4; 4 < 4; 4++)
其中的条件为False。因此,编译器将退出For循环。接下来,i值增加1。
第一个For循环 – 第二次迭代:for(i = 1; 1 < 4; 1++)
条件为True,因此它将进入第二个for循环。
第二个For循环 – 第一次迭代:for(j = 1 + 1; 2 < 4; 2++)
其中的条件为True,因此编译器将进入If语句。
if(25 > 19) – 这意味着条件为True。
temp = 25
[i] = 19
[j] = 25
现在数组将是4 19 25 21。接下来,j将增加1。
第二个For循环 – 第二次迭代:for(j = 3; 3 < 4; 3++)
其中的条件为True,因此编译器将进入If语句:if(Array[1] > Array[3])
if(19 > 21) – 这意味着条件为False,因此它将退出If块和第二个For循环。
对数组排序程序的其余迭代执行相同的操作。
使用函数对数组进行升序排序的C语言程序
此数组排序程序与第一个示例相同。但是,我们使用函数将升序排序的逻辑分开了。
#include <stdio.h>
int *Sort_ArrayAsc(int arr[], int Size);
int main()
{
int Array[50], i, j, Size;
int *arr;
printf("\nPlease Enter the Number of elements : ");
scanf("%d", &Size);
printf("\nPlease Enter %d elements \n", Size);
for (i = 0; i < Size; i++)
{
scanf("%d", &Array[i]);
}
arr = Sort_ArrayAsc(Array, Size);
printf("\n **** Array of Elements in Ascending Order are : ****\n");
for (i = 0; i < Size; i++)
{
printf("%d \n", i, arr[i]);
}
return 0;
}
int *Sort_ArrayAsc(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 : 5
Please Enter 5 elements
25 89 4 12 15
**** Array of Elements in Ascending Order are : ****
4
12
15
25
89
评论已关闭。