C语言 写一个程序找出四个数中最大的[已关闭]

agxfikkp  于 2023-01-08  发布在  其他
关注(0)|答案(3)|浏览(108)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

昨天关门了。
Improve this question
我是编程新手,目前正在学习C语言,所以我对这个概念了解不多,但我正在学习条件指令,当时我的导师[我从YouTube在线学习]向我解释了逻辑运算符。
他解释说,逻辑运算符与if...else一起使用可以减少缩进并增加可读性。
过了一段时间,我正在解决一个问题,找出四个数字中最大的一个,在这里,他与理论相矛盾,他描述了嵌套的if来解决这个问题,而不是使用逻辑运算符。
现在,我感到困惑,我应该采取什么样的做法,为什么?
还有,什么时候应该使用算术指令,什么时候应该使用嵌套的if...else?

我编写的代码:

#include <stdio.h>

int main()
{
    int number1, number2, number3, number4;

    printf("\nEnter the vlaue of number1: ");
    scanf("%d", &number1);

    printf("\nEnter the value of number2: ");
    scanf("%d", &number2);

    printf("\nEnter the value of number3: ");
    scanf("%d", &number3);

    printf("\nEnter the value of number4: ");
    scanf("%d", &number4);

    if(number1 > number2 && number1 > number3 && number1 > number4)
    {
        printf("\n%d is the greatest of four numbers.\n", number1);
    }

    else if(number2 > number3 && number2 > number4)
    {
        printf("\n%d is the greatest of four numbers.\n", number2);
    }

    else if(number3 > number4)
    {
        printf("\n%d is the greatest of four numbers.\n", number3);
    }

    else
    {
        printf("\n%d is the greatest of four numbers.\n", number4);
    }

    return 0;
}

我的讲师编写的代码:

#include <stdio.h>

int main()
{
    int number1, number2, number3, number4;

    printf("\nEnter the vlaue of number1: ");
    scanf("%d", &number1);

    printf("\nEnter the value of number2: ");
    scanf("%d", &number2);

    printf("\nEnter the value of number3: ");
    scanf("%d", &number3);

    printf("\nEnter the value of number4: ");
    scanf("%d", &number4);

    if(number1 > number2)
    {
        if(number1 >number3)
        {
            if(number1 > number4)
            {
                printf("\n%d is the greatest of four numbers.\n", number1);
            }
        }
    }

    else if(number2 > number3)
    {
        if(number2 > number4)
        {
            printf("\n%d is the greatest of four numbers.\n", number2);
        }
    }

    else if(number3 > number4)
    {
        printf("\n%d is the greatest of four numbers.\n", number3);
    }

    else
    {
        printf("\n%d is the greatest of four numbers.\n", number4);
    }

    return 0;
}
qgelzfjb

qgelzfjb1#

1.教师的代码是错误的。如果您输入2134作为这四个数字,它将打印不出任何内容,而它应该打印4是最大的。
1.逻辑运算符&&||通常用于合并其他条件。减少缩进和增加可读性是一个单独的目标。不要专注于其中任何一个;只需学习使用运算符来执行所需的计算,并练习使程序可读即可。

sqxo8psd

sqxo8psd2#

增加缩进并不意味着降低可读性。如果你有一个很长的if条件,它会减少缩进,但也会降低可读性。你应该使用唯一的方法,让你的代码保持干净和尽可能简单。代码的效率也是必要的,因为你谈论的是C语言。逻辑运算符有助于将两个或更多的if条件合并成一个,有时它确实提高了可读性。有时候,嵌套的如果是更好的选择,你应该考虑你的情况,选择最好的方式。
正如其他评论者所说,您的讲师是错误的,代码有逻辑错误。

bqjvbblv

bqjvbblv3#

如果数字1 = 5,数字2 = 3,数字3 = 6,数字4 = 2
它会打印5是四个数字中最大的,而6是。所以这是不正确的编码。
如果条件语句是主题,你的老师有更正确的答案,无论这看起来多么复杂。
因为实际上,您可以编写:

/* be sure to #include <stdlib.h> */

    printf("\n%d is the greatest of four numbers.\n", 
          max(max(max(number1,number2),number3),number4);

相关问题