Perl语言入门习题答案.docx

上传人:b****3 文档编号:10332925 上传时间:2023-05-25 格式:DOCX 页数:36 大小:357.44KB
下载 相关 举报
Perl语言入门习题答案.docx_第1页
第1页 / 共36页
Perl语言入门习题答案.docx_第2页
第2页 / 共36页
Perl语言入门习题答案.docx_第3页
第3页 / 共36页
Perl语言入门习题答案.docx_第4页
第4页 / 共36页
Perl语言入门习题答案.docx_第5页
第5页 / 共36页
Perl语言入门习题答案.docx_第6页
第6页 / 共36页
Perl语言入门习题答案.docx_第7页
第7页 / 共36页
Perl语言入门习题答案.docx_第8页
第8页 / 共36页
Perl语言入门习题答案.docx_第9页
第9页 / 共36页
Perl语言入门习题答案.docx_第10页
第10页 / 共36页
Perl语言入门习题答案.docx_第11页
第11页 / 共36页
Perl语言入门习题答案.docx_第12页
第12页 / 共36页
Perl语言入门习题答案.docx_第13页
第13页 / 共36页
Perl语言入门习题答案.docx_第14页
第14页 / 共36页
Perl语言入门习题答案.docx_第15页
第15页 / 共36页
Perl语言入门习题答案.docx_第16页
第16页 / 共36页
Perl语言入门习题答案.docx_第17页
第17页 / 共36页
Perl语言入门习题答案.docx_第18页
第18页 / 共36页
Perl语言入门习题答案.docx_第19页
第19页 / 共36页
Perl语言入门习题答案.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Perl语言入门习题答案.docx

《Perl语言入门习题答案.docx》由会员分享,可在线阅读,更多相关《Perl语言入门习题答案.docx(36页珍藏版)》请在冰点文库上搜索。

Perl语言入门习题答案.docx

Perl语言入门习题答案

--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--

 

Perl语言入门(第四版)习题答案(总22页)

《Perl语言入门习题答案》

练习

1、写一个程序,计算半径为的圆的周长。

圆周长等于2π(π约为)乘以半径。

答案为。

-----------------------/home/confish/perl/girth

#!

/usr/bin/perl-w

#thisprogramcalculateacircle'sgirth

 

$r=;

$g=*2*;

print"thegirthofthecircleis$g\n";

-----------------------/home/confish/perl/girth

2、修改上述程序,用户可以在程序运行时输入半径。

如果,用户输入,则应得到和上题一样的结果。

-----------------------/home/confish/perl/girthpro

#!

/usr/bin/perl-w

#abetteronetocalculategirth

 

print"entertheradiusofthecircle\n";

chomp($r=);

if($r>0)

{

print"thegirthofthecircleis".$r*2*."\n";

}

else

{

print"nonavailable!

\n";

}

-----------------------/home/confish/perl/girthpro

3、修改上述程序,当用户输入小于0的数字时,程序输出的周长为0,而非负数。

-----------------------/home/confish/perl/girthzero

#!

/usr/bin/perl-w

#calculatethegirthandprint0whentheradiusislowerthan0

 

print"entertheradiusoftheline\n";

chomp($r=);

if($r>0)

{

print"thegirthofthecircleis$r*2*\n";

}

else

{

print"thegirthofthecircleis0\n";

}

-----------------------/home/confish/perl/girthzero

1、2、3:

(一起实现的)

#!

/usr/bin/perl-w

$pai=;

print"PleaseInputRadius:

";

$r=;

if($rlt0){

print"Thecircumferenceis0\n";

}else{

$l=$r*2*$pai;

printf"Thecircumferenceis%.1f\n",$l;

}

4、写一个程序,用户能输入2个数字(不在同一行)。

输出为这两个数的积。

-----------------------/home/confish/perl/product

#!

/usr/bin/perl-w

#printthetwonumber's

print"enterthetwonumbers:

\n";

chomp($m=);

chomp($n=);

print"theproductofthetwonumbersare".$m*$n."\n";

-----------------------/home/confish/perl/product

5、写一个程序,用户能输入1个字符串和一个数字(n)(不在同一行)。

输出为,n行这个字符串,1次1行(提示,使用“x”操作符)。

例如,如果用户输入的是“fred”和“3”,则输出为:

3行,每一行均为fred。

如果输入为“fred”和“299792”,则输出为299792行,每一行均为fred

-----------------------/home/confish/perl/printer

#!

/usr/bin/perl-w

#printastringcertaintimesdependontheusr's

print"enterastringandanumber:

\n";

$str=;

chomp($num=);

print${str}x$num;

-----------------------/home/confish/perl/printer

练习

1、写一个程序,将一些字符串(不同的行)读入一个列表中,逆向输出它。

如果是从键盘输入的,那在Unix系统中应当使用CTRL+D表明end-of-file,在Windows系统中使用CTRL+Z.

------------------------------------/home/confish/reprint

#!

/usr/bin/perl-w

#readsomeinputandprinttheminreverse

print"enterthestringplease:

