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

来源:互联网 发布:vscode开发python 编辑:程序博客网 时间:2024/05/17 06:31

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  

#include<iostream>using namespace std;void swap(int *pa,int *pb);void LargestTow(int a[],int n,int *pfirst,int *psecond);int  a1[1001]={0};int   main  (){    int  n;int  i,j;cin>>n;    for ( i=0 ; i<n ; i++ ){     cin>>a1[i];}for ( i=0 ; i<n-1 ; i++ ){     for ( j=i+1 ; j<n ; j++ )      if ( a1[i] < a1[j] )  {  swap(&a1[i],&a1[j]);  }}    LargestTow(a1,n,&a1[0],&a1[1]);return 0;}void LargestTow(int a[],int n,int *pfirst,int *psecond){       cout<<*pfirst<<' '<<*psecond;}void swap(int *pa,int *pb){    int   t;t=*pa;*pa=*pb;*pb=t;}
#include<iostream>#include<cstdio>#include<climits>using namespace std;int a1[1001]={0};void largestTow(int  a[],int n,int *p ,int *ps);int main (){   int n;   int i;   cin>>n;   for ( i=0 ; i<n ; i++ )   {        cin>>a1[i];   }   int x,y;   largestTow(a1,n,&x,&y);   cout<<x<<' '<<y; return 0;}void largestTow(int  a[],int n,int *p ,int *ps){         int i,k; int max1,max2;  max1=max2=INT_MIN;  //定义为最小整数,头文件为limit.h         for ( i=0 ; i<n ; i++ ) {      if ( a[i]>max1 )  {      max2=max1; //当前i,将小的赋给max2  max1=a[i]; //将大的赋给max1  }              else if (a[i]>max2) //比max2大的,赋给它自己  {                  //等到i+1时满足,if不停检索直到找到最大的两个       max2=a[i];  }  *p=max1;  *ps=max2; }}