专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Perl/Python

,这个perl程序到底是哪里出了有关问题

发布时间:2011-06-29 20:04:38 文章来源:www.iduyao.cn 采编人员:星星草
请指教,这个perl程序到底是哪里出了问题
#!/usr/bin/perl

sub   total{
my   ($total)   =   shift   @_;
foreach(@_){
    $total   +=   $_;
}
$total;
}

sub   above_average{
my   $n   =   @_;
my   $total   =   &total(@_);
my   $average   =   $total/$n;
foreach(@_){
    if($_> $average){
          my   @end   =   push(@end,$_);
    }
}
@end;
}

my   @n   =&above_average(1..10);       #1
print   "@n\n ";

my   @m   =&above_average(100,1..10);#2
print   "@m\n ";


第一个子程序是求和,第二个子程序求数组中大于平均值的数。
单执行#1或#2都可以出正确结果,但是两个一起用,#2的结果为(6   7   8   9   10   100),不正确。
是什么问题?请指教

------解决方案--------------------
#!/usr/bin/perl -w
use strict;

sub total{
my ($total) = shift @_;
foreach(@_){
$total += $_;
}
$total;
}

sub above_average{
my $n = @_;
my $total = &total(@_);
my $average = $total/$n;
my @end;
foreach(@_){
if($_> $average){
push(@end,$_);
}
}
@end;
}

my @n =&above_average(1..10);
print "@n\n ";

my @m =&above_average(100,1..10);
print "@m\n ";
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: