/*****
    
    题目描述
    
    求n个整数中的最大的两个元素。要求定义一个函数LargestTow(),求数组a的最大的两个元素,分别存入形参指针pfirst和psecond所指存储单元,函数原型如下:
    
    void LargestTow(int a[],int n,int *pfirst,int *psecond)
    
    {
    
    
    /*数组a有n个元素,将数组中的最大值存入形参指针pfirst所指内存单元,将数组中第二大的值存入形参指针psecond所指内存单元。 */
    
    }
    
    输入
    
    输入有两行,输入第一行是一个整数n,1<n<=1000;第二行是n个整数,由空格隔开。
    
    输出
    
    输出两个整数,表示数组中最大的两个值。输出占一行。
    
    样例输入 Copy
    
    5
    
    6 3 4 9 8
    
    样例输出 Copy
    
    9 8
    
    *****/
    
    
     !!!!!本题采用的思想是 先对数组进行从大到小排序 然后输出前两个数即可
    
   
#include <stdio.h>
#include <stdlib.h>
void LargestTow(int a[],int n,int *pfirst,int *psecond);
int main()
{
    int a[1005];
    int n,i,second,first;
    int *pf,*ps;
    pf = &first;
    ps = &second;
    //输入数组
    scanf("%d",&n);
    for(i = 0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
    LargestTow(a,n,pf,ps);
    printf("%d %d",*pf,*ps);
    return 0;
}
void LargestTow(int a[],int n,int *pfirst,int *psecond)
{
    /*数组a有n个元素,将数组中的最大值存入形参指针pfirst所指内存单元,将数组中第二大的值存入形参指针psecond所指内存单元。 */
    int i,j,t;
    ///只需实现从大到小排序 然后输出前两个值就行
    for(i = 0; i<n; i++)
    {
        for(j = i+1; j<n; j++)
        {
            if(a[i] < a[j])
            {
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
        }
    }
    *pfirst = a[0];
    *psecond = a[1];
}
 
版权声明:本文为qq_39345244原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
