游客 Signup | Login
中文 | En

3466 - 习题8-3 数据交换

输入10个整数,将其中最小的数与第一个数交换,把其中最大的数与最后一个数交换。

把交换后的数分行输出,每个数占一行。

用函数和指针实现。

Input

以空格分隔的10个整数。

Output

分行输出10个整数,每个数占一行。

Examples

Input

1 2 9 4 5 6 7 8 0 3

Output

0
2
3
4
5
6
7
8
1
9

Solution 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;}

Solution 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;
}
Time Limit 1 second
Memory Limit 12 MB
Discuss Stats
上一题 下一题