Search code examples
cif-statementnested-if

Write a program that will take three integers as input and will print the second largest number


I have tried this program to take 3 integers and print the 2nd largest number:

#include<stdio.h>
int main()
{
    int a,b,c,max2;
    printf("Enter 3 integers: ");
    scanf("%d%d%d",&a,&b,&c);
    max2=a;
    if(a>b){
        max2=b;
        printf("")
    }
    return 0;
}

Now i am stuck here. I am unable to find the logic behind this code. What can I do?


Solution

  • This is not the Logic which you can understand, it'll not give you the right, expected result.

    Code:

    #include <stdio.h>
    
    int main()
    {
        int a, b, c;
        printf("Values: ");
        scanf("%d%d%d", &a, &b, &c);
        if(a>b && a>c)
        {
            if(b>c)
                printf("2nd largest: %d", b);
            else
                printf("2nd largest: %d", c);
        }
        else if(b>c && b>a)
        {
            if(c>a)
                printf("2nd largest: %d", c);
            else
                printf("2nd largest: %d", a);
        }
        else if(a>b)
                printf("2nd largest: %d", a);
            else
                printf("2nd largest: %d", b);
        return 0;
    }
    

    You should compare all the three variables to get the 2nd largest among those numbers.

    Output:

    Values: 32 31 12
    2nd largest: 31
    

    Explanation:

    First pick any variable and compare it with the other two variables like if(a>b && a>c), if its true, it means a is the largest and any of the two variables b and c is the 2nd largest, so inside the if(a>b && a>c) block there's a comparison if(b>c), if true then b is the 2nd largest otherwise c is the second largest. Similarly, compare the other two variables for if they are the largest. e.g. else if(b>c && b>a) and else if(c>a && c>b).