gpt4 book ai didi

perl - 找出3中最大的数

转载 作者:行者123 更新时间:2023-12-01 05:32:36 25 4
gpt4 key购买 nike

我正在尝试编写一个脚本来找到 3 个数字中的最大数字,并通过命令行参数传递它们

我只是想知道我在这段代码中写了什么错误的东西,谢谢你的帮助。

sub maximum($) {
($num1) = @_ ;
($num2) = @_ ;
($num2) = @_ ;

$max = $num1;

if ($num2 > $num1) {
$max = $num2;
}
elsif ($num3 > $max ) {
$max = $num3;
}
}

$n1 = $ARGV[0];
chomp($n1);
$n2 = $ARGV[1];
chomp($n2);
$n3 = $ARGV[2];
chomp($n3);

maximum($n1, $n2, $n3);

最佳答案

您的 maximum功能有缺陷:

  • 如果第一个数字大于第二个,您只能尝试第三个数字。
  • 您没有正确检索参数; $num1$num2都得到第一个和 $num3从未设置。
  • 您永远不会返回 $max值(value)。
  • 你不打印结果。
  • 你没有限定你的变量。
  • 没有理由chomp论据。

  • 下面是一些代码,其中包含五种不同的函数参数检索方法:
    sub max1 {
    my $num1 = $_[0];
    my $num2 = $_[1];
    my $num3 = $_[2];
    my $max = $num1;
    $max = $num2 if $num2 > $max;
    $max = $num3 if $num3 > $max;
    return $max;
    }

    sub max2 {
    my $num1 = shift;
    my $num2 = shift;
    my $num3 = shift;
    my $max = $num1;
    $max = $num2 if $num2 > $max;
    $max = $num3 if $num3 > $max;
    return $max;
    }

    sub max3 {
    my ($num1, $num2, $num3) = @_;
    my $max = $num1;
    $max = $num2 if $num2 > $max;
    $max = $num3 if $num3 > $max;
    return $max;
    }

    # Works for any number of arguments.
    sub max4 {
    my $max = shift;
    foreach my $foo (@_) {
    $max = $foo if $max < $foo;
    }
    return $max;
    }

    # Works for any number of arguments.
    use List::Util qw( max );

    my $n1 = $ARGV[0];
    my $n2 = $ARGV[1];
    my $n3 = $ARGV[2];

    printf "%d\n", max1($n1, $n2, $n3);
    printf "%d\n", max2($n1, $n2, $n3);
    printf "%d\n", max3($n1, $n2, $n3);
    printf "%d\n", max4($n1, $n2, $n3);
    printf "%d\n", max($n1, $n2, $n3);

    # Even simpler:
    printf "%d\n", max1 @ARGV;
    printf "%d\n", max2 @ARGV;
    printf "%d\n", max3 @ARGV;
    printf "%d\n", max4 @ARGV;
    printf "%d\n", max @ARGV;

    关于perl - 找出3中最大的数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431655/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com