这题考察的是读者对于数组的基础能力,考点为数组的下标理解和选择排序,难度为:1颗星
1 #include<stdio.h>
2 int main()
3 {
4 int i; // i 作为数组的下标
5 int j; // j 作为找到最小值的下标
6 int k; // k 用以存放此次循环中的最小值下标
7 int temp; // temp 作为中间变量
8 int arry[10]; // 申请10个数组内存
9 int op; // op作为输入数的大小
10
11 // 提示用户输入数组的大小
12 printf("please input less than 10 integer:");
13 scanf_s("%d", &op);
14
15 // 通过循环赋值
16 for (i = 0; i < op; i++)
17 {
18 printf("please input %d integer:", i + 1);
19 scanf_s("%d", &arry[i]);
20 }
21
22 // 选择排序法
23 for (i = 0; i < op; i++)
24 {
25 k = i; //假设此次循环中最小值为当前值
26 for (j = i + 1; j < op; j++)
27 {
28 if (arry[j] < arry[k]) //假设当前的最小值与后值比较
29 {
30 k = j; //若后值小,则交换下标
31 }
32 }
33
34 if (k != i) //比较后,若此次循环中最小值并非当前值
35 {
36 temp = arry[i]; // 将此次循环中的最小值与 arry[k] 交换
37 arry[i] = arry[k];
38 arry[k] = temp;
39 }
40 }
41
42 // 输出
43 for (i = 0; i < op; i++)
44 {
45 printf("%d ", arry[i]);
46 }
47 }
输出为:
