這題考察的是讀者對於數組的基礎能力,考點為數組的下標和排序,難度為: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 }