问题 A: C语言-数字交换
时间限制: 1 Sec 内存限制: 128 MB
提交: 378 解决: 124
[提交][状态][讨论版][命题人:外部导入]
题目描述
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。
输入
10个整数
输出
整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)
样例输入
2 1 3 4 5 6 7 8 10 9
样例输出
1 2 3 4 5 6 7 8 9 10
自己代码:
#include<iostream>
#include<set>
#include<queue>
using namespace std;
int a[10];
void shuru() {
for (int i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
}
void deal() {
set<int> st;
//利用set的自动去重以及排序功能
for (int i = 0; i < 10; i++) {
st.insert(a[i]);
}
queue<int> que;
for (set<int>::iterator it = st.begin(); it != st.end(); it++) {
que.push(*it);
}
int min = que.front();
int max = que.back();
for (int i = 0; i < 10; i++) {
if (a[i] == min) {
int temp;
temp = a[0];
a[0] = min;
a[i] = temp;
break;
}
}
for (int i = 0; i < 10; i++) {
if (a[i] == max) {
int temp;
temp = a[9];
a[9] = max;
a[i] =temp;
break;
}
}
}
void print() {
for (int i = 0; i < 10; i++) {
printf("%d ", a[i]);
}
}
int main()
{
shuru();
deal();
print();
system("pause");
return 0;
}