首页 > 解决方案 > 编写一个程序,将三个整数作为输入,并打印第二大数字

问题描述

我试过这个程序取 3 个整数并打印第二大数字:

#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;
}

现在我被困在这里。我无法找到此代码背后的逻辑。我能做些什么?

标签: cif-statementnested-if

解决方案


这不是您可以理解的逻辑,它不会给您正确的预期结果。

代码:

#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;
}

您应该比较所有三个变量以获得2nd largest这些数字。

输出:

Values: 32 31 12
2nd largest: 31

解释:

首先选择任何变量并将其与其他两个变量进行比较,例如if(a>b && a>c),如果是true,则表示两个变量a中的largest任何一个,b并且c2nd largest,所以在if(a>b && a>c)块内有一个比较if(b>c),如果truethenb是第二大的,否则c是第二大的. 同样,比较其他两个变量是否最大。例如else if(b>c && b>a)else if(c>a && c>b)


推荐阅读