问题 A: C语言-数字交换
时间限制: 1 Sec 内存限制: 128 MB
提交: 740 解决: 251
[提交][状态][讨论版][命题人:外部导入]
题目描述
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。
输入
10个整数
输出
整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)
样例输入
2 1 3 4 5 6 7 8 10 9
样例输出
1 2 3 4 5 6 7 8 9 10
感觉代码题目应该是要求用queue的相关函数编写,但是不知道怎么表示队列中间的元素,就用了数组。
这个题目有个不是很理解的地方,交换的是位置还是数字。假如最小值min排在最后,min和第一个数字A交换后,最大值应该和原本排在最后的最小值min交换还是和A交换
#include <stdio.h>
#include <queue>
using namespace std;
int Input(int a[])
{
for(int i=0;i<10;i++){
scanf("%d",&a[i]);
}
return *a;
}
int Solve(int a[])
{
int min=a[0];
int max=a[0];
int cnt=0,tmp=0;
for(int i=0;i<10;i++){
if(min>a[i]){
min=a[i];
cnt=i;
}
if(max<a[i]){
max=a[i];
tmp=i;
}
}
a[cnt]=a[0];
a[0]=min;
a[tmp]=a[9];
a[9]=max;
return *a;
}
void Output(int a[])
{
for(int i=0;i<10;i++){
printf("%d ",a[i]);
}
printf("\n");
}
int main()
{
int a[15];
Input(a);
Solve(a);
Output(a);
return 0;
}
感觉自己写的没错,就是通过不了OJ