1159: 最大的两个数(指针专题)

来源:互联网 发布:软件激活码拿码平台 编辑:程序博客网 时间:2024/06/09 07:37

Description

求n个整数中的最大的两个元素。要求定义一个函数LargestTow(),求数组a的最大的两个元素,分别存入形参指针pfirst和psecond所指存储单元,函数原型如下:

void LargestTow(int a[],int n,int *pfirst,int *psecond) 

/*数组a有n个元素,将数组中的最大值存入形参指针pfirst所指内存单元,将数组中第二大的值存入形参指针psecond所指内存单元。 */
}

Input

输入有两行,输入第一行是一个整数n,1<n<=1000;第二行是n个整数,由空格隔开。

Output

输出两个整数,表示数组中最大的两个值。输出占一行。

Sample Input

56 3 4 9 8

Sample Output

9 8

HINT

Source

#include <stdio.h>#include <stdlib.h>/*数组a有n个元素,将数组中的最大值存入形参指针pfirst所指内存单元,将数组中第二大的值存入形参指针psecond所指内存单元。 */void LargestTow(int a[],int n,int *pfirst,int *psecond);void swap( int *pa, int *pb);int main(){    int n,i;    int a[1005];    int *p1=0,*p2=0;    scanf("%d",&n);    for(i=0; i<n; i++)        scanf("%d",&a[i]);    LargestTow(a,n,p1,p2);    return 0;}void LargestTow(int a[],int n,int *pfirst,int *psecond){    int i,j;    for(i=0; i<n; i++)    {        for(j=i+1; j<n; j++)        {            if(a[i]<a[j])                swap(&a[i],&a[j]);        }    }    pfirst=&a[0];    psecond=&a[1];    printf("%d %d\n",*pfirst,*psecond);}void swap( int *pa, int *pb){    int t;    t=*pa;    *pa=*pb;    *pb=t;}