您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 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;printthegirthofthecircleis$g\n;-----------------------/home/confish/perl/girth2、修改上述程序,用户可以在程序运行时输入半径。如果,用户输入12.5,则应得到和上题一样的结果。-----------------------/home/confish/perl/girthpro#!/usr/bin/perl-w#abetteronetocalculategirth#confish@ubuntu7.10printentertheradiusofthecircle\n;chomp($r=STDIN);if($r0){printthegirthofthecircleis.$r*2*3.1415.\n;}else{printnonavailable!\n;}-----------------------/home/confish/perl/girthpro3、修改上述程序,当用户输入小于0的数字时,程序输出的周长为0,而非负数。-----------------------/home/confish/perl/girthzero#!/usr/bin/perl-w#calculatethegirthandprint0whentheradiusislowerthan0#confish@ubuntu7.10printentertheradiusoftheline\n;chomp($r=STDIN);if($r0){printthegirthofthecircleis$r*2*3.1415\n;}else{printthegirthofthecircleis0\n;}-----------------------/home/confish/perl/girthzero1、2、3:(一起实现的)#!/usr/bin/perl-w$pai=3.141592654;printPleaseInputRadius:;$r=STDIN;if($rlt0){printThecircumferenceis0\n;}else{$l=$r*2*$pai;printfThecircumferenceis%.1f\n,$l;}4、写一个程序,用户能输入2个数字(不在同一行)。输出为这两个数的积。-----------------------/home/confish/perl/product#!/usr/bin/perl-w#printthetwonumber'sproduct#confish@ubuntu7.10printenterthetwonumbers:\n;chomp($m=STDIN);chomp($n=STDIN);printtheproductofthetwonumbersare.$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#printastringcertaintimesdependontheusr'sinput#confish@ubuntu7.10printenterastringandanumber:\n;$str=STDIN;chomp($num=STDIN);print${str}x$num;-----------------------/home/confish/perl/printer3.9练习1、写一个程序,将一些字符串(不同的行)读入一个列表中,逆向输出它。如果是从键盘输入的,那在Unix系统中应当使用CTRL+D表明end-of-file,在Windows系统中使用CTRL+Z.------------------------------------/home/confish/reprint#!/usr/bin/perl-w#readsomeinputandprinttheminreversesequence#confish@ubuntu7.10printenterthestringplease:\n;@str=reverseSTDIN;print\nthereversestringsare:\n@str;------------------------------------/home/confish/reprint2、写一个程序,读入一串数字(一个数字一行),将和这些数字对应的人名(下面列出的)输出来。(将下面的人名列表写入代码中)。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/;printenterthenumbersplease:\n;chomp(@nums=STDIN);foreach(@nums){@re=@names;while($ine$_){$n=shift(@re);$i++;}$i=0;print$n,\n;}------------------------------------/home/confish/num_to_name3、写一个程序,将一些字符串(在不同的行中)读入一个列表中。然后按ASCII顺序将它们输出来。也就是说,当输入的字符串为fred,barney,wilma,betty,则输出为barneybettyfredwilma。分别在一行或不同的行将之输出。------------------------------------/home/confish/sort_str#!/usr/bin/perl-w#readsomestringsandsorttheminASCII#confish@ubuntu7.10chomp(@str=sortSTDIN);#@str=sortSTDIN;willprintthemindiffrentlinesprint@str,\n;------------------------------------/home/confish/sort_str4.11练习1、写一个名为&total的子程序,返回一列数字的和。提示:子程序不应当有任何的I/O操作;它处理调用的参数,返回处理后的值给调用者。结合下面的程序来练习,它检测此子程序是否正常工作。第一组数组之和25。my@fred=qw{13579};my$fred_total=&total(@fred);printThetotalof\@fredis$fred_total.\n;printEntersomenumbersonseparatelines:;my$user_total=&total(STDIN);printThetotalofthosenumbersis$user_total.\n;--------------------------------/home/confish/perl/subr#!/usr/bin/perl-w#asubroutinenamedtotalreturnssumofnumbers#confish@ubuntu7.10subtotal{foreach$n(0..$#_){$sum+=$_[$n];}$sum;}my@fred=qw{13579};my$fred_total=&total(@fred);printThetotalof\@fredis$fred_total.\n;printEntersomenumbersonseparatelines:\n;my$user_total=&total(STDIN);printThetotalofthosenumbersis$user_total.\n;--------------------------------/home/confish/perl/subr2、利用上题的子程序,写一个程序计算从1到1000的数字的和。--------------------------------/home/confish/perl/suber#!/usr/bin/perl-w#usethesubroutineinlastprogramtogetthesumof1..1000#confish@ubuntu7.10subtotal{foreach$n(0..$#_){$sum+=$_[$n];}$sum;}@num=(1..1000);$sum=&total(@num);printThesumof1..1000is$sum\n;--------------------------------/home/confish/perl/suber3、额外的练习:写一个子程序,名为&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#insomenumbers#confish@ubuntu7.10subaverage{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;--
本文标题:Perl语言入门(第四版)习题答案
链接地址:https://www.777doc.com/doc-5230109 .html