c程序使用if else语句打印第二个最大数量的三个数字作为输入

时间:2015-03-04 11:33:46

标签: c loops if-statement

//打印第二个最大数量的三个数字作为输入

#include <stdio.h>

int main()

{
    int a,b,c,lar,seclar;

    scanf("%d%d%d",&a,&b,&c);

    if(a>b)
    {
        if(a>c)
            lar=a;
        else
            seclar=a;
    }

    if(b>c)
    {
        if(b>a)
            lar=a;
        else
            seclar=b;
    }
    if(c>a)
    {
        if(c>b)
            lar=c;
        else
            seclar=c;
    }
    printf("second largest number :%d",seclar);


}

........在这个程序中,如果我按顺序输入数字,结果是正确的,否则结果总是“2”,任何人都可以帮助我这个&gt;&gt;&gt;谢谢

3 个答案:

答案 0 :(得分:0)

您可以做的是将3个输入存储到数组中,执行bubblesort以按升序/降序对数字进行排序。第二大数字应该在数组[1]

工作代码如下:

#include <stdio.h>

int main()
{
    int a,b,c,lar,seclar,x,temp,y;
    int arr1[3];
    scanf("%d%d%d",&a,&b,&c);
    getchar();
    arr1[0]= a;
    arr1[1]= b;
    arr1[2]= c;


    //implement array in descending order
    for (y= 0; y< 3;++y)
    {
        for(x= 0; x< 2;++x)
        {
            if (arr1[x]< arr1[x+1])
            {
                temp= arr1[x];
                arr1[x]= arr1[x+1];
                arr1[x+1]= temp;
            }
        }
    }
    lar= arr1[0];
    seclar= arr1[1];
    printf("largest is %d\n", lar);
    printf("second largest is %d", seclar);
    getchar();
    return 0;
}

答案 1 :(得分:0)

尝试以下方法

#include <stdio.h>

int main(void) 
{
    int a, b, c;
    int second_max;

    scanf( "%d%d%d", &a, &b, &c );

    if ( a < b )
    {
        if ( b < c ) second_max = b;
        else second_max = ( a < c ? c : a );
    }
    else
    {
        if ( a < c ) second_max = a;
        else second_max = ( b < c ? c : b );
    }

    printf( "second maximum value is %d\n ", second_max );

    return 0;
}

如果要输入例如

3 1 2

然后程序输出

second maximum value is 2

如果要输入

1 1 1 

然后程序输出

second maximum value is 1

至于你的程序那么它是错误的,因为在三个数字彼此相等的情况下,程序将尝试输出未初始化的变量seclar。

答案 2 :(得分:-1)

#include<iostream.h>
  #include<conio.h>
  void main()
 {

         int a,b,c;
       cout<<"enter the a,b,c";
        cin>>a>>b>>c;
         clrscr();
       if((a>b&&a<c)||(a<b&&a>c))
       {
           cout<<"the second large"<<a;
        }
        if((b>c&&b<a)||(b<c&&b>a))
      {
            cout<<"the second large"<<b;
      }


        if((c>a&&c<b)||(c<a&&c>b))
       {
             cout<<"the second large"<<a;
        }
       getch();

}