第 1 页,共 5 页
任课教师签名: 命题教师签名: 系主任签名: 主管院长签名:
湛江师范学院2015-2016学年度第 1学期 期中试卷 课程:LINUX 平台及应用/LINUX 操作系统
一、编写过滤器(25分)。
由文本文件roll.txt 生成HTML 文件roll.html 。
如roll.txt 为: 2012324128 张维 2012324129 莫东灵 2012324136 蔡翠云 2013324101 李桂梅 ... 2013324157 陈若林 则生成的roll.html 为: <table> <tr><td> 2012324128 </td><td> 张维 </td></tr> <tr><td> 2012324129 </td><td> 莫东灵 </td></tr> ... <tr><td> 2013324157 </td><td> 陈若林 </td></tr> </table> 解: sed -e '1i <table>' -e '/[0-9]/ s/ /<\/td><td>/' -e '/^[0-9]/ s/^/<tr><td>/' -e '/[0-9]/ s/$/<\/td><\/tr>/' -e '$a <\/table>' roll.txt>roll.html
第 2 页,共 5 页
二、C 编程及作图。
(50分,单学号者做第1小题,双学号者
做第2小题) 1)编程C 程序输出图中各顶点;(35)
2)gnuplot 作图,并在Windows 中用浏览器查看该图,检验正确性。
(15分) 1. 画右图所示的螺线。
螺线起点在原点,首段长度0.2,角度0。
每一段比上一段长度大0.2,角度大
-144o 。
程序的输出(共50行)为:
0.0000 0.0000
0.5000 0.0000
-0.3090 -0.5878
…
0.1545 12.6677
7.7254 -10.6331
2. 画右图所示的四个五角星。
五角星半径
0.75,中心分别位于(0,2),(0,-2),
(2,0),(-2,0)。
五角星相邻两顶点半径
的比例为0.381966。
输出为:
0.0000 2.7500
-0.1684 2.2318
...
0.0000 2.7500
0.0000 -1.2500
-0.1684 -1.7682
...
0.0000 -1.2500
...
解:
Mkdir aa
cd aa
pwd
ls
cat >aa.plot
set terminal png
set output "/var/www/html/aa.png"
第 3 页,共 5 页
set size ratio 1 plot 'aa.dat' with lines vi aa.c #include<stdio.h> #include<math.h> main(){ double pi =4*atan(1),r=0.75,r1=0.381966*r,a0,b0,c0,d0,a1,b1,c1,d1,a2,b2,c2,d2,a3,b3,c3,d3,x0,x1,x2,x3,y0,y1,y2,y3; int i; x0=0,y0=2,x1=0,y1=-2,x2=2,y2=0,x3=-2,y3=0; for(i=0;i<=5;i++){ a0=x0+r*sin(-2*i*pi/5); b0=y0+r*cos(-2*i*pi/5); c0=x0+r1*sin(-(pi/5+2*i*pi/5)); d0=y0+r1*cos(-(pi/5+2*i*pi/5)); printf("%7.4f%10.4f\n\n",a0,b0); printf("%7.4f%10.4f\n\n",c0,d0); } for(i=0;i<=5;i++){ a1=x1+r*sin(-2*i*pi/5); b2=y1+r*cos(-2*i*pi/5); c1=x1+r1*sin(-(pi/5+2*i*pi/5)); d1=y1+r1*cos(-(pi/5+2*i*pi/5)); printf("%7.4f%10.4f\n\n",a1,b1); printf("%7.4f%10.4f\n\n",c1,d1); } for(i=0;i<=5;i++){ a2=x2+r*sin(-2*i*pi/5); b2=y2+r*cos(-2*i*pi/5); c2=x2+r1*sin(-(pi/5+2*i*pi/5)); d2=y2+r1*cos(-(pi/5+2*i*pi/5)); printf("%7.4f%10.4f\n\n",a2,b2); printf("%7.4f%10.4f\n\n",c2,d2); } for(i=0;i<=5;i++){ a3=x3+r*sin(-2*i*pi/5); b3=y3+r*cos(-2*i*pi/5); c3=x3+r1*sin(-(pi/5+2*i*pi/5)); d3=y3+r1*cos(-(pi/5+2*i*pi/5)); printf("%7.4f%10.4f\n\n",a3,b3);
printf("%7.4f%10.4f\n\n",c3,d3);
}
}执行:
gcc -o aa aa.c –lm
./aa
./aa > aa.dat
gnuplot aa.plot
三、income文件的第三列为职业,第四列为月收入。
用awk
或shell脚本求各职业的平均月收入。
(25分) 如income 的内容为:
01 王洁怡教师 5800
02 肖蔓文员 2980
03 梅梅教师 4500
04 何焕娣教师 6000
05 黄如金医生 8000
06 周文员教师 3800
07 马潇潇医生 10000
08 陈虹香文员 3100
09 罗艳医生 4900
10 连天碧文员 2500
则输出为:
教师: 5025
第4 页,共5 页
第 5 页,共 5 页 文员: 2860 医生: 7633.33 解: #! /bin/awk -f $3 == "教师"{r +=$4;n++;} $3 == "文员"{s +=$4;m++;} $3 == "医生"{t +=$4;l++;} END{print ("教师:",r/n); print ("文员:",s/m); print ("医生:",t/l); } 执行: chmod +x total ./total income。