Perl语言入门第四版习题标准答案.docx
《Perl语言入门第四版习题标准答案.docx》由会员分享,可在线阅读,更多相关《Perl语言入门第四版习题标准答案.docx(30页珍藏版)》请在冰豆网上搜索。
Perl语言入门第四版习题标准答案
Perl语言入门(第四版)习题答案
————————————————————————————————作者:
————————————————————————————————日期:
《Perl语言入门习题答案》
2.12练习
1、写一个程序,计算半径为12.5的圆的周长。
圆周长等于2π(π约为3.1415926)乘以半径。
答案为78.5。
-----------------------/home/confish/perl/girth
#!
/usr/bin/perl-w
#thisprogramcalculateacircle'sgirth
#confish@ubuntu7.10
$r=12.5;
$g=12.5*2*3.1415;
print"thegirthofthecircleis$g\n";
-----------------------/home/confish/perl/girth
2、修改上述程序,用户可以在程序运行时输入半径。
如果,用户输入12.5,则应得到和上题一样的结果。
-----------------------/home/confish/perl/girthpro
#!
/usr/bin/perl-w
#abetteronetocalculategirth
#confish@ubuntu7.10
print"entertheradiusofthecircle\n";
chomp($r=);
if($r>0)
{
print"thegirthofthecircleis".$r*2*3.1415."\n";
}
else
{
print"nonavailable!
\n";
}
-----------------------/home/confish/perl/girthpro
3、修改上述程序,当用户输入小于0的数字时,程序输出的周长为0,而非负数。
-----------------------/home/confish/perl/girthzero
#!
/usr/bin/perl-w
#calculatethegirthandprint0whentheradiusislowerthan0
#confish@ubuntu7.10
print"entertheradiusoftheline\n";
chomp($r=);
if($r>0)
{
print"thegirthofthecircleis$r*2*3.1415\n";
}
else
{
print"thegirthofthecircleis0\n";
}
-----------------------/home/confish/perl/girthzero
1、2、3:
(一起实现的)
#!
/usr/bin/perl-w
$pai=3.141592654;
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'sproduct
#confish@ubuntu7.10
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'sinput
#confish@ubuntu7.10
print"enterastringandanumber:
\n";
$str=;
chomp($num=);
print${str}x$num;
-----------------------/home/confish/perl/printer
3.9练习
1、写一个程序,将一些字符串(不同的行)读入一个列表中,逆向输出它。
如果是从键盘输入的,那在Unix系统中应当使用CTRL+D表明end-of-file,在Windows系统中使用CTRL+Z.
------------------------------------/home/confish/reprint
#!
/usr/bin/perl-w
#readsomeinputandprinttheminreversesequence
#confish@ubuntu7.10
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
#readsomenumbersandoutputthematchname
#confish@ubuntu7.10
$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
#readsomestringsandsorttheminASCII
#confish@ubuntu7.10
chomp(@str=sort);
#@str=sort;willprintthemindiffrentlines
print@str,"\n";
------------------------------------/home/confish/sort_str
4.11练习
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
#asubroutinenamedtotalreturnssumofnumbers
#confish@ubuntu7.10
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
#usethesubroutineinlastprogramtogetthesumof1..1000
#confish@ubuntu7.10
subtotal
{
foreach$n(0..$#_)
{
$sum+=$_[$n];
}
$sum;
}
@num=(1..1000);
$sum=&total(@num);
pri