PERL语言入门习题
Perl语言学习练习及参考答案
sub Fw_Print_Step {my ($step,$description) = @_;print ("\n\n==========================\n");print ("题$step:");if ($description) {print ("$description");}print ("\n==========================\n");}#*******************##题1:#设置变量int1的值为2my $int1=2;#设置变量int2的值为10my $int2=10;#比较变量int1与int2的大小,并打印出比较结果#*******************#Fw_Print_Step ($step++,"比较变量int1与int2的大小,并打印出比较结果"); print "\n变量int1=$int1,int2=$int2";print "\n比较结果:";if ($int1<$int2) {print "$int1 < $int2";} elsif ($int1>$int2) {print "$int1 > $int2";} else {print "$int1 = $int2";}#*******************##题2:#使用for循环打印出如下的字符。
# 1# 12# 123# 12345#*******************#Fw_Print_Step ($step++,"使用for循环打印出如下的字符。
11212312345");my $str= "";$str= $str.$_;if ($_==4) {$str= $str.$_+1;}print " $str\n";}#*******************##题3:my $str1 = "abc";my $str2 = "efg";#将上述2个字符串连接起来,并输出合并后的字符串长度#*******************#Fw_Print_Step ($step++,"将上述2个字符串\"$str1\"和\"$str2\"连接起来,并输出合并后的字符串长度");my $str =$str1.$str2;my $str_length=length($str);print "新字串$str的长度为:$str_length";#*******************##题4:#以逆序方式打印出字符串包含的各个字符,如变量为"123456789"则输出为"9","8",..."2","1". my $str1="abc123def456";#*******************#Fw_Print_Step ($step++,"以逆序方式打印出字符串包含的各个字符,如变量为\"123456789\"则输出为\"9\",\"8\",...\"2\",\"1\".");my $str=$str1;print "以逆序方式打印出字符串\"$str1\"包含的各个字符:\n";for($length=length($str1); $length>0; $length--) {$sub_str=chop($str);if ($length>1) {print "\"$sub_str\",";} else {print "\"$sub_str\".";}}#*******************##题5:#分别使用for与while循环来计算1+2+3+...+100的值#*******************#Fw_Print_Step ($step++,"分别使用for与while循环来计算1+2+3+...+100的值");print "用for循环计算1+2+3+...+100的值:\n ";my $result=0;for (1..100) {$result=$result+$_;}print "1+2+3+...+100=$result";print "\n用while循环计算1+2+3+...+100的值:\n ";my $result=0;my $num=1;while ($num<=100) {$result=$result+$num;$num++;}print "1+2+3+...+100=$result";#*******************##题6:#以逆序的方式打印出端口列表包含的成员口my @cmdArray = ("config", "int fa 0/1", "no shutdonw", "end");#*******************#Fw_Print_Step ($step++,"以逆序的方式打印出端口列表包含的成员口"); for (my $start=$#cmdArray; $start>=0; $start--) {my $array=$cmdArray[$start];print "$array\n";}#*******************##题7:#使用foreach打印出Hash表的所有下标与值my %map = ('red', 0xff0000,'green', 0x00ff00,'blue',0x0000ff);#*******************#Fw_Print_Step ($step++,"使用foreach打印出Hash表的所有下标与值"); foreach $capword (sort keys(%map)) {print ("$capword: $map{$capword}\n");}#while( ($key, $value) = Each (%Map)) {# Print "\N$key=$value;"}#*******************##题8:#使用正则匹配判断字符串是否包含error,若是打印提示信息。
试题python基础试题含答案
试题python基础试题含答案一、选择题(每题2分,共20分)1. 以下哪个是Python中的有效变量名?A. 2abcB. abc1C. abc-defD. 1abc答案:B2. 在Python中,哪个关键字用于定义类?A. functionB. classC. defD. return答案:B3. 以下哪个函数用于计算两个数的乘积?A. multiply()B. add()C. divide()D. subtract()答案:A4. 以下哪个模块用于操作文件和目录?A. osB. sysC. mathD. json答案:A5. 在Python中,哪个关键字用于定义函数?A. functionB. classC. defD. return答案:C6. 以下哪个语句用于遍历列表中的每个元素?A. for i in range(len(list)):B. for i in range(1, len(list)+1):C. for i in list:D. for i in range(list):答案:A7. 以下哪个函数用于随机生成一个整数?A. random.randint()B. random.random()C. random.randrange()D. random.choice()答案:A8. 以下哪个模块用于进行数学计算?A. mathB. osC. sysD. json答案:A9. 以下哪个关键字用于定义变量?A. intB. floatC. defD. var答案:D10. 以下哪个语句用于插入一个元素到列表的指定位置?A. list.insert(index, element)B. list.add(index, element)C. list.append(element)D. list.remove(element)答案:A二、填空题(每题2分,共20分)1. 在Python中,定义类的关键字是______。
Perl编程题-题目(1)
1.输出文件行数。
2.输出FASTA、FASTQ序列文件包含的序列条数。
3.将文件从最后一行一直输出到第一行。
4.FASTA序列反向互补。
5.FASTQ序列转FASTA序列。
6.输入文件:
输出要求:为文件中第一列(基因ID)添加描述信息。
6.根据基因ID将不同文件中该基因的某一统计信息整合输出到一个文件中。
输入文件:
11.将一个文件,按照任意给定的数字(行数),等分成几分,注意最后一份可能数据不足给出的行数。比如:一个文件10行,输入3,给出4个文件:1-3,4-6,7-9,10
输入文件:
12.求一个序列的GC含量,和N的比率。
输入文件:
输入文件:
输出要求:将两个文件中都有的基因输 Nhomakorabea,并输出其在不同文件中的log2值。
7.给出一个read,求其平均质量值。
输入文件:
8.给出两组序列,找出其中的公共序列(按名称处理)。perl
输入文件:
9.给出一条fa序列,提取其中的10-150这部分位点的序列出来(起始位点为1)。
输入文件:
10.统计fa格式的序列长度。
perl面试例题
Perl 第一阶段学习总结1 use strict 和use warnings 的作用?use strict 什么场合要用use strict?当你的程序有一定的行数时,尤其是在一页放不下时,或者是你找不到发生错误的原因时。
为什么要用 use strict?众多的原因之一是帮你寻找因为错误拼写造成的错误。
比如错误使用了'$recieve_date' 变量,但实际上你在程序中已声明的是 '$receive_date' 变量,这个错误就很难发现。
同样,use strict 迫使你把变量的范围缩到最小,使你不必担心同名变量在程序的其它部份发生不良作用。
(尽管这是 my 的功能,但是如果你使用 use strict 的话,它会强迫你用 my 声明变量,来达到上述目的)。
指定了use warnings;的话perl在编译的时候会将警告信息打印出来,否则不打印。
2 perl注释的方法?(1)‘#’用于注释单行(2) 注释一段=cut; #注释=cut 包围的代码………=cut;Or<<TXT; #注释<<TXT…TXT包围的代码………TXTOr__END__ #注释此行之后的所有代码………Or__DATA__ #可将__DATA__之后的代码作为程序的参数列表………3 单引号和双引号的区别?单引号不能内插且只能转义’\’,’’’两个字符。
双引号可以内插和转义所有字符。
4 print @array;print “@array”;print @array . “\n”有什么区别?Eg:my @array = qw/a b c/;Print @array; # abcPrint “@array” # a b c “内插时,会在数组各个元素之间自# 动添加分隔用的空格(小骆驼书原话)”Print @array . “\n” # 3 ‘.’是标量操作符,所以@array是#标量上下文。
pink练习题
pink练习题一、基础知识类1. 请列举出五种常见的编程语言及其主要用途。
2. 简述面向对象编程中的三大特性。
3. 请解释什么是数据结构,并列举出三种常见的数据结构。
4. 描述操作系统的五大功能。
5. 请说明计算机网络中的OSI七层模型。
6. 简述数据库的基本概念,包括数据库、数据库管理系统和SQL语言。
7. 请解释什么是算法,并列举出三种常见的排序算法。
8. 描述软件工程的五大过程模型。
9. 请说明计算机硬件系统的主要组成部分。
10. 简述计算机软件的分类。
二、编程实践类1. 编写一个Python程序,实现输入一个整数,输出它的阶乘。
2. 编写一个C++程序,实现输入一个字符串,输出它的反转形式。
3. 编写一个Java程序,实现一个简单的计算器功能,包括加、减、乘、除。
4. 编写一个JavaScript程序,实现一个简单的网页时钟。
5. 编写一个HTML和CSS代码,实现一个简单的网页布局。
6. 编写一个SQL查询语句,查询学生表中年龄大于18岁的学生信息。
7. 编写一个PHP程序,实现用户登录功能。
8. 编写一个React组件,实现一个待办事项列表。
9. 编写一个Node.js程序,实现一个简单的HTTP服务器。
10. 编写一个TypeScript程序,实现一个简单的类和对象。
三、算法与数据结构类1. 请用伪代码描述冒泡排序算法的实现过程。
2. 请用Python实现快速排序算法。
3. 请用C++实现链表的基本操作,包括插入、删除和查找。
4. 请用Java实现二叉树的前序遍历、中序遍历和后序遍历。
5. 请用JavaScript实现堆排序算法。
6. 请用PHP实现图的邻接矩阵表示和深度优先搜索。
7. 请用C实现哈希表的基本操作,包括插入、删除和查找。
8. 请用Go实现红黑树的插入操作。
9. 请用Rust实现跳表的数据结构。
10. 请用Swift实现并查集的数据结构。
四、操作系统与计算机网络类1. 请解释进程和线程的区别。
Perl练习题
2.12 练习写一个程序,计算半径为12.5的圆的周长。
圆周长等于2π(π约为3.1415926)乘以半径。
答案为78.5。
#!/usr/bin/perl$r=12.5;$pai=3.1415926 ;$C=2*$pai*$r;Print “$C\n”;修改上述程序,用户可以在程序运行时输入半径。
如果,用户输入12.5,则应得到和上题一样的结果。
#!/usr/bin/perl$r=<STDIN>;$pai=3.1415926 ;$C=2*$pai*$r;Print “$C\n”;修改上述程序,当用户输入小于0 的数字时,程序输出的周长为0,而非负数。
#!/usr/bin/perl$r=<STDIN>;$pai=3.1415926 ;if($r>=0){$C=2*$pai*$r;}If($r<0){$C=0;}Print “$C\n”;写一个程序,用户能输入2 个数字(不在同一行)。
输出为这两个数的积。
#!/usr/bim/perl$a=<STDIN>;$b=<STDIN>;$c=$a*$b;Print”$c”;写一个程序,用户能输入1 个字符串和一个数字(n)(不在同一行)。
输出为,n 行这个字符串,1 次1 行(提示,使用“x”操作符)。
例如,如果用户输入的是“fred”和“3”,则输出为:3 行,每一行均为fred。
如果输入为“fred”和“299792”,则输出为299792 行,每一行均为fred。
#!/usr.bin/perl$string=<STDIN>;$int=<STDIN>;$output=$string x $intprint $output;3.9练习写一个程序,将一些字符串(不同的行)读入一个列表中,逆向输出它。
如果是从键盘输入的,那在Unix 系统中应当使用CTRL+D 表明end-of-file,在Windows 系统中使用CTRL+Z.写一个程序,读入一串数字(一个数字一行),将和这些数字对应的人名(下面列出的)输出来。
perl 复习题 (答案)
PERL复习题(答案不是标准答案,仅供参考)一、选择题1. What is the simplest type of data that Perl can work with?A elementB scalarC vectorD component2. Which operator can be used to take the bottom item from an array?A popB pushC pullD plant3. Which operator is used to arrange items in character order?A ascendB sortC arrangeD descend4. Rather than using print, what is often used in Perl when formatting is important?A printfB formatC alignD show5. Which modifier can be used when matching in Perl to ignore case?A sB vC iD c6. Which operator can be used to break up a string into more than one part based upon a separator?A chopB splitC divideD parse7. What option do you use when starting Perl to tell it to run in warning mode? _-w \ use warnings (Fill in the blank.)8. Which control structure can be used to execute only a condition is false?A untilB unlessC whileD without9. Which of the following commands should be used to open a filehandle named KAREN to an existing file named sw?A open KAREN “>sw”;B open KAREN, “>sw”;C open “sw” KAREN;D open “>sw”, KAREN;10. Within Perl, which operator is used to change the working directory?A cdB chdirC pwdD wd11. Which operator can be used to access the first item in an array?A shiftB startC right$D left$12. Within a loop, which operator immediately ends execution of the loop?A nextB lastC redoD leave13. Which function can be used to make sure your program exits with a nonzero status even if there a standard error?A hashB noexitC nozeroD die14. Which of the following operators work most like simple searching/pattern matching?A /fB /gC s///D m//15. Which keyword is used in Perl to define a subroutine?A branchB subC splitD make16. You want to close the directory handle EV AN. Which of the following should you use to accomplish this?A close EV AN;B closedir EV AN;C close_directory EV AN;D none of the above17. Which of the following lines of code accomplishes the same thing as $price = $price + 9;?A $price +9;B $price =+9;C $price +=9;D 9 + $price18. What value do variables have before they are first assigned?A undefB nullC 0D nil19. Which Perl function can be used to launch a child process to run a program?A splitB spinC forkD system20. Which Perl function can be used to identify the first found occurrence of a substring?A findB indexC locateD allocate21. Which control structure can be used to loop as long as a conditional expression returns true?A untilB unlessC whileD without22. Which operator can be used to create private variables within a subroutine?A nativeB limitedC myD regional23. Which of the following operators is used to return a value in a subroutine?A returnB sendC giveD show24. Your script has just read in a variable from the keyboard and you want to strip that variable of the newline character that came in. What operator should you use to perform this operation?A tidyB trimC chompD slim25. What is the default sort order in Perl?A alphabeticB numericC ASCIID none of the above26. Within a loop, which operator jumps to the end of the loop but does not exit the loop?A nextB lastC redoD leave27. (不确定)Which of the following should be used to print values in an array that do not contain newlines and add them to the end of each entry?A print @array;B print @array\n;C print “@array\n”;D print “$@array \\”;28. Which string comparison operator would be equivalent to the numeric > operator?A neB eqC geD gt29. Which function can be thought of as the opposite of split?A linkB joinC uniteD bond30. Which operator can be used to add an item to the bottom of an array?A popB pushC pullD plant31. Which of the following mathematical operations has the highest precedence in Perl?A **B ++C +D -32. 以下哪一个字符串直接量的定义方式是错误的()(1)'thank you'(2)" "(3)"a "friend" of yours"(4)"a \"friend\" of yours"33. 以下哪一条语句是错误的()(1)$_= 'hello world';(2)$a='hello world';(3)my $b,$a='hello world';(4)my ($a,$b)=(0,'hello world');34. 要使下面的程序正常运行,while后的表达式应选()。
Perl语言入门实战习题[试题]
Perl语言入门实战习题[试题] 《Perl语言入门实战习题》一、计算FASTA文件中每条序列的长度; 输入文件,FASTA格式:注:如果输入文件在windows下产生,在Linux系统下操作时,宜先用dos2unix处理:用法:dos2unix 输入文件输出文件:Perl代码:#!/usr/bin/perl -wuse strict;unless (@ARGV==2) { # @ARGV 传给脚本的命令行参数列表die"Usage: perl $0 <input.fa> <out.len>\n"; # 当命令行参数不是2的时候输出使用说明 }my ($infile,$outfile) = @ARGV; # 把命令行参数赋值给输入文件和输出文件 open IN,$infile || die"error: can't open infile: $infile"; # 打开输入文件句柄IN open OUT,">$outfile" || die$!; # 打开输出文件句柄OUT $/=">";<IN>; # 设置输入记录分隔符为”>”,并去除第一个”>”while ( my $seq = <IN>){ # 把序列ID行和序列赋值给$seqmy $id = $1 if($seq =~ /^(\S+)/); # 获取序列IDchomp $seq; # 去掉末尾的”>”$seq =~ s/^.+?\n//; # 删除第一行$seq =~ s/\s//g; # 删除序列中的空白字符my $len = length($seq); # 计算序列长度print OUT "$id\t$len\n"; # 输出结果到输出文件}$/="\n"; # 把输入记录分隔符改为默认值close IN; # 关闭输入文件句柄close OUT; # 关闭输出文件句柄二、计算FASTA文件中每条序列的GC含量; 输入文件同上,输出文件:Perl代码:#!/usr/bin/perl -wuse strict;unless (@ARGV==2) {# @ARGV 传给脚本的命令行参数列表die"Usage: perl $0 <input.fa> <out.gc>\n";# 当命令行参数不是2的时候输出使用说明}my ($infile,$outfile) = @ARGV;# 把命令行参数赋值给输入文件和输出文件open IN,$infile || die"error: can't open infile: $infile";# 打开输入文件句柄IN open OUT,">$outfile" || die$!;# 打开输出文件句柄OUT$/=">";<IN>;# 设置输入记录分隔符为”>”,并去除第一个”>” while(<IN>){# $_=<IN>,把序列ID行和序列赋值给$_,$_= 可以省略不写my $id = $1 if(/^(\S+)/);# 获取序列IDchomp; # 去掉末尾的”>”s/^.+?\n//;# 删除第一行s/\s//g; # 删除序列中的空白字符my $GC = (tr/GC/GC/);#计算G或C碱基个数my $AT = (tr/AT/AT/);#计算A或T碱基个数my $len = $GC + $AT;# 计算序列非N长度my $gc_cont = $len ? $GC / $len : 0; #计算GC含量,如果长度为0,GC含量算0print OUT "$id\t$gc_cont\n"; # 输出结果到输出文件 }$/="\n";# 把输入记录分隔符改为默认值close IN; # 关闭输入文件句柄close OUT;# 关闭输出文件句柄三、求反相互补序列;输入文件同上,输出文件也是FASTA格式 Perl代码:#!/usr/bin/perl -wuse strict;unless (@ARGV==2) {# @ARGV 传给脚本的命令行参数列表die"Usage: perl $0 <input.fa> <out.gc>\n";# 当命令行参数不是2的时候输出使用说明}my ($infile,$outfile) = @ARGV;# 把命令行参数赋值给输入文件和输出文件open IN,$infile || die"error: can't open infile: $infile";# 打开输入文件句柄IN open OUT,">$outfile" || die$!;# 打开输出文件句柄OUT $/=">";<IN>;# 设置输入记录分隔符为”>”,并去除第一个”>” while (<IN>){# $_=<IN>,把序列ID行和序列赋值给$_,$_= 可以省略不写my $id = $1 if(/^(\S+)/);# 获取序列IDchomp; # 去掉末尾的”>”s/^.+?\n//;# 删除第一行s/\s//g; # 删除序列中的空白字符$_ = reverse $_; # 序列方向tr/ATCG/TAGC/; # 序列互补print OUT ">$id\n",$_,"\n"; # 输出结果到输出文件}$/="\n";# 把输入记录分隔符改为默认值close IN; # 关闭输入文件句柄close OUT;# 关闭输出文件句柄四、列表信息整合;输入列表1:序列长度文件输入文件2:序列测序覆盖深度文件输出文件:把上述两个列表的信息整合成一个列表,并且最后一行给出汇总结果:Perl代码#!/usr/bin/perl -wuse strict;(@ARGV==3) || die"Usage: perl $0 <list1> <list2> <combine.list>\n"; # 当命令行参数不是3的时候输出使用说明my ($infile1,$infile2,$outfile) = @ARGV;# 把命令行参数赋值给输入文件1、输入文件2和输出文件 my %id_len; # 定义一个哈希open IN1,$infile1 || die$!; # 打开第一个文件句柄while(<IN1>){my ($id,$len) = split /\s+/,$_; # split函数用空白符号切割每一行的内容$id_len{$id} = $len; # 哈希赋值:id => length}close IN1; # 关闭第一个文件句柄open IN2,$infile2 || die$!; # 打开第2个文件句柄open OUT,">$outfile" || die$!; # 打开输出文件句柄my $tol_len = 0; # 定义总长度变量,并赋值为0my $tol_depth = 0; # 定义总深度变量,并赋值为0while (<IN2>){my ($id,$depth) = split; # split函数用空白符号切割每一行的内容my $len = $id_len{$id}; # 序列长度print OUT join("\t",$id,$len,$depth),"\n"; # 输出整合信息到输出文件$tol_len += $len; # 长度累加$tol_depth += $len * $depth; # 深度累加}$tol_depth /= $tol_len; # 计算总体平均深度print OUT "Total\t$tol_len\t$tol_depth\n"; # 输出汇总结果到输出文件close IN2; # 关闭第二个输入文件句柄close OUT; # 关闭输出文件句柄五、串流程;Perl在工作中常用于串流程,现有同事写了3个perl脚本分三步将输入文件,infile.txt处理成最终的final.result:第1步:perl step1.pl infile.txt output1 第2步:perl step2.pl infile.txt output2 第3步:perl step3.pl output1 output2 final.result为提高工作效率,现需要写一个脚本使用infile.txt 作为输入文件,直接得到final.result,中间产生的文件结果不保留。
1-语言基础习题-参考答案
《Delphi语言基础》习题答案一、填空1..dpr (或dpr) 2. PAS 3. 属性或 Properties4. .dpr5. 事件选项卡6. sin(a+b) /(3+ sqr(y))-a*b 或 sin(a+b)/(3+y*y)-a*b7. sqr(cos(a+b)) /(sqr(a)+x*y)+a 或 cos(a+b) * cos(a+b) /(a*a+x*y)+a8. 分支9. sqr(sin(x+y)) / sin(sqr(x) + sqr(y))10. 一11. sqr(sin(a+b*y)) /(sqr(a)*x)+a 或 sin(a+b*y) * sin(a+b*y) /(a*a*x)+a12. sqr(cos(a+b)) /(3*x)+5 或 cos(a+b) * cos(a+b) /(3*x)+513. True 14. sqr(sin(a+b))/(3*y)+a*b15. 12345.68 16. sqr(sin(x+y))/sin(sqr(x)+sqr(y))17. 69 18. False 19. const p=3.1420. 1 21. break 22. ‘xz’23. 形式参数(形参)24. 90 25. Continue26. 有序27. 局部28. 过程定义、调用二、选择1-5:D BDBD 6-10:CACCD 11-15:ACDBC16-20:ACBCC 21-25:CCDAC 26-30:DCACB31-35:DCABD 36-40:ADCDB 41-45:BDADB46-50:ACADB 51-55:CABDB三、判断1-6: ⨯√⨯√√⨯四、程序填空题(10分,每空2分)① Text ② do③ sum + i ④ sum⑤判断奇偶性的函数(若输入值为奇数,函数值为真,否则为假)。
五、编程题1.ANSWER:procedure TForm1.Button1Click(Sender: TObject);Vara,b,ad,su,pr,di:real;Procedure fourp(x,y:real;Var add,sub,pro,divt:real);Beginadd:=x+y;sub:=x-y;pro:=x*y;IF y=0 THEN edit3.text:=’被除数为0’ELSE divt:=x/yEnd;Begina:=strtofloat(edit1.text); b:=strtofloat(edit2.text);fourp(a,b,ad,su,pr,di);Memo1.Lines.Add(Format('%.5f%.5f%.5f.5f',[ad,su,pr,di])) End;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); beginIF NOT((key=#8)OR(key='.')OR(key>=#48)AND(key<=#57))THEN key:=#0end;2.procedure TForm1.Button1Click(Sender: TObject);CONSTEPS=1E-6;VARx,d:real;beginx:=strtofloat(Edit1.Text);REPEATd:=(3*exp(3*ln(x))-4*x*x+5*x-13)/(9*x*x-8*x+5);x:=x-dUNTIL abs(d)<EPS;Edit2.Text:=format('%.6f',[x])end;3.procedure TForm1.Button1Click(Sender: TObject);VARHorse1,horse2,house3:integer;beginMemo1.Clear;FOR horse1:=0 TO 100 DOFOR horse2:=0 TO 100 DOFOR hoese3:=0 TO 100 DOBEGINIF (horse1+hoese2+hoese3=100)AND(3*horse1+2*hoese2+hoese3/2=200)THENMemo1.Lines.Add(Format('%10d%10d%10d',[hoese1,oese2,hoese3]))ENDend;4.procedure TForm1.Button3Click(Sender: TObject);VARi,j:1..9;s:string;beginmemo1.Clear;FOR i:=1 TO 9 DOBEGINs:='';FOR j:=1 TO i DO s:=s+format('%d*%d=%-4d',[j,i,j*i]); Memo1.Lines.Add(s);ENDend;5.(同学们自己做)6.ANSW procedure TForm1.Button1Click(Sender: TObject);Var r,C,S : real;beginr := StrToFloat(edit1.Text);C := 2*PI*r;S := PI*r*r; //或者为PI*sqr(r)edit2.Text := FloatToStr(C);edit3.Text := FloatToStr(S);end;procedure TForm1.Button2Click(Sender: TObject);beginClose;end;六、简答题1.在Delphi中,什么是对象的属性、方法和事件?一个对象是由属性、方法和事件所组成。
Perl语言入门(第四版)习题标准答案
Perl语言入门(第四版)习题答案————————————————————————————————作者:————————————————————————————————日期:《Perl语言入门习题答案》2.12 练习1、写一个程序,计算半径为12.5的圆的周长。
圆周长等于2π(π约为3.1415926)乘以半径。
答案为78.5。
-----------------------/home/confish/perl/girth#!/usr/bin/perl -w#this program calculate a circle's girth#confish@ubuntu7.10$r=12.5;$g=12.5*2*3.1415;print "the girth of the circle is $g\n";-----------------------/home/confish/perl/girth2、修改上述程序,用户可以在程序运行时输入半径。
如果,用户输入12.5,则应得到和上题一样的结果。
-----------------------/home/confish/perl/girthpro#!/usr/bin/perl -w#a better one to calculate girth#confish@ubuntu7.10print"enter the radius of the circle\n";chomp($r=<STDIN>);if($r>0){print"the girth of the circle is ".$r*2*3.1415."\n";}else{print"nonavailable!\n";}-----------------------/home/confish/perl/girthpro3、修改上述程序,当用户输入小于0 的数字时,程序输出的周长为0,而非负数。
Perl面试题
Perl语言面试题1.问题:什么是Perl?答案:Perl是一种解释型、功能丰富的编程语言,它具有动态的特性,能够处理文本和数据,非常适合用于文本处理、系统管理、网络编程、数据库操作等任务。
2.问题:Perl的基本语法是什么?答案:Perl的基本语法包括变量声明、控制结构(如if、while等)、循环结构(如for、foreach等)、函数定义和调用等。
3.问题:在Perl中如何声明变量?答案:在Perl中,可以使用$符号来声明变量,例如$var = 10;。
4.问题:在Perl中如何进行字符串操作?答案:Perl提供了丰富的字符串操作函数,如substr、index、length、tr 等,可以进行字符串的切割、查找、替换等操作。
5.问题:在Perl中如何进行数组操作?答案:Perl支持数组操作,可以使用@符号来声明数组,并使用push、pop、shift、unshift等函数进行数组的添加、删除、移除等操作。
6.问题:在Perl中如何进行文件操作?答案:Perl提供了丰富的文件操作函数,如open、readline、readlines 等,可以进行文件的打开、读取、写入等操作。
7.问题:在Perl中如何进行正则表达式匹配?答案:Perl支持正则表达式匹配,可以使用正则表达式函数如qr()和m()来进行模式匹配和替换操作。
8.问题:在Perl中如何使用循环结构?答案:Perl支持多种循环结构,如for、foreach、while等,可以根据需要选择合适的循环结构进行迭代操作。
9.问题:在Perl中如何定义和使用函数?答案:在Perl中,可以使用sub关键字定义函数,并使用&符号调用函数。
函数可以接受参数并返回值。
10.问题:请举一个使用Perl进行文本处理的例子?答案:例如,使用Perl提取一个文本文件中的特定行,可以根据行号或关键字进行提取。
具体实现可以使用open函数打开文件,并使用readline或readlines函数逐行读取文件内容,根据条件筛选出需要的行。
perl 正则表达式例题
perl 正则表达式例题Perl是一种流行的编程语言,它支持强大的正则表达式功能。
正则表达式是一种用来匹配字符串模式的工具,它可以帮助我们快速地查找、替换和提取文本中的信息。
在Perl中,我们可以使用正则表达式来完成各种字符串操作,下面我将通过一些例题来介绍Perl正则表达式的基本用法。
首先,让我们来看一个简单的例子。
假设我们有一个字符串“hello world”,现在我们想要匹配其中的“hello”这个单词。
在Perl中,我们可以使用=~/操作符来进行正则表达式匹配,如下所示:```perlmy $str = "hello world";if ($str =~ /hello/) {print "Matched\n";} else {print "Not matched\n";}```在上面的代码中,我们使用了“=~”操作符来判断$str字符串中是否包含“hello”这个单词。
如果匹配成功,则输出“Matched”,否则输出“Not matched”。
接下来,让我们来看一个稍复杂一点的例子。
假设我们有一个包含多个email 地址的字符串,现在我们想要提取其中的所有email地址。
在Perl中,我们可以使用正则表达式的“/(\w+@\w+\.\w+)/”模式来匹配email地址,如下所示:```perlmy$str="Email:***************,**************";my @emails = $str =~ /(\w+@\w+\.\w+)/g;foreach my $email (@emails) {print "$email\n";}```在上面的代码中,我们使用了“/(\w+@\w+\.\w+)/”模式来匹配email地址,并通过“/g”修饰符来获取所有匹配的email地址。
Perl语言入门习题
Perl语言入门习题_第四章1.[12]写一个名为&total 的子程序,返回一列数字的和。
提示:子程序不应当有任何的 I/O 操作;它处理调用的参数,返回处理后的值给调用者。
结合下面的程序来练习,它检测此子程序是否正常工作。
第一组数组之和我25。
2.[5]利用上题的子程序,写一个程序计算从 1 到1000的数字的和3.[18]额外的练习:写一个子程序,名为&above_average,将一列数字作为其参数,返回所有大于平均值的数字(提示:另外写一个子程序来计算平均值,总和除以数字的个数)。
#!/usr/bin/perluse strict;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";sub total{my $sum;for(@_){$sum += $_;}return $sum;}#!/usr/bin/perluse strict;my @tmp = 1..1000;my $sum = &total(@tmp);print "total is : $sum.\n";sub total{my $sum;for(@_){$sum += $_;}return $sum;}#!/usr/bin/perluse strict;my @fred = &above_average(1..10);print "\@fred is @fred\n";print "(Should be 6 7 8 9 10)\n";my @barney = &above_average(100, 1..10); print "\@barney is @barney\n";print "(Should be just 100)\n";sub above_average{my $sum = &total(@_);my $average = $sum / @_;my @result;foreach(@_){if($_ > $average){push @result , $_ ;}}return @result;}sub total{my $sum;for(@_){$sum += $_;}return $sum;}----------------------------------------------------------------------------------Perl语言入门习题_第五章1.[7] 写一个程序,类似于cat,但保持输出的顺序关系。
perl 期末考试题.pptx
学海无 涯
41. 上题的程序表达式 2 处应为( ) 1 @$point 2 $point 3 @point 4 \@point 42. 模式/[^\d^-]/能匹配下面哪个字符串?( ) (1)-10 (2)200 (3)abc123 (4)#%@ 43. 以下哪个程序段能够显示哈希结构%abcd 中所有的元素?( ) (1)foreach $Var (keys %abcd)
学海无 涯
PERL 复习题
一、选择题 B 1. What is the simplest type of data that Perl can work with? A element B. scalar C. vector D. component 2. Which operator can be used to take the bottom item from an array? A pop B. push C. pull D. plant 3. Which operator is used to arrange items in character order? A ascend B. sort C. arrange D. descend 4. Rather than using print, what is often used in Perl when formatting is important? A printf B. format C. align D. show 5. Which modifier can be used when matching in Perl to ignore case? As B. v C. i D. c 6. Which operator can be used to break up a string into more than one part based upon a separator? A. chop B. split C. divide D. parse 7.What option do you use when starting Perl to tell it to run in warning mode? (Fill in the blank.) 8.Which control structure can be used to execute only a condition is false? A until B. unless C. while D. without 9. Which of the following commands should be used to open a filehandle named KAREN to an existing file named sw? A open KAREN “>sw”; B open KAREN, “>sw”;
Perl基础知识点
开始学习Perl1.以#开始的语句表示注释。
Perl语句以分号表示结束。
2.Perl语言中也有转义字符,这点与C语言类似。
3.$表示该符号后所跟的字符串是一个标量变量,即该变量只能保存一个数值或者字符串。
Perl语言中有两种变量,标量变量和数组变量。
4.在Unix中,所有程序都拥有三个打开的文件:STDIN(标准输入)STDOUT(标准输出)STDERR(标准错误)。
Perl当然可以使用这三个。
5.使用chomp命令可以去掉多余的数据,主要是针对回车和换行。
每个系统都配置了该命令,用于去掉注释的行末尾符号。
6.Perl语言用于字符串比较的操作符。
eq(等于)ge(大于等于)gt(大于)le(小于等于)lt(小于)ne(不等于)cmp(字符串比较)。
7.在Unix中,可以把Perl脚本转换成一个可执行的程序。
Perl基础知识1.控制Perl脚本--while命令,和C语言的一样。
2.控制Perl脚本--until命令,实现与while正好相反的控制,只要条件为假,程序块不断被执行,直到条件为真结束。
3.控制Perl脚本--if命令,和C语言的一样。
4.控制Perl脚本--unless命令,与if语句相反,当条件不为真是执行。
语句格式与if的一样。
5.控制Perl脚本--for循环,和C语言的一样。
6.控制Perl脚本--foreach语句,使得对列表或数组中的每一个元素进行循环。
7.Perl语言的所有数学运算都以双精度的浮点数进行。
如果想使用整数操作,则需要在程序块中增加这样的语句:use integer;8.单引号所引起的为字符串本身,Perl对单引号中的内容提供了较少的解释。
9.双引号中的内容,Perl对其进行较多的解释,可以有转义字符,用变量的值替代变量。
10.如果数据本身已经有引号,可以使用q操作符生成字符串,产生一个单引号的字符串。
$var=q('Single-quoted string');11.q q可以数据本身含有双引号的字符串,用法与q相似。
Perl+习题答疑
Perl 习题(11)1 写一个程序,将一些字符串(不同的行)读入一个列表中,逆向输出它。
如果是从键盘输入的,那在Unix 系统中应当使用CTRL+D 表明end-of-file,在Windows 系统中使用CTRL+Z.(第3章习题)unless(@ARGV) {die "<input file> <output file>\n";}open(IN,"<$ARGV[0]") or die;my @line=<IN>;open(OUT,">$ARGV[1]") or die;foreach(reverse(@line)) {print OUT "$_";}2 写一个子程序,名为&above_average,将一列数字作为其参数,返回所有大于平均值的数字(提示:另外写一个子程序来计算平均值,总和除以数字的个数)。
利用下面的程序进行测试:(第4章习题)my @fred = &above_average(1..10);print "\@fred is @fred\n";print "(Should be 6 7 8 9 10)\n";my @barney = &above_average(100, 1..10);print "\@barney is @barney\n";print "(Should be just 100)\n";#!\usr\bin\perl -wuse strict;my @fred = &above_average(1..10);print "\@fred is @fred\n";print "(Should be 6 7 8 9 10)\n";my @barney = &above_average(100, 1..10);print "\@barney is @barney\n";print "(Should be just 100)\n";sub above_average{my @in=@_;my $average_value=&average(@in);my @out;foreach(@in) {if($_>$average_value){push @out,$_;}}return @out;}sub average {my @in=@_;my $sum=0;foreach(@in){$sum+=$_;}return $sum;}3 写一个程序,要求用户在不同的行中输入一些字符串,将此字符串打印出来,规则是:每一条占20 个字符宽度,右对齐。
Perl语言入门实战习题[试题]
Perl语言入门实战习题[试题] 《Perl语言入门实战习题》一、计算FASTA文件中每条序列的长度; 输入文件,FASTA格式:注:如果输入文件在windows下产生,在Linux系统下操作时,宜先用dos2unix处理:用法:dos2unix 输入文件输出文件:Perl代码:#!/usr/bin/perl -wuse strict;unless (@ARGV==2) { # @ARGV 传给脚本的命令行参数列表die"Usage: perl $0 <input.fa> <out.len>\n"; # 当命令行参数不是2的时候输出使用说明 }my ($infile,$outfile) = @ARGV; # 把命令行参数赋值给输入文件和输出文件 open IN,$infile || die"error: can't open infile: $infile"; # 打开输入文件句柄IN open OUT,">$outfile" || die$!; # 打开输出文件句柄OUT $/=">";<IN>; # 设置输入记录分隔符为”>”,并去除第一个”>”while ( my $seq = <IN>){ # 把序列ID行和序列赋值给$seqmy $id = $1 if($seq =~ /^(\S+)/); # 获取序列IDchomp $seq; # 去掉末尾的”>”$seq =~ s/^.+?\n//; # 删除第一行$seq =~ s/\s//g; # 删除序列中的空白字符my $len = length($seq); # 计算序列长度print OUT "$id\t$len\n"; # 输出结果到输出文件}$/="\n"; # 把输入记录分隔符改为默认值close IN; # 关闭输入文件句柄close OUT; # 关闭输出文件句柄二、计算FASTA文件中每条序列的GC含量; 输入文件同上,输出文件:Perl代码:#!/usr/bin/perl -wuse strict;unless (@ARGV==2) {# @ARGV 传给脚本的命令行参数列表die"Usage: perl $0 <input.fa> <out.gc>\n";# 当命令行参数不是2的时候输出使用说明}my ($infile,$outfile) = @ARGV;# 把命令行参数赋值给输入文件和输出文件open IN,$infile || die"error: can't open infile: $infile";# 打开输入文件句柄IN open OUT,">$outfile" || die$!;# 打开输出文件句柄OUT$/=">";<IN>;# 设置输入记录分隔符为”>”,并去除第一个”>” while(<IN>){# $_=<IN>,把序列ID行和序列赋值给$_,$_= 可以省略不写my $id = $1 if(/^(\S+)/);# 获取序列IDchomp; # 去掉末尾的”>”s/^.+?\n//;# 删除第一行s/\s//g; # 删除序列中的空白字符my $GC = (tr/GC/GC/);#计算G或C碱基个数my $AT = (tr/AT/AT/);#计算A或T碱基个数my $len = $GC + $AT;# 计算序列非N长度my $gc_cont = $len ? $GC / $len : 0; #计算GC含量,如果长度为0,GC含量算0print OUT "$id\t$gc_cont\n"; # 输出结果到输出文件 }$/="\n";# 把输入记录分隔符改为默认值close IN; # 关闭输入文件句柄close OUT;# 关闭输出文件句柄三、求反相互补序列;输入文件同上,输出文件也是FASTA格式 Perl代码:#!/usr/bin/perl -wuse strict;unless (@ARGV==2) {# @ARGV 传给脚本的命令行参数列表die"Usage: perl $0 <input.fa> <out.gc>\n";# 当命令行参数不是2的时候输出使用说明}my ($infile,$outfile) = @ARGV;# 把命令行参数赋值给输入文件和输出文件open IN,$infile || die"error: can't open infile: $infile";# 打开输入文件句柄IN open OUT,">$outfile" || die$!;# 打开输出文件句柄OUT $/=">";<IN>;# 设置输入记录分隔符为”>”,并去除第一个”>” while (<IN>){# $_=<IN>,把序列ID行和序列赋值给$_,$_= 可以省略不写my $id = $1 if(/^(\S+)/);# 获取序列IDchomp; # 去掉末尾的”>”s/^.+?\n//;# 删除第一行s/\s//g; # 删除序列中的空白字符$_ = reverse $_; # 序列方向tr/ATCG/TAGC/; # 序列互补print OUT ">$id\n",$_,"\n"; # 输出结果到输出文件}$/="\n";# 把输入记录分隔符改为默认值close IN; # 关闭输入文件句柄close OUT;# 关闭输出文件句柄四、列表信息整合;输入列表1:序列长度文件输入文件2:序列测序覆盖深度文件输出文件:把上述两个列表的信息整合成一个列表,并且最后一行给出汇总结果:Perl代码#!/usr/bin/perl -wuse strict;(@ARGV==3) || die"Usage: perl $0 <list1> <list2> <combine.list>\n"; # 当命令行参数不是3的时候输出使用说明my ($infile1,$infile2,$outfile) = @ARGV;# 把命令行参数赋值给输入文件1、输入文件2和输出文件 my %id_len; # 定义一个哈希open IN1,$infile1 || die$!; # 打开第一个文件句柄while(<IN1>){my ($id,$len) = split /\s+/,$_; # split函数用空白符号切割每一行的内容$id_len{$id} = $len; # 哈希赋值:id => length}close IN1; # 关闭第一个文件句柄open IN2,$infile2 || die$!; # 打开第2个文件句柄open OUT,">$outfile" || die$!; # 打开输出文件句柄my $tol_len = 0; # 定义总长度变量,并赋值为0my $tol_depth = 0; # 定义总深度变量,并赋值为0while (<IN2>){my ($id,$depth) = split; # split函数用空白符号切割每一行的内容my $len = $id_len{$id}; # 序列长度print OUT join("\t",$id,$len,$depth),"\n"; # 输出整合信息到输出文件$tol_len += $len; # 长度累加$tol_depth += $len * $depth; # 深度累加}$tol_depth /= $tol_len; # 计算总体平均深度print OUT "Total\t$tol_len\t$tol_depth\n"; # 输出汇总结果到输出文件close IN2; # 关闭第二个输入文件句柄close OUT; # 关闭输出文件句柄五、串流程;Perl在工作中常用于串流程,现有同事写了3个perl脚本分三步将输入文件,infile.txt处理成最终的final.result:第1步:perl step1.pl infile.txt output1 第2步:perl step2.pl infile.txt output2 第3步:perl step3.pl output1 output2 final.result为提高工作效率,现需要写一个脚本使用infile.txt 作为输入文件,直接得到final.result,中间产生的文件结果不保留。
upupup练习题
upupup练习题一、基础概念理解a) 算法b) 数据结构c) 时间复杂度d) 空间复杂度2. 请列举五种常见的数据结构及其应用场景。
3. 请简述冒泡排序的基本原理。
4. 请说明递归与迭代的主要区别。
5. 请解释静态变量与实例变量的区别。
二、编程基础1. 编写一个Python函数,实现输入字符串的反转。
2. 编写一个C++程序,实现一个简单的计算器功能。
3. 编写一个Java程序,实现一个学生管理系统,包括添加、删除、查询学生信息。
4. 编写一个JavaScript函数,实现输入数字的阶乘。
5. 编写一个HTML和CSS代码,实现一个简单的网页布局。
三、算法设计与分析1. 请设计一个算法,找出一个整数数组中的最大值和最小值。
2. 请设计一个算法,实现两个有序数组合并成一个有序数组。
3. 请设计一个算法,判断一个字符串是否为回文。
4. 请设计一个算法,找出一个整数数组中的所有重复元素。
5. 请设计一个算法,实现二分查找。
四、数据结构应用1. 请使用链表实现一个简单的LRU缓存。
2. 请使用栈实现一个逆波兰表达式求值。
3. 请使用队列实现一个简单的广度优先搜索。
4. 请使用二叉树实现一个简单的表达式求值。
5. 请使用哈希表实现一个简单的单词计数。
五、综合应用1. 请编写一个程序,实现文件压缩和解压缩。
3. 请编写一个程序,实现一个简单的图像处理功能。
4. 请编写一个程序,实现一个简单的神经网络。
5. 请编写一个程序,实现一个简单的机器学习算法。
六、算法优化与改进1. 请优化冒泡排序算法,使其在最佳情况下达到O(n)的时间复杂度。
2. 请实现快速排序算法,并分析其平均和最坏情况下的时间复杂度。
3. 请实现一个高效的字符串匹配算法,如KMP算法。
4. 请实现一个动态规划算法,求解最长公共子序列问题。
5. 请实现一个贪心算法,解决背包问题。
七、面向对象编程1. 请定义一个Python类,实现一个简单的银行账户管理系统,包括存款、取款、查询余额等功能。
perl面试题目(3篇)
第1篇第一部分:基础知识1. Perl语言简介- 请简述Perl语言的特点和适用场景。
- Perl与Python、PHP等其他语言的异同。
2. Perl语法基础- 解释Perl中的变量类型(局部变量、全局变量、文件句柄变量等)。
- 解释Perl中的标量、数组、哈希(散列表)的概念和区别。
- 举例说明Perl中的特殊变量,如`$$_`、`$1`、`$2`等。
- 解释Perl中的字符串操作函数,如`substr`、`index`、`length`等。
3. 数据结构- 描述Perl中数组的创建、访问、遍历方法。
- 描述Perl中哈希的创建、访问、遍历方法。
- 举例说明Perl中数组和哈希的关联操作。
4. 控制结构- 解释Perl中的if语句、while循环、for循环、foreach循环。
- 描述Perl中的流程控制语句,如`goto`、`last`、`next`等。
- 解释Perl中的条件运算符和位运算符。
5. 函数- 描述Perl中函数的定义和调用。
- 解释Perl中的匿名函数(子程序)。
- 描述Perl中递归函数的概念和实现。
6. 文件操作- 解释Perl中文件操作的基本概念,如打开、读取、写入、关闭文件。
- 描述Perl中文件模式(文本模式和二进制模式)的区别。
- 举例说明Perl中文件和目录操作,如`opendir`、`readdir`、`mkdir`、`rmdir`等。
7. 正则表达式- 解释Perl中的正则表达式概念。
- 描述Perl中的正则表达式模式匹配方法,如`/pattern/`、`qr{pattern}`等。
- 举例说明Perl中的正则表达式捕获、替换和引用。
8. 编程规范- 解释Perl编程中的命名规范。
- 描述Perl代码的注释和文档编写规范。
- 解释Perl代码的模块化设计原则。
第二部分:高级特性1. 嵌套结构- 描述Perl中嵌套数组和嵌套哈希的概念。
- 举例说明如何遍历嵌套结构。
Perl语言入门习题答案
P e r l语言入门(第四版)习题答案(总22页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《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/girthzero1、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 个数字(不在同一行)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}else{ print "unkown:$_\n"; } print "given name:\n"; }
#!/usr/bin/perl use strict; my @array = <STDIN>; print "1234567890"x4; print "\n"; foreach(@array) { printf "%20s",$_;
} #!/usr/bin/perl use strict; my @array = <STDIN>; my $long = shift @array; print "1234567890"x10; print "\n"; foreach(@array) { printf "%*s",$long+1,$_; }
sub above_average { my $sue = $sum / @_; my @result; foreach(@_) { if($_ > $average) { push @result , $_ ; } } return @result; }
sub total { my $sum; for(@_) { $sum += $_; } return $sum; }
#!/usr/bin/perl use strict; my @tmp = 1..1000; my $sum = &total(@tmp); print "total is : $sum.\n"; sub total { my $sum; for(@_)
{ $sum += $_; } return $sum; }
#!/usr/bin/perl use strict; my @fred = &above_average(1..10); print "\@fred is @fred\n"; print "(Should be 6 7 8 9 10)\n"; my @barney = &above_average(100, 1..10); print "\@barney is @barney\n"; print "(Should be just 100)\n";
1.[7] 写一个程序,类似于 cat,但保持输出的顺序关系。(某些系统的名字可能是 tac。)如果运行 此程序:./tac fred barney betty, 输出将是文件 betty 的内容,从最后一行到第一行,然后是 barney, 最后 是 fred, 同样是从最后一行到第一行。(注意使用 ./确保调用的是你自己的程序,而非系统提供的) 2.[8]写一个程序,要求用户在不同的行中输入一些字符串,将此字符串打印出来,规则是:每一条 占 20 个字符宽度,右对齐。 为了确保正确的输出,在开头打印出一串数字作为比较(帮助调试)。 注意,不要犯 19 个字符宽度的错误。例如,如果输入,hello, good-bye,则输出为: 123456789012345678901234567890123456789012345678901234567890 hello good-bye 3.[8]修改上一个程序,允许用户选择宽度,如,用户输入 30,hello, good-bye(在不同的行中),则每 一行的宽度为 30。(提示:参阅第二章相应部分)。提示,如果选择的宽度太长,可以增加比较行的 长度。 #!/usr/bin/perl use strict; my $input; while(defined($input=<>)) { printf $input; }
sub total { my $sum; for(@_) { $sum += $_;
} return $sum; }
----------------------------------------------------------------------------------
Perl 语言入门习题_第五章
Perl 语言入门习题_第四章
1.[12]写一个名为 &total 的子程序,返回一列数字的和。提示:子程序不应当有任何的 I/O 操作;它 处理调用的参数,返回处理后的值给调用者。结合下面的程序来练习,它检测此子程序是否正常工作。 第一组数组之和我 25。 2.[5]利用上题的子程序,写一个程序计算从 1 到 1000 的数字的和 3.[18]额外的练习:写一个子程序,名为 &above_average,将一列数字作为其参数,返回所有大于平 均值的数字(提示:另外写一个子程序来计算平均值,总和除以数字的个数)。 #!/usr/bin/perl use strict; 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";
#! /usr/bin/perl use strict; my %hash_name = ("fred"=> "flintstone","barney"=> "rubble","wilma"=> "flintstone",);
print "given name:\n"; while(<STDIN>){ chomp $_; if(exists $hash_name{$_}){ print "$_ => $hash_name{$_}\n"; }else{ print "unkown:$_\n"; } print "given name:\n"; }
Perl 语言入门习题_第六章
1.[7]写一个程序,提示用户输入 given name(名),并给出其对应的 family name(姓)。使用你知 道的人名,或者表 6-1(如果你在计算机上花了太多时间,以致什么人都不认识) 2.[15]写一个程序,读入一串单词(一个单词一行)◆,输出每一个单词出现的次数。(提示:如果某 个作为数字使用值是 undefined 的,会自动将它转换为 0。)如果输入单词为 fred, barney, dino, wilma, fred(在不同行中),则输出的 fred 将为 2。作为额外的练习,可以将输出的单词按照 ASCII 排序。 #! /usr/bin/perl use strict; my %hash_name = ("fred"=> "flintstone","barney"=> "rubble","wilma"=> "flintstone",);