这题考察的是读者对于数组的基础能力,考点为数组的下标和排序,难度为:1颗星
1 #include<stdio.h> 2 int main() 3 { 4 int arry[10]; // 定义一个数组,用于存放 5 int i; // 临时变量,用完遍历 6 int temp; // 临时变量,作为第三方交换值使用 7 int min; // 用于存放最小值 8 int tag; // 用于存放找到的,最小的数的下标,并把它的下标给打上一个 Tag 9 10 // 通过循环将输入的数存放到arrry[]数组内 11 for (i = 0; i < 10; i++) 12 { 13 printf("please input %d integer:", i + 1); 14 scanf_s("%d",&arry[i]); 15 } 16 17 // 找出最小的数和它的下标 18 min = arry[0]; // 假设最小值为第一个数 19 20 // 通过循环遍历 21 for (i = 1; i < 10; i++) // 共有十个数,以第一个数为比较对象,总共比较九次,故比较次数 -1 次 22 { 23 if (arry[i] < min) // 若遍历中的数比前一个数小,则交换位置,并记录下标 24 { 25 min = arry[i]; // 将小的数丢给变量 min 26 tag = i; // 记录下标 27 } 28 } 29 30 // 将最小的数与数组最前面的数交换位置 31 temp = arry[tag]; // 此时,查找已经完成,我们已找到最小数的下标,通过下标直接将最小数丢给 临时变量 temp 32 arry[tag] = arry[0]; // 此时,最小数的位置为空,我们通过第一个元素的下标,将其值丢给 最小数 的坑中 33 arry[0] = temp; // 此时,第一个元素位置为空,我们将临时变量 temp 中存放的最小值丢入第一个元素坑中 34 35 // 遍历输出交换后的结果 36 for (i = 0; i < 10; i++) 37 { 38 printf("%d ",arry[i]); 39 } 40 41 // 输出交换前的数组,最小数和下标 42 printf("\n Tag = %d, Min = %d", tag, temp); 43 }