LinuxC考试题
一、选择题(每题2分,20题,共40分)
| 1.在 Shell 环境中的预定义变量中,以下( )用于表示执行上一条命令后的返回状态。 | |||
| A.$! B.$? C.$$ D.$0 | |||
| 2.下列哪些命令可以测试网络通不通?( ) | |||
| A.ping B.netstat C.trace D.route
| |||
| 4.目前流行的两种软件包管理机制,Debian使用()软件包 | |||
| A.zip B.rpm C.tar D.deb | |||
| 5.将光盘/dev/hdc卸载的命令是?( ) | |||
| A.umount /mnt/cdrom /dev/hdc | |||
| B.unmount /dev/hdc | |||
| C.umount /dev/hdc | |||
| D.unmount /mnt/cdrom /dev/hdc | |||
| 6.下面代码中p和"hello,world"存储在内存哪个区域? ( ) | |||
| int main() | |||
| { | |||
| char *p = "hello,world"; | |||
| return 0; | |||
| } | |||
| A.栈,堆 B.栈,栈 C.堆,只读存储区 D.栈,只读存储区 | |||
| 7.下列关于makefile描述正确的有?( ) | |||
| A.makefile文件保存了编译器和连接器的参数选项 | |||
| B.主要包含了五个东西:显式规则、隐晦规则、变量定义、指令和注释 | |||
| C.默认的情况下,make命令会在当前目录下按顺序找寻文件名为“GNUmakefile”、“makefile”、“Makefile”的文件, 找到了解释这个文件 | |||
| D.在Makefile不可以使用include关键字把别的Makefile包含进来 | |||
| 8.下述程序第二次的输出结果是( ) | |||
| int main(){ | |||
| extern int a; | |||
| int b=0; | |||
| static int c; | |||
| a+=3; | |||
| other(); | |||
| b+=3; | |||
| other();} | |||
| int a=5; | |||
| void other(void){ | |||
| int b=3; | |||
| static int c=2; | |||
| a+=5;b+=5;c+=5; | |||
| printf(“%d,%d,%d”,a,b,c); | |||
| c=b;} | |||
| A.13,0,13 B.18,8,13 | |||
| C.13,8,13 D.18,8,0 | |||
| 9.以下程序的运行结果为( )。 | |||
| void sub(int x, int y, int *z) | |||
| { *z = y – x ; } | |||
| int main(void) | |||
| { | |||
| int a,b,c ; | |||
| sub(10, 5, &a) ; | |||
| sub(7, a, &b) ; | |||
| sub(a, b, &c) ; | |||
| printf( “%4d,%4d, %4dn”,a,b,c); | |||
| } | |||
| [A] 5, 2, 3 [B] -5, -12, -7 [C] -5, -12, -17 [D] 5, -2, -7 | |||
| 10.下面的代码输出是() | |||
| void foo(void){ | |||
| unsigned int a=6; int b=-20; | |||
| (a+b>6)?puts(">6"):puts("<6"); | |||
| A.>6 B.<6 | |||
| 11.在C语言中,数组作为函数的形参,函数调用时,若用数组名作为函数的实参,则实际上传递给形参的是( ) 。 | |||
| A.数组首地址 B.数组的第一个元素值 | |||
| C.数组中全部元素的值 D.数组元素的个数 | |||
| 12.int *p[4] 与选择项中的说明 ( ) 等价 | |||
| A.int p[4] B.int *p C.int *(p[4]) D.int (*p)[4] | |||
| 13.在给定文件中查找与设定条件相符字符串的 | |||
| 命令为() | |||
| A.grep B.gzip | |||
| c.find D.sort | |||
| 14.在一个C源程序文件中,若要定义一个只允许 | |||
| 在本源文件中所有函数使用的全局变量,则该变 | |||
| 量需要使用的存储类别是() | |||
| A.extern B.static C.auto D.register | |||
| 15.下面这段C程序的输出是( ) | |||
| void foo(int b[][3]) | |||
| { | |||
| ++b; | |||
| b[1][1] = 9; | |||
| } | |||
| void main() | |||
| { | |||
| int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; | |||
| foo(a); | |||
| printf("%d",a[2][1]); | |||
| } | |||
| A.8 B.9 C.7 D.以上均不对 | |||
| 16.在32为系统下小端系统,并4字节对齐的条件 | |||
| union u_union | |||
| { | |||
| unsigned int iiar | |||
| char cvar; | |||
| short svar; | |||
| }uu; uu.iiar=0x12345678? uu.cvar=() | |||
| A.0x12345678 | |||
| B.0x5678 | |||
| C.0x12 | |||
| D.0x78 | |||
| 17.以下程序的输出结果是( ) | |||
| #include | |||
| int main() | |||
| { | |||
| char str[] = "ABCD", *p = str; | |||
| printf("%dn",*(p+4)); | |||
| return 0; | |||
| } | |||
| A. 68 B.0 C.字符'D'的地址 D.不确定的值 | |||
| 18.由多个源文件组成的C程序,经过编辑、预处理、编译、链接等阶段会生成最终的可执行程序。 下面哪个阶段可以发现被调用的函数未定义?( ) | |||
| A.预处理 B.编译 C.链接 D.执行 | |||
| 19.若要将当前目录中的myfile.txt文件压缩成 | |||
| myfile.txt.tar.gz,则实现的命令为() | |||
| A.tar -cvf myfile.txt myfile.txt.tar.gz | |||
| B.tar -zcvf myfile.txt myfile.txt.tar.gz | |||
| C.tar -zcvf myfile.txt.tar.gz myfile.txt | |||
| D.tar -cvf myfile.txt.tar.gz myfile.txt | |||
| 20.以下关于头文件,说法正确的是( ) | |||
| A.#include | |||
| B.#include“filename.h”,编译器寻找头文件时,会从指定的目录去找 | |||
| C.多个源文件同时用到的全局整数变量,它的声明和定义都放在头文件中,是好的编程习惯 | |||
| D.在大型项目开发中,把所有自定义的数据类型、全局变量、函数声明都放在一个头文件中, | |||
| 各个源文件都只需要包含这个头文件即可,省去了要写很多#include语句的麻烦,是好的编程习惯。 | |||
| 二、代码输出题:(每题3分,5题,共15分) | |||
| 1 | |||
| #include | |||
| int main() | |||
| { | |||
| int a,b,c; | |||
| a = 1, b = 2, c = 0; | |||
| if(a-- || b++ && --c) | |||
| { | |||
| printf("%d %d %dn",a,b,c); | |||
| } | |||
| return 0; | |||
| } | |||
| __________________ | |||
| 2.若有以下输入( | |||
| 1,2 | |||
| int main(void) | |||
| { | |||
| int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; | |||
| int (*p)[4], i, j; | |||
| p = a; | |||
| scanf(“%d,%d”,&i,&j); | |||
| printf(“%dn”, *(*(p+i)+j)); | |||
| return 0; | |||
| } | |||
| ________________________ | |||
| 3 | |||
| #include | |||
| #include | |||
| int main() | |||
| { | |||
| char *p1 = "123", *p2 = "ABC", str[50] = "xyz"; | |||
| strcpy(str + 2, strcat(p1,p2)); | |||
| printf("%sn",str); | |||
| return 0; | |||
| } | |||
| 4 | |||
| #include | |||
| void f(char **p) | |||
| { | |||
| *p += 2; | |||
| } | |||
| int main() | |||
| { | |||
| char *a[] = {"123","456","789"}, **p; | |||
| p = a; | |||
| f(p); | |||
| printf("%srn",*p); | |||
| return 0; | |||
| } | |||
| 5 | |||
| void fun(char *w, int m) | |||
| { | |||
| char s,*p1, *p2; | |||
| p1 = w; | |||
| p2 = w+m-1; | |||
| while (p1 | |||
| { | |||
| s=*p1; | |||
| *p1=*p2; | |||
| *p2=s; | |||
| p1++; | |||
| p2--; | |||
| } | |||
| } | |||
| main( ) | |||
| { | |||
| char a[]="123456"; | |||
| fun( a, strlen(a) ); | |||
| puts(a); | |||
| } 程序运行后的输出结果是______________________________ | |||
| 三、简答题(4题,每题3分,,第4个6分共15分) | |||
| 1.简述Linux操作系统的模块结构,并介绍各模块功能。 | |||
| 2.GDB是什么?如何使用GDB调试程序 | |||
| 3.简述条件编译的优势,和使用方法。 | |||
| 4.编程:创建目录dir,将当前路径下的所有普通文件拷贝到dir下(注意文件夹不复制) | |||
| 四、编程题(1,2,10分,第3题15分,总共35分) | |||
| char * reverse (char *),反置字符串s,即可将“break”成为“kaerb” 2.下面findmax函数将计算数组中的最大元素的地址,请编写该函数。 3.创建一个结构体指针,malloc出5个结构体的空间,成员包含姓名,成绩(数据类型自己设定),写一个程序,要求可以循环的从终端输入学生信息。完成输入后自动打印出所输入的学生信息,打印结果按学生成绩从低到高打印 |