\n";

@str=reverse;

print"\nthereversestringsare:

\n@str";

------------------------------------/home/confish/reprint

2、写一个程序,读入一串数字(一个数字一行),将和这些数字对应的人名(下面列出的)输出来。

(将下面的人名列表写入代码中)。

fredbettybarneydinoWilmapebblesbamm-bamm

例如,当输入为1,2,4和2,则输出的为fred,betty,dino,和betty

------------------------------------/home/confish/num_to_name

#!

/usr/bin/perl-w

#readsomenumbersandoutputthematch

$i=0;

@names=qw/fredbettybarneydinoWilmapebblesbamm-bamm/;

print"enterthenumbersplease:

\n";

chomp(@nums=);

foreach(@nums)

{

@re=@names;

while($ine$_)

{

$n=shift(@re);

$i++;

}

$i=0;

print$n,"\n";

}

------------------------------------/home/confish/num_to_name

3、写一个程序,将一些字符串(在不同的行中)读入一个列表中。

然后按ASCII顺序将它们输出来。

也就是说,当输入的字符串为fred,barney,wilma,betty,则输出为barneybettyfredwilma。

分别在一行或不同的行将之输出。

------------------------------------/home/confish/sort_str

#!

/usr/bin/perl-w

#readsomestringsandsortthemin

chomp(@str=sort);

#@str=sort;willprintthemindiffrentlines

print@str,"\n";

------------------------------------/home/confish/sort_str

练习

1、写一个名为&total的子程序,返回一列数字的和。

提示:

子程序不应当有任何的I/O操作;它处理调用的参数,返回处理后的值给调用者。

结合下面的程序来练习,它检测此子程序是否正常工作。

第一组数组之和25。

my@fred=qw{13579};

my$fred_total=&total(@fred);

print"Thetotalof\@fredis$fred_total.\n";

print"Entersomenumbersonseparatelines:

";

my$user_total=&total();

print"Thetotalofthosenumbersis$user_total.\n";

--------------------------------/home/confish/perl/subr

#!

/usr/bin/perl-w

#asubroutinenamedtotalreturnssumof

subtotal

