C : 次小次大值
题目描述
小A:小B你会唱小星星么;
小B:一闪一闪亮晶晶,很简单的了;
小A:那你会找一个数列的最大最小值么?
小B:当然了,很简单了。我还会找次小值次大值呢?
小A:次小次大值?
小B:次小值是比最小值大,除去最小值剩下的数列的最小值。次大值同理。但是如果没有次小值,次小值则为最小值加一,同理如果没有次大值,次大值则最大值减一;
小A:...
输入
输入在第一行给出一个正整数n(0<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;
}
 
京公网安备 11010502036488号