您的位置:首页 > 其它

第4章 子程序习题

2016-05-14 07:44 190 查看
1、 写一个名为total的子程序,它可以返回给定列表中数字相加的总和。

#!/usr/bin/perl
my @fred = qw/ 1 3 5 7 9 /;
my $fred_total = total (@fred);
print "The total of \@fred is $fred_total.\n";
print "Enter some numbers on separate lines: ";
my $user_total = total(<STDIN>);
print "The total of those numbers is $user_total.\n";
sub total{
my $sum;
foreach (@_){
$sum += $_ ;
}
$sum;
}


2、 使用之前程序中的子程序,计算从1加到1000的总和

#!/usr/bin/perl
print "The summary of 1 to 1000 is equal to ".total(1..1000)."\n";
sub total{
my $sum;
foreach (@_){
$sum += $_ ;
}
$sum;
}


3、写一个名为&above_average的子程序,当给定一个包含多个数字的列表时,返回其中大于这些数平均值的数。

#!/usr/bin/perl
my @fred =above_average(1..10);
print "\@fred is @fred\n";
print "(Should be 6 7 8 9 10)\n";
my @barney = above_average(100, 1..10);
print "\@barney is @barney\n";
print "(Should be just 100)\n";
sub total{
my $sum;
foreach (@_){
$sum += $_ ;
}
$sum;
}
sub average{
if (@_ == 0){return}
my $count = @_;
my $sum = total(@_);
$sum/$count;
}
sub above_average{
$average = average(@_);
my @above_number;
foreach my $element(@_){
if ($element > $average){
push @above_number, $element;
}
}
@above_number;
}


4, 写一个名为greet的子程序,当给定一个人名作为参数时,打印出欢迎他的信息,并告诉他前一个来宾的名字:

greet( "Fred" );
greet( "Barney" );


按照语句的顺序,它应该打印出:

Hi Fred! You are the first one here!
Hi Barney! Fred is also here!


脚本:

#!/usr/bin/perl
use 5.010; #state这个特性是从perl5.10开始引入的
greet ( "Fred" );
greet ( "Barney" );
greet ( "Alice" );
sub greet {
state $last_person;
my $name = shift;
print "Hi $name!";
if (defined $last_person){
print "$last_person is also here!\n";
}else{
print "You are the first one here!\n";
}
$last_person = $name;
}


5、修改前面这个程序,告诉所有新来的人之前已经迎接了哪些人:

greet("Fred");
greet("Barney");
greet("Alice");
greet("Betty");


按照语句的顺序,它应该打印出:

Hi Fred!You are the
4000
first one here!
Hi Barney! I've seen: Fred
Hi Alice! I've seen: Fred Barney
Hi Betty! I've seen: Fred Barney Alice


脚本:

#!/usr/bin/perl
use 5.010;
greet("Fred"); greet("Barney"); greet("Alice"); greet("Betty");
sub greet{
state @list;
my $name = shift;
print "Hi $name!";
if (@list){
print "I've seen:@list \n";
}
else{
print "You are the first one here!\n";
}
push @list, $name;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: