C : 次小次大值


 

题目描述

A:小B你会唱小星星么;

B:一闪一闪亮晶晶,很简单的了;

A:那你会找一个数列的最大最小值么?
B:当然了,很简单了。我还会找次小值次大值呢?
A:次小次大值?
B:次小值是比最小值大,除去最小值剩下的数列的最小值。次大值同理。但是如果没有次小值,次小值则为最小值加一,同理如果没有次大值,次大值则最大值减一;
A...

输入

输入在第一行给出一个正整数n0<n<100)。第二行给出n个整数(均属于int)(迷茫的小A提醒你,这是个多实例哟)

输出

输出这个数列的次小值和次大值(中间空格隔开,输出占一行)

样例输入

复制

5

1 2 3 4 5

样例输出

复制

2 4

 

题意:输入一组数,输出次小值与次大值。如果没有次小值,次小值则为最小值加一,同理如果没有次大值,次大值则最大值减一。

思路:先对其排序,若只有一个数或最大值与最小值相等,则次小值为这个数加1,次大值为这个数减1。

题意:输入一组数,输出次小值与次大值。如果没有次小值,次小值则为最小值加一,同理如果没有次大值,次大值则最大值减一。

思路:先对其排序,若只有一个数或最大值与最小值相等,则次小值为这个数加1,次大值为这个数减1。

程序代码:

#include<stdio.h>

int a[110];

int main()

{

    int n,i,j,t,min,max;

    while(scanf("%d",&n)!=EOF)

    {

                for(i=1;i<=n;i++)

                scanf("%d",&a[i]);

                if(n==1)

                    printf("%d %d\n",a[1]+1,a[1]-1);

                 else

                {

                        for(i=1;i<=n-1;i++)

                                for(j=i+1;j<=n;j++)

                                {

                                        if(a[i]>a[j])

                                        {

                                                t=a[i];

                                                a[i]=a[j];

                                                a[j]=t;

                                        }

                                   }

                        min=a[1];

                        max=a[n];

                        if(min==max)

                                printf("%d %d\n",min+1,max-1);

                        else

                        {

                                for(i=1;i<=n;i++)

                                    if(a[i]!=min)

                                     {

                                             min=a[i];

                                             break;

                                      }                                

                                for(i=n;i>=1;i--)

                                    if(a[i]!=max)

                                    {

                                          max=a[i];

                                         break;

                                      }

                                printf("%d %d\n",min,max);

                        }

               }

    }

    return 0;

}