当前位置:文档之家› Perl语言入门(第四版)习题答案

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

《Perl语言入门习题答案》练习1、写一个程序,计算半径为的圆的周长。

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

答案为。

-----------------------/home/confish/perl/girth#!/usr/bin/perl -w#this program calculate a circle's girth,$r=;$g=*2*;print "the girth of the circle is $g\n";-----------------------/home/confish/perl/girth2、修改上述程序,用户可以在程序运行时输入半径。

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

-----------------------/home/confish/perl/girthpro#!/usr/bin/perl -w`#a better one to calculate girthprint"enter the radius of the circle\n";chomp($r=<STDIN>);if($r>0){print"the girth of the circle is ".$r*2*."\n";;}else{print"nonavailable!\n";}-----------------------/home/confish/perl/girthpro3、修改上述程序,当用户输入小于0 的数字时,程序输出的周长为0,而非负数。

】-----------------------/home/confish/perl/girthzero#!/usr/bin/perl -w#calculate the girth and print 0 when the radius is lower than 0print"enter the radius of the line\n";chomp($r=<STDIN>);if($r>0)&{print"the girth of the circle is $r*2*\n";}else{print"the girth of the circle is 0\n";}-----------------------/home/confish/perl/girthzero$1、2、3:(一起实现的)#!/usr/bin/perl -w$pai=;print "Please Input Radius:";$r=<STDIN>;if ( $r lt 0 ){print "The circumference is 0\n";@}else{$l=$r*2*$pai;printf "The circumference is %.1f\n",$l;}4、写一个程序,用户能输入2 个数字(不在同一行)。

输出为这两个数的积。

-----------------------/home/confish/perl/product#!/usr/bin/perl -w、#print the two number'sprint"enter the two numbers:\n";chomp($m=<STDIN>);chomp($n=<STDIN>);print"the product of the two numbers are ".$m*$n."\n";-----------------------/home/confish/perl/product5、写一个程序,用户能输入1 个字符串和一个数字(n)(不在同一行)。

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

例如,如果用户输入的是“fred”和“3”,则输出为:3 行,每一行均为fred。

如果输入为“fred”和“299792”,则输出为299792 行,每一行均为fred'-----------------------/home/confish/perl/printer#!/usr/bin/perl -w#print a string certain times depend on the usr'sprint"enter a string and a number:\n";$str=<STDIN>;chomp($num=<STDIN>);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#read some input and print them in reverseprint "enter the string please:\n";@str=reverse <STDIN>;]print "\nthe reverse strings are:\n@str";------------------------------------/home/confish/reprint2、写一个程序,读入一串数字(一个数字一行),将和这些数字对应的人名(下面列出的)输出来。

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

fred betty barney dino Wilma pebbles bamm-bamm 例如,当输入为1,2,4 和2,则输出的为fred, betty, dino, 和betty------------------------------------/home/confish/num_to_name#!/usr/bin/perl -w#read some numbers and output the match【$i=0;@names=qw /fred betty barney dino Wilma pebbles bamm-bamm/;print"enter the numbers please:\n";chomp(@nums=<STDIN>);foreach(@nums){@re=@names;while($i ne $_)/{$n=shift( @re);$i++;}$i=0;print $n,"\n";}------------------------------------/home/confish/num_to_name(3、写一个程序,将一些字符串(在不同的行中)读入一个列表中。

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

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

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

------------------------------------/home/confish/sort_str#!/usr/bin/perl -w#read some strings and sort them inchomp(@str=sort<STDIN>);#@str=sort<STDIN>; will print them in diffrent linesprint @str,"\n";《------------------------------------/home/confish/sort_str练习1、写一个名为&total 的子程序,返回一列数字的和。

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

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

第一组数组之和25。

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";--------------------------------/home/confish/perl/subr#!/usr/bin/perl -w#a subroutine named total returns sum ofsub total{】foreach $n(0..$#_){$sum+=$_[$n];}$sum;}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:\n";my $user_total=&total(<STDIN>);print"The total of those numbers is $user_total.\n";--------------------------------/home/confish/perl/subr2、利用上题的子程序,写一个程序计算从1 到1000 的数字的和。

[--------------------------------/home/confish/perl/suber#!/usr/bin/perl -w#use the subroutine in last program to get the sum ofsub total{foreach $n(0..$#_){$sum+=$_[$n];;}$sum;}@num=(1..1000);$sum=&total(@num);print"The sum of 1..1000 is $sum\n";--------------------------------/home/confish/perl/suber'3、额外的练习:写一个子程序,名为&above_average,将一列数字作为其参数,返回所有大于平均值的数字(提示:另外写一个子程序来计算平均值,总和除以数字的个数)。

相关主题