{

foreach$n(0..$#_)

{

$sum+=$_[$n];

}

$sum;

}

my@fred=qw{13579};

my$fred_total=&total(@fred);

print"Thetotalof\@fredis$fred_total.\n";

print"Entersomenumbersonseparatelines:

\n";

my$user_total=&total();

print"Thetotalofthosenumbersis$user_total.\n";

--------------------------------/home/confish/perl/subr

2、利用上题的子程序,写一个程序计算从1到1000的数字的和。

--------------------------------/home/confish/perl/suber

#!

/usr/bin/perl-w

#usethesubroutineinlastprogramtogetthesumof

subtotal

{

foreach$n(0..$#_)

{

$sum+=$_[$n];

}

$sum;

}

@num=(1..1000);

$sum=&total(@num);

print"Thesumof1..1000is$sum\n";

--------------------------------/home/confish/perl/suber

3、额外的练习:

写一个子程序,名为&above_average,将一列数字作为其参数,返回所有大于平均值的数字(提示:

另外写一个子程序来计算平均值,总和除以数字的个数)。

利用下面的程序进行测试:

my@fred=&above_average(1..10);

print"\@fredis@fred\n";

print"(Shouldbe678910)\n";

my@barney=&above_average(100,1..10);

print"\@barneyis@barney\n";

print"(Shouldbejust100)\n";

--------------------------------/home/confish/perl/aver

#!

/usr/bin/perl-w

#toprintthenumberwhichislargerthantheaverage

#insome

subaverage

{

foreach$n(0..$#_)

{

$sum+=$_[$n];

}

$average=$sum/($#_+1);

}

subabove_average

{

@num=@_;

@aba=();

$av=&average(@num);

foreach$n(0..$#_)

{

if($_[$n]>$av)

{

push(@aba,$_[$n]);

}

}

@aba;

}

my@fred=&above_average(1..10);

print"\@fredis@fred\n";

print"(Shuoldbe678910)\n";

my@barney=&above_average(100,1..10);

print"\@barneyis@barney\n";

print"(Shouldbejust100)\n";

--------------------------------/home/confish/perl/aver

练习

1、写一个程序,类似于cat,但保持输出的顺序关系。

(某些系统的名字可能是tac。

)如果运行此程序:

./tacfredbarneybetty,输出将是文件betty的内容,从最后一行到第一行,然后是barney,最后是fred,同样是从最后一行到第一行。

(注意使用./确保调用的是你自己的程序,而非系统提供的)

----------------------------------/home/confish/perl/tac

#!

/usr/bin/perl-w

#aprogsameascatbutreversethe

@ARGV=reverse@ARGV;

@a=reverse<>;

print@a;

----------------------------------/home/confish/perl/tac

2、写一个程序,要求用户在不同的行中输入一些字符串,将此字符串打印出来,规则是:

每一条占20个字符宽度,右对齐。

为了确保正确的输出,在开头打印出一串数字作为比较(帮助调试)。

注意,不要犯19个字符宽度的错误。

例如,如果输入,hello,good-bye,则输出为:

67890

hello

good-bye

----------------------------------/home/confish/perl/20str

#!

/usr/bin/perl-w

#aprogthatprintthestringsas20wordsflush

@str=;

while($i!

=5)

{

foreach(0..9)

{

print;

}

$i++;

}

print"\n";

foreach(@str)

{

printf"%21s",$_;

}

----------------------------------/home/confish/perl/20str

3、修改上一个程序,允许用户选择宽度,如,用户输入30,hello,good-bye(在不同的行中),则每一行的宽度为30。

(提示:

参阅第二章相应部分)。

提示,如果选择的宽度太长,可以增加比较行的长度。

----------------------------------/home/confish/perl/20strpro

#!

/usr/bin/perl-w

#aprogprintthestringsasnumberusrapiontedwordsflush

@str=;

while($i!

=5)

{

foreach(0..9)

{

print;

}

$i++;

}

print"\n";

$num=shift@str;

chomp$num;

$conv="%".++$num."s";

foreach(@str)

{

printf$conv,$_;

}

----------------------------------/home/confish/perl/20strpro

练习

1、写一个程序,提示用户输入givenname(名),并给出其对应的familyname(姓)。

使用你知道的人名,或者表6-1(如果你在计算机上花了太多时间,以致什么人都不认识):

表6-1样本数据

输入输出

fredflintstone

barneyrubble

wilmaflintstone

-------------------------------------/home/confish/perl/hash

#!

/usr/bin/perl-w

#hashsthatprintthename'sfamily

$family_name{"fred"}="flintstone";

$family_name{"barney"}="rubble";

$family_name{"wilma"}="flintstone";

print"enterthegivennameplease:

\n";

chomp($gn=);

print"familynamefor$gnis$family_name{$gn}\n";

------------------------------------/home/confish/perl/hash

2、写一个程序,读入一串单词(一个单词一行)◆,输出每一个单词出现的次数。

(提示:

如果某个作为数字使用值是undefined的,会自动将它转换为0。

)如果输入单词为fred,barney,dino,wilma,fred(在不同行中),则输出的fred将为

------------------------------------/home/confish/perl/counts

#!

/usr/bin/perl-w

#hashsthatcountstheappearancetimesoftheword

#print

print"enterthewordplease:

\n";

foreach(<>)

{

$counts{$_}++;

$counts{$_}.="\n";

}

sort%counts;

print%counts;

------------------------------------/home/confish/perl/counts

练习

1、写一个程序,输出所有提到fred的行(不要输出其它行)。

如果输入字符串Fred,fredrick,Alfred,能匹配上吗准备一个小的文本文件,其中包含如:

“fredlintsotne”以及类似的信息。

使用这个文本文件作为此程序的输入,以及本节下面练习的输入。

-------------------------------------------/home/confish/perl/pfred

#!

/usr/bin/perl-w

#progprintthelinewhichcontains"fred"

foreach(<>)

{

if(/fred/)

{

print$_;

}

}

-------------------------------------------/home/confish/perl/pfred

2、修改上面的程序,允许匹配Fred。

现在它能匹配,Fred,fredrick,Alfred吗(将这些名字加入输入文件中)

-------------------------------------------/home/confish/perl/pffred

#!

/usr/bin/perl-w

#progprintthelinewhichcontains"fred"or"Fred"

foreach(<>)

{

if(/fred|Fred/)

{

print$_;

}

}

-------------------------------------------/home/confish/perl/pffred

3、写一个程序,输出出现句号(.)的行,忽略其它行。

使用前面练习中的文件进行练习:

它能找到Mr.Slate吗

-------------------------------------------/home/confish/perl/pp

#!

/usr/bin/perl-w

#progprintthelinewhichcontainsa

foreach(<>)

{

if(/\./)

{

print$_;

}

}

-------------------------------------------/home/confish/perl/pp

4、写一个程序,输出有一个字母大写,而非所有字母都大写的行。

它能匹配Fred,而不匹配fred和FRED吗

-------------------------------------------/home/confish/perl/plg

#!

/usr/bin/perl-w

#printthelinewhichcontainsnotcapitals

foreach(<>)

{

if(/[a-z][A-Z]|[A-Z]+[a-z]/)

{

print$_;

}

}

-------------------------------------------/home/confish/perl/plg

5、额外的练习:

写一个程序,它能输出所有同时提到wilma和fred的行。

-------------------------------------------/home/confish/perl/pfw

#!

/usr/bin/perl-w

#printalinewhichcontainsfredand

foreach(<>)

{

if(/wilma.+fred|fred.+wilma/)

{

print$_;

}

}

------------------------------------------/home/confish/perl/pfw

练习

1、使用模式测试程序。

创造一个模式能匹配字符串match。

使用字符串beforematchafter进行测试。

输出结果将其三部分放在正确位置了吗

----------------------------------------------/home/confish/perl/mm

#!

/usr/bin/perl-w

#

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2