PTA-交換最小值和最大值
阿新 • • 發佈:2019-01-10
交換最小值和最大值(10 分)
本題要求編寫程式,先將輸入的一系列整數中的最小值與第一個數交換,然後將最大值與最後一個數交換,最後輸出交換後的序列。
注意:題目保證最大和最小值都是唯一的。
輸入格式:
輸入在第一行中給出一個正整數N(≤10),第二行給出N個整數,數字間以空格分隔。
輸出格式:
在一行中順序輸出交換後的序列,每個整數後跟一個空格。
輸入樣例:
5
8 2 5 1 4
輸出樣例:
1 2 5 4 8
#include <stdio.h> int main(void) { int n, max, min, i, j, t; int p, q; int a[10]; scanf ("%d", &n); for (i = 0; i < n; ++i) { scanf("%d", a + i);//輸入序列 } min = a[0];//求最小值 for (i = 1; i < n; ++i) { if (a[i] < min){ min = a[i]; q = i;
//需注意 } } if (min != a[0]) { t = a[0]; a[0] = a[q];//將最小值與第一個數交換 a[q] = t; } max = a[0];//求最大值 for (j = 1; j < n; ++j) { if (a[j] > max){ max = a[j]; p = j;//需注意 } } if (max != a[n - 1]){ t = a[n - 1]; a[n - 1] = a[p];//將最大值與最後一個數交換 a[p] = t; } for (i = 0; i < n; ++i) { printf ("%d ", a[i]);//輸出排序後的序列 } return 0; }