输入10个整数
时间: 1ms 内存:128M
描述:
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。
输入:
10个整数
输出:
整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)
示例输入:
2 1 3 4 5 6 7 8 10 9
示例输出:
1 2 3 4 5 6 7 8 9 10
提示:
参考答案(内存最优[752]):
#include<stdio.h>
void input(int a[],int n)
{
int i;
for(i=0; i<n; i++)
scanf("%d",&a[i]);
}
void output(int a[],int n)
{
int i;
for(i=0; i<n; i++)
printf("%d ",a[i]);
}
void handle(int a[],int n)
{
int i,min,max,t;
min=0;
max=0;
for(i=1; i<10; i++)
{
if(a[i]<a[min])
min=i;
if(a[i]>a[max])
max=i;
}
if (min!=0)
t=a[0],a[0]=a[min],a[min]=t;
if (max==0) max=min; /*注意最大值的位置改变了*/
if (max!=9)
t=a[9],a[9]=a[max],a[max]=t;
}
int main()
{
const int n=10;
int a[n];
input(a,n);
handle(a,n);
output(a,n);
return 0;
}
参考答案(时间最优[0]):
#include <stdio.h>
void mv(int *p,int n,int m)
{
int *h, t,i;
h=p+n-m-1;
for(;h>=p;h--)
{
for(i=0;i<m;i++)
{
t=*(h+i);
*(h+i)=*(h+i+1);
*(h+i+1)=t;
}
}
}
int main()
{
int a[80];
int m,i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&m);
mv(a,n,m);
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。