第1页共7页.一、选择题1.下面哪个命令是用来定义shell的全局变量(D)A.exportfsB.aliasC.exportsD.export2.将当前目录下的文件shell.sh移动到目录/home/linux下的命令为(B)。A.cpshell.sh/home/linuxB.mvshell.sh/home/linuxC.llsshell.sh/home/linux/shell.shD.mv/root/shell.sh/home/linux/shell.sh3.如果要列出一个目录下的所有文件需要使用命令行(C)。A.ls–lB.ls-tC.ls–aD.ls–d4.Linux下Makefile文件中,表示第一个依赖目标的系统变量是(C)A.$@B.$*C.$D.$#5.32位系统下,定义一个指向字符类型的变量shorti,那么sizeof(i)的值是(B)A.1B.2C.3D.46.在用ls–l查看文件属性时,字符设备文件类型的标志是(A)A.cB.bC.sD.l1、---------------普通文件2、d--------------目录文件3、l--------------符号连接4、c--------------字符设备文件5、b--------------块设备文件7.在linux下进行shell编程时,注释符是(A)。A.#B.//C./**/D.以上都不对8.任何时候用户需要回到用户主目录时可以使用命令(A)。A.cdB.pwdC.pathD.cd.9.下列属于文件包含的命令是(C)。A.#defineN25B.#endifC.#includestdio.hD.#else10.下列关于Linux安装的说法中,不正确的是(C)。A.如果计算机的内存为128MB,则SWAP分区(交换分区)的大小通常设定为256M。B.安装时Linux分区的文件系统类型一般为ext2或ext3。C.安装时要进行磁盘分区,如果选择“自动分区”,系统会自动保留硬盘上原来的数据。D.Linux除了可以从光盘安装外,还可以从网上下载Linux的iso映像文件,从硬盘安装。11.下列说法中,不正确的是A。A.Shell程序编写完后还需要用gcc编译器编译。第2页共7页B.可以通过将shell程序作为sh命令的输入来执行shell程序。C.shell程序中定义的函数不能有参数。D.Linux是免费使用和自由传播的类UNIX操作系统,但它并不是没有版权。二.判断题1.Linuxinit启动进程需要读取的系统配置文件是/etc/inittab。(T)2.Linux下令某个进程在后台运行,可在此命令后面加符号&。(T)3.如果routeadddefaultgw192.168.1.1netmask255.255.255.0命令成功运行的话,此机器的IP地址有可能是192.168.1.0。(F)4.Shell程序编写完后还需要用gcc编译器编译。(F)5.计算机内存中正数的补码和原码一样,负数的补码等于其原码加1(F)6.在RedHat中cd~这个命令会把你送回到你的家目录。(T)三.填空题1.TCP/IP协议采用四层层级结构,从下到上分别是:网络接口层.____网络层______、_____传输层_____.和应用层。2.使用GCC生成可执行文件似乎是一步完成的,实际上经历了如下四个步骤:__预处理____.编译.汇编和___链接_____。3.一个C语言程序的执行起点是__main_________。4.Linux有两种工作界面:字符界面和图形界面,其中字符界面功能更强大。5.管道就是将前一个命令的标准输出作为后一个命令的标准输入。6.C程序中,定义一个变量:charch=-15,写出该变量在内存中的二进制形式__11110001____________。7.2的10次方可以表示__1__K字节,2的20次方表示___1__M字节,2的32次方表示_4__G字节。8.Shell脚本中定义了两个变量i=4j=8,还一个变量s表示i+j的结果,如何用shell语句写出i+j,并把结果赋给变量s,_______s=`expr$i+$j`________________。9.默认情况下管理员创建了一个用户,就会在___/home_________目录下创建一个用户主目录。10.某文件的权限为:d-rw-_r--_r--,用数值形式表示该权限__644_____;该文件属性是___目录____。四.操作与shell(本大题共3小题,总计30分)1.某Shell程序以一个普通文件作为参数,其功能是:判断文件的大小是否为0,如果是则删除它;否则将该文件的内容输出到标准输出,请将程序补充完整。#!/bin/sh#FILENAME=echo-nInputfilename:read$FILENAME#输入文件名if[!-f$FILENAME]#如果不是文件第3页共7页thenquit#shell程序直接退出fiif[$FILENAME–lt1]#判断该文件是否为空thenrm–f$fFILENAME#为空则删除它elsecat$FILENAME#否则输出文件的内容到标准输出fi2.试编写一个SHELL程序,该程序能接收用户从键盘输入的20个整数,然后求这20个数的总和、并找出这些书的最大值及最小值,全部输出到屏幕上。#!/bin/bashcount=0sum=0max=0min=99999while[$count-lt3]doreadnumbercount=`expr$count+1`sum=`expr$sum+$number`if[$number-lt$min]thenmin=$numberfiif[$number-gt$max]thenmax=$numberfidoneecho-emax:$max\nmin:$min\nsum:$sum3.假如你是机房系统管理员,某班上的80个学生在机房的Linux服务器上共创建了80个帐号,帐号名为“user20060001”~“user20060080”,现在课程结束了,这些帐号均不再使用。试编写一个shell程序,删除学生所建的上述帐号。添加:#!/bin/bashnumber=20060001第4页共7页while[$number-le20060080]douseradduser$number&&echoaddauserisuser$number((number++))Done删除:#!/bin/bashnumber=20060001while[$number-le20060080]douserdel-ruser$number&&echodelauserisuser$number((number++))done4.编写一Shell脚本显示下列菜单1)ListDirectory2)ChangeDirectory3)EditFile4)RemoveFile5)ExitMenu当用户选择12345的时候分别实现下列功能:,1)调用ls–lt列出当前目录内容2)输入一个目录,用cd$dir进入3)输入一个文件名称,用vi$file进行编辑4)输入一个文件名称,用rm$file删除5)调用exit0退出菜单提示:read读取用户输入,然后用case语句进行分支处理。#!/bin/bashclearnum=0while[$num-ne5]doecho-e1)ListDirectory\n2)ChangeDirectory\n3)EditFile\n4)RemoveFile\n5)ExitMenuechoinputyournumberreadnumbercase$numberin1)ls-ltnum=1第5页共7页;;2)echopleaseinputyouwantintothedirectoryreaddircd$dirpwdnum=2;;3)echopleaseinputyouwanteditorfilereadfilevi$filenum=3;;4)echopleaseinputyouwantdelfilereadfilerm$filenum=4;;5)echoyouhaveexitmenunum=5exit0;;esacdone五.编程题(1)在Linux下用C语言编写一程序,实现如下功能:已知一个IP地址的16进制数位0x3b40c812,请将此IP地址用十进制点的形式输出,如“59.64.200.18”。要求有Makefile#includestdio.hmain(){unsignedlongip=0x03b40c812,a,b,c,d;a=ip24;ip=ip8;b=ip24;ip=ip8;第6页共7页c=ip24;ip=ip8;d=ip24;printf(%d.%d.%d.%d\n,a,b,c,d);}(2)在Linux下用C语言编写一程序,实现如下功能:将4个无符号字节1、2、3、4按高字节到低字节顺序组成一个整形数:0x01020304。要求有Makefile#includestdio.hmain(){unsignedlongx1=1,x2=2,x3=3,x4=4,x=0;//scanf(%x%x%x%x,&x1,&x2,&x3,&x4);x1=x124;x2=x216;x3=x38;x=x1^x2;x=x^x3;x=x^x4;printf(0x0%lx\n,x);}六.编程题在Linux下用C语言编写一程序,实现如下功能:请用指针的形式,交换两个整形数,要求写出一个交换函数,函数具有两个指针类型的参数,在函数内部实现两个数的数值交换。要求有Makeifile#includestdio.hvoidswap(unsignedchar*str1,unsignedchar*str2){unsignedchart;t=*str1;*str1=*str2;*str2=t;}main(){unsignedcharnum1=5,num2=4,*p1,*p2;p1=&num1;p2=&num2;printf(num1=%d,num2=%d\n,num1,num2);第7页共7页swap(p1,p2);printf(num1=%d,num2=%d\n,num1,num2);}七编程题学生成绩的字每等级和分数范围如下:字母等级分数范圈A90~100B80~89C70~79D60~69E0~59其它字母输入错误输入字母等级之后,输出相应的分数范围。要求有Makefile#includestdio.hmain(){charg;printf(pleaseinputyourgrade\n);scanf(%c,&g);switch(g){case'A':printf(90~100);break;case'B':printf(80~89);break;case'C':printf(70~79);break;case'D':printf(60~69);break;case'E':printf(0~59);break;default:printf(Inputerror);}}