输入10个整数

输入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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注