// 函数用起泡法对输入的10个整数按由小到大的顺序排列
#include <stdio.h>
// 该函数接受一个整型数组x[] 作为参数。它用两层嵌套循环实现冒泡排序,外层循环控制遍历的轮数,内层循环用于实际的比较和交换两个相邻的元素。如果发现顺序错误(即x[i] > x[i + 1]),则通过中间变量t交换这两个元素的位置。这个过程会持续直到数组完全排序。
int paixu(int x[])
{
int i, j, t;
for (j = 1; j < 10; j++)
for (i = 0; i <= 9 - j; i++)
if (x[i] > x[i + 1])
{
t = x[i + 1]; //将x[i + 1]的值暂存到变量t中。
x[i + 1] = x[i]; //将x[i]的值赋给x[i + 1],这样x[i + 1]就存放了较大的值
x[i] = t; //将暂存的较小的值(原x[i + 1]的值,现存储于t中)赋给x[i]
}
}
//**函数main**:这是程序的入口点。首先,它声明了一个整型数组y[10]用于存放用户输入的10个整数。通过一个for循环,程序使用scanf函数读取用户输入的10个整数并存储在数组y中。然后,调用paixu函数对这些数进行排序。最后,再次使用一个for循环和printf函数,按排序后的顺序输出这10个整数。
int main()
{
int y[10];
int i;
for (i = 0; i < 10; i++)
scanf("%d", &y[i]); // 在C语言中,使用&操作符获取变量的地址。因为scanf需要知道在内存中的哪个位置存放读入的值,所以必须传递变量的地址而不是变量的值。这里,&y[i]表示数组y中第i个元素的地址。
paixu(y);
for (i = 0; i < 10; i++)
printf("%5d", y[i]); // 用于格式化输出数组y的元素。其中,%5d指示printf以十进制整数的形式输出y[i]的值,并且为这个值分配至少5个字符的宽度。如果y[i]的值占用的字符数少于5个,输出将通过在前面添加空格来对齐,确保每个值占用的空间都是相同的。这样做的目的是为了使输出整齐、易于阅读。
printf("\n");
// 用于在输出完数组的所有元素后换行。没有这个语句,所有的输出会连续显示在一行上,可能会让人难以阅读。通过添加换行符\n,可以在输出每个数组之后将光标移动到下一行,从而使输出结果更加清晰。
return 0;
}