48、编写代码实现:有一个包含名字的数组 @names = qw/ fred betty barney dino wilma pebbles bamm - bamm /,提示用户输入 1 到 7 的数字,每行一个,按 Ctrl - D 结束,根据用户输入的数字输出对应名字。
以下是实现该功能的 Perl 代码:
#!/usr/bin/perl
use strict;
use warnings;
# 定义名字数组
my @names = qw/ fred betty barney dino wilma pebbles bamm-bamm /;
# 提示用户输入
print "请输入 1 到 7 的数字,每行一个,按 Ctrl-D 结束:\n";
while (my $input = <STDIN>) {
chomp $input;
if ($input =~ /^[1-7]$/) {
my $index = $input - 1;
print $names[$index], "\n";
} else {
print "输入无效,请输入 1 到 7 的数字。\n";
}
}
上述代码首先定义了名字数组 @names ,然后提示用户输入 1 到 7 的数字。在循环中,读取用户输入,去除换行符,检查输入是否为 1 到 7 的数字。如果是,则输出对应名字;否则,提示输入无效。按 Ctrl-D 结束输入。
49、编写代码实现:对用户输入的行进行排序并输出,分别实现输出在一行和分行输出两种情况。
以下是使用Python语言实现的代码示例:
# 获取用户输入的行
lines = []
while True:
line = input('请输入行内容(输入空行结束):')
if not line:
break
lines.append(line)
# 对输入的行进行排序
sorted_lines = sorted(lines)
# 输出在一行
print('一行输出:', ' '.join(sorted_lines))
# 分行输出
print('分行输出:')
for line in sorted_lines:
print(line)
上述代码首先通过循环获取用户输入的行,直到用户输入空行结束。接着对输入的行进行排序,然后分别实现了将排序后的行输出在一行和分行输出的功能。
50、编写一个名为 total 的子例程,用于计算传入参数的总和。
以下是编写名为 total 的子例程的代码:
sub total {
my $sum = 0;
foreach my $num (@_) {
$sum += $num;
}
return $sum;
}
此子例程接收一个数字列表作为参数,通过遍历该列表将每个数字累加到变量 $sum 中,最后返回总和。
51、使用子程序计算1到1000的数字总和并打印结果。
可以使用 List::Util 模块中的 sum 函数来计算 1 到 1000 的数字总和,示例代码如下:
use List::Util qw(sum);
my $total = sum( 1..1000 );
print $total; # 输出 500500
52、编写子程序average来计算参数列表的平均值,编写子程序above_average来返回参数列表中大于平均值的所有元素。
以下是实现这两个子程序的Perl代码示例:
sub average {
my $total = 0;
foreach my $num (@_) {
$total += $num;
}
return $total / scalar @_;
}
sub above_average {
my $avg = average(@_);
my @result;
foreach my $num (@_) {
if ($num > $avg) {
push @result, $num;
}
}
return @result;
}
在上述代码中, average 子程序通过遍历传入的参数列表,累加所有元素的值,然后除以元素的数量得到平均值。 above_average 子程序先调用 average 子程序计算平均值,然后遍历参数列表,将大于平均值的元素添加到结果数组中并返回。


941

被折叠的 条评论
为什么被折叠?



