《Linux基础》考试题一、选择题(23题,每空2分,共46分)1./etc/shadow文件中存放(B)。A.用户账号基本信息B.用户口令的加密信息C.用户组信息D.文件系统信息2.LINUX所有服务的启动脚本都存放在(B)目录中。A./etc/rc.d/init.dB./etc/init.dC./etc/rc.d/rcD./etc/rc.d3.若要将当前目录中的myfile.txt文件压缩成myfile.txt.tar.gz,则实现的命令为(C)。A.tar-cvfmyfile.txtmyfile.txt.tar.gzB.tar-zcvfmyfile.txtmyfile.txt.tar.gzC.tar-zcvfmyfile.txt.tar.gzmyfile.txtD.tar-cvfmyfile.txt.tar.gzmyfile.txt4.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项(D)。A.-mB.-dC.-fD.-p5.任何时候用户需要回到用户主目录时可以使用命令(A)。A.cdB.pwdC.pathD.cd.6.将当前目录下的文件shell.sh移动到目录/home/linux下的命令为(B)。A.cpshell.sh/home/linuxB.mvshell.sh/home/linuxC.lsshell.sh/home/linux/shell.shD.mv/root/shell.sh/home/linux/shell.sh7.下面(C)命令不能用来显示文件的内容。[A]more[B]less[C]find[D]cat8.以下程序的运行结果为(C)#includestdio.h#includestring.hintSubCount(char*dest,intcount){strcpy(dest,555);count++;return0;}intmain(){intcount=3;charcaBuf[8];SubCount(caBuf,count);printf(%d\n,count);return0;}[A]8[B]4[C]3[D]59.下面的代码输出是(A)voidfoo(void){unsignedinta=6;intb=-20;(a+b6)?puts(6):puts(=6);}[A]6[B]=610.C语言中,逻辑“真”等价于(C)。[A]大于零的数[B]大于零的整数[C]非零的数[D]非零的整数11.删除文件命令为(D)A.mkdirB.moveC.mvD.rm12.假设文件fileA的符号链接为fileB,那么删除fileA后,下面的描述正确的是(D)。[A].fileB也随之被删除[B].因为fileB未被删除,所以fileA会被系统自动重新建立[C].fileB会随fileA的删除而被系统自动删除[D].fileB仍存在,但是属于无效文件13.下面不是对Linux操作系统特点描述的是(B)。[A]良好的可移植性[B]单用户[C]多用户[D]多任务14.在C语言中,要求运算数必须是整型的运算符是(D)。[A]/[B]++[C]!=[D]%15.下述程序的输出结果是(C)。intmain(void){intY=100;while(Y--);printf(“Y=%d”,Y);}[A]Y=0[B]Y=1[C]Y=-1[D]Y=随机数16.目前流行的两种软件包管理机制,Debian使用(D)软件包,Redhat使用(B)软件包。[A]tgz[B]rpm[C]tar[D]deb17.在给定文件中查找与设定条件相符字符串的命令为(A)。A.grepB.gzipC.findD.sort18.刷新文件时间戳可以使用的命令为(D)。A.chmodB.moreC.lsD.touch19.文件exer1的访问权限为744,现要取消文件所有者的执行权限,同时增加同组用的写权限,下列命令中正确的是(C)。A.chmodu+xg+wexer1B.chmod646exer1C.chmoda-xg+wexer1D.chmodg+wexer120.Linux终端执行temp=world;echohello$temp上述命令执行的结果为(C)。[A].helloworld[B].hello$temp[C].helloworld[C].hello21.在32位系统下小端系统,并4字节对齐的条件下,unionu_union{unsignedintivar;charcvar;shortsvar;}uu;uu.ivar=0x12345678;iu.cvar=(D);A.0x12345678B.0x5678C.0x12D.0x7822./*pointerandfunction*/main(){inta[50],n;...........fun(n,&a[9]);...........}Whichisincorrect(D)[A]voidfun(intm,intx[]);[B].voidfun(ints,inth[41]);[C].voidfun(intp,int*s);[D].voidfun(intn,inta);23.一位法官在审理一起盗窃案中,对涉及到的四名嫌疑犯甲、乙、丙、丁进行了审问。四人分别供述如下:甲说:“罪犯在乙、丙、丁三人之中。”乙说:“我没有做案,是丙偷的。”丙说:“在甲和丁中间有一人是罪犯。”丁说:“乙说的是事实。”经过充分的调查,证实这四人中有两人说了真话,另外两人说的是假话。那么,请你对此案进行裁决,确认谁是罪犯?(A)[A]、乙和丁是盗窃犯[B]、乙和丙是盗窃犯[C]、乙是盗窃犯[D]、甲和丁是盗窃犯二、填空题(6题,每题2分,共12分)1.管道就是将前一个命令的标准输出作为后一个命令的标准输入2.make工程管理器根据(时间戳)来自动发现更新过的文件从而减少编译的工作量。3.将命令“command”的标准输出重定向到文件“file”中的方法是commandfile。4.GCC编译器中-S选项完成的工作是只激活预处理和编译,而不进行链接,生成汇编代码5.在Linux下调试c程序时,在提示符(gdb)下输入b10表示将断点设置在第十行6.给了一个结构体,structA{chara;charb;charc;shortd;inte;shortf;};求sizeof(structA)=24三.简答题(3题,每题4分,共12分)1.什么是链接?符号链接与硬链接的区别是什么?链接是指用一个i节点对应多个文件名。硬链接是把文件的i节点号指向该i节点,且链接计数器值加1。删除链接文件时计数器值减1,当其值为0时,i节点被释放。符号链接是只有文件名的一个链接文件,并不指向一个真正的i节点。在删除符号链接文件时与硬链接文件有区别。2.配置Ubuntu主机上网简要操作步骤是什么?1.修改/etc/network/interfaces配置文件2.重启网络服务:sudo/etc/init.d/networkingrestart3.系统中的gcc软件太老了,我该怎么更新它?1.sudoapt-getupdate2.sudoapt-getinstall–reinstallgcc四、编程题(3题,每题10分,共30分)1.给定一个字符串“Ilovechina”,编写程序完成以单词为单位的逆序,如“chinalovei”,并要求允许使用第三方变量保存数据,但可以使用辅助变量指针等。这道题主要考察字符串的遍历查找以及分类处理,首先确定算法,我们可以这样处理字符串:1.将字符串整体导致:“anihcevoli”2.然后再次遍历字符串,将每个单词倒置:“chinalovei”确定完算法后就可以用程序进行操作了,以下是程序的实现过程:#includestdio.h#defineN32intswap(char*head,char*tail);intmain(){charbuff[N];char*head=buff,*tail=buff;//先讲尾指针定位到字符串尾部。While(‘\0’!=*tail)tail++;//调用swap函数将整个字符串倒置。swap(buff,tail-1);//主函数开始扫描遍历整个倒置后的字符串。while('\0'!=*head){//查找单词头。while(32==*head)head++;//找到头后将尾定位到头,开始找单词尾。tail=head;while(32!=*tail&&'\0'!=*tail)tail++;//前两步找到头之后将单词倒置(因为循环结束后tail指向‘\0’,所以tail-1)。swap(head,tail-1);//单词倒置后将头指向尾,为下次找单词做准备。head=tail;}puts(buff);return0;}//swap函数,完成指定字符串倒置。intswap(char*head,char*tail){while(headtail){//异或法进行交换数据*head^=*tail;*tail^=*head;*head++^=*tail--;}}2.思考”unsignedinta=0x12345678;”在内存中的存储形式,进而将其内存中每个字节里数据取出进行加和。#includestdio.hintmain(){unsignedintx=0x12345678;char*p=(char*)&x;inti=0;intsum=0;for(i=0;isizeof(int);i++){sum+=*p++;}printf(sum=%#x\n,sum);return0;}3.打印杨辉三角形前10行。(提示:定义数组a[10][10])11112113311464115101051intmain(){inti,j,a[10][10]={0};for(i=0;i10;i++){a[i][0]=1;for(j=1;j=i;j++){a[i][j]=a[i-1][j-1]+a[i-1][j];}}for(i=0;i10;i++){for(j=0;j=i;j++){printf(“4d”,a[i][j]);}printf(“\n”);}