先介绍一下怎么使用数组读取一组数字:

在C语言中,使用数组读取一组数字非常简单。首先,您需要定义一个数组来存储这组数字。数组是一个有序的数据集合,可以保存多个相同类型的元素。

假设你希望读取的数字组成一个整数数组,可以按照以下步骤进行操作:

  1. 首先,在程序开始的地方,声明一个整数类型的数组。例如,可以使用以下语法声明一个名为numbers的整型数组,用来存储10个数字:
int ar[10];

这将创建一个名为arr的数组,其大小为10个整数。

  1. 接下来,您可以使用循环语句(如for循环)来逐个读取用户输入的数字并存储到数组中。例如,以下代码段将依次读取用户输入的10个数字,并将它们存储到arr数组中:
for (int i = 0; i < 10; i++) {
    printf("请输入第 %d 个数字:", i + 1);
    scanf("%d", &arr[i]);
}

在每次循环中,程序会提示用户输入一个数字,并使用scanf函数将输入的数字存储到数组中的相应位置。

  1. 当用户输入完所有数字后,数组arr中就存储了这组数字。你可以根据需要对这些数字进行进一步的处理。

接下来介绍一下什么是冒泡排序:

冒泡排序是一种简单但有效的排序算法,在计算机科学中被广泛应用。它的原理很简单,通过相邻元素的比较和交换来实现排序。冒泡排序的名称源自于元素像冒泡一样移动到正确的位置

下面让我以通俗易懂的方式来解释一下冒泡排序的过程:

假设我们有一个包含 n 个元素的数组,我们要按照从小到大的顺序对它进行排序。冒泡排序会重复执行以下步骤:

  1. 从数组的第一个元素开始,依次比较相邻的两个元素。如果前一个元素大于后一个元素,则交换它们的位置。
  2. 继续向下扫描数组,重复执行第一步,直到达到倒数第二个元素为止。这样,第一次扫描之后,最大的元素已经被移动到了数组的最后一个位置。
  3. 重复执行上述步骤,但此次不再考虑已排序好的最后一个元素。每次扫描都将最大的元素移动到倒数第二个位置。
  4. 重复执行以上步骤,直到所有元素都排序完毕。

通过不断地交换相邻元素并移动最大的元素到正确的位置,冒泡排序会逐步将整个数组排序好。

到这里就可写程序了:

/*数组排序,*/
#include <stdio.h>

int main(){
	int arr[10], input = 0;				//定义一个数组
	printf("请输入十组数字\n");
	for(int i = 0; i < 10; i++){		//使用for循环读入十组数字
		scanf("%d", &arr[i]);
	}
  //给用户个选择
	printf("\n扣“1”从小到大, 扣“其它”从大到小\n");
	scanf("%d", &input);
  //扣1的话就从小到大排
	if(input == 1){
		printf("从小到大排列为:\n");
		for(int i = 0; i < 10; i ++){		//循环十次,对应读入的十个元素,使每个元素都参与排列
		
		for(int k = 9; k > i; k--){		//从后往前,各个元素进行比较,把最小元素放在最前,以此类推
			int tmp = 0;
			if(arr[k] <= arr[k -1]){		//满足条件前后元素交换位置
				tmp = arr[k];
				arr[k] = arr[k - 1];
				arr[k - 1] = tmp;
			}
			
		}
		printf("%d\t", arr[i]);			//最小元素已经排列在前,所以每个元素排列结束,依次打印即可
	}
	}
  //否则的话就从大到小排
	else{
		printf("从大到小排列为:\n");
		for(int i = 0; i < 10; i ++){		//循环十次,对应读入的十个元素,使每个元素都参与排列
			
			for(int k = 0; k <9 - i; k++){		//从前往后,各个元素进行比较,把最大元素放在最后,以此类推
				int tmp = 0;
				if(arr[k] >= arr[k + 1]){			//满足条件前后元素交换位置
					tmp = arr[k];
					arr[k] = arr[k + 1];
					arr[k + 1] = tmp;
				}
				
			}
			printf("%d\t", arr[9 - i]);			//最大元素已经排列在前,所以每个元素排列结束,依次打印即可
		}
	}
	
	return 0;
}

最后说一下上面代码的一些细节与主要逻辑:

这段程序是用来对输入的10个数字进行排序的。程序首先会要求用户输入这10个数字,然后根据用户的选择,进行从小到大或从大到小的排序。

程序的主要逻辑如下:

  1. 首先,程序声明了一个大小为10的整型数组arr,用来存储用户输入的10个数字。
  2. 接下来,程序通过一个for循环,从用户输入获取这10个数字,并将它们依次存储到数组arr中。
  3. 紧接着,程序要求用户输入一个数字input。如果用户输入的是1,则程序将进行从小到大的排序;如果用户输入的是其他数字,则程序将进行从大到小的排序。
  4. 如果用户选择从小到大排序,程序将进入相应的逻辑。程序使用两个嵌套的for循环,外层循环用来控制每一轮的比较次数,内层循环用来逐个比较相邻的两个元素,因为每次外层循环结束,都会有一个元素被排到指定位置,所以只比较剩下的元素即可,如k < 9 - i确保我们在每一轮排序中只比较尚未排列的元素。随着每一轮排序的进行,已经排列好的元素会逐渐移到数组的后面,所以我们在新的一轮排序中不需要再考虑它们。通过不断地交换元素的位置,将最小的元素逐渐移动到数组的前面。
  5. 类似地,如果用户选择从大到小排序,程序将进入另一段逻辑。程序也是使用两个嵌套的for循环,但这次是通过不断地交换元素的位置,将最大的元素逐渐移动到数组的后面。
  6. 最后,程序将按照用户选择的排序方式,依次打印出排序后的数组元素。

至此,整个程序的功能就解释完毕了!通过以上的排序算法,用户可以方便地对输入的数字进行从小到大或从大到小的排序。