3466 - 习题8-3 数据交换
时间限制 : 1 秒
内存限制 : 12 MB
输入10个整数,将其中最小的数与第一个数交换,把其中最大的数与最后一个数交换。
把交换后的数分行输出,每个数占一行。
用函数和指针实现。
题目输入
以空格分隔的10个整数。
题目输出
分行输出10个整数,每个数占一行。
输入/输出样例
输入格式
1 2 9 4 5 6 7 8 0 3
输出格式
0 2 3 4 5 6 7 8 1 9
C语言解答
#include <stdio.h> int main(void){ int array[10], *x = 0, *y = 0, *z = 0, i = 0, j = 0, max = 0, min = 65536; x = (int*)array; for(i = 0; i< 10; i++) { scanf("%d", &j); j = j>0?j:-j; if (max < j) { max = j; y = x + i; } if (min > j) { min = j; z = x + i; } x[i] = j; } j = *z; *z = *x; *x = j; x += 9; j = *y; *y = *x; *x = j; for(i = 0; i < 10; i++) printf("%d ", array[i]); return 0;}
C++解答
#include <bits/stdc++.h> using namespace std; int a[10]; int input(int *a){ for(int i=0;i<10;i++) cin>>*a++; } void solve(int *a){ int Min=100000000,Max=0; for(int i=0;i<10;i++){ Min=min(a[i],Min); Max=max(a[i],Max); } for(int i=0;i<10;i++){ if(a[i]==Min) swap(a[i],a[0]); if(a[i]==Max) swap(a[i],a[9]); } for(int i=0;i<10;i++) cout<<*a++<<endl; } int main(){ input(a); solve(a); return 0; }