Linux及C考试题附答案.docx
华清远见嵌入式学院Linux及C考试题(A卷)1-5 CBCDB 6-10 DBADD11-15 CCCAA16-20 C ADD C D A21-23 DBA一、选择题(23题,每空2分,共46分)1. 常见的Linux发行版本有许多,下面不是Linux发行版本的是( C)。A Red Hat Linux B Ubuntu Linux C unix D 红旗 2. 下面不是对Linux操作系统特点描绘的是( B )。A 良好的可移植性 B 稳定性低 C 多用户 D 多任务3. 嵌套创立书目的嘱咐可以运用( C )。A mkdir h B help mkdir C mkdir -p D man mkdir4. 假设书目中存在若干文件(num表示文件编号,18),运用以下( D )通配符可以选择出其中的编号为1、2、3、5、6、7的文件。A file_*.txt B flie_.txt C file_1-7.txt D file_48.txt5. 文件权限 r-x-w-r-对应的八进制表示形式为( B ) A 0536 B 0524 C 0656 D 0534 6. 目前流行的两种软件包管理机制,Debian运用( D )软件包。A zip B rpm C tar D deb7. 下述程序第二次的输出结果为( B )。int main(void) extern int a; int b=0; static int c; a+=3; other(); b+=3; other(); int a=5; other() int b=3; static int c=2; a+=5; b+=5; c+=5; printf("%d,%d,%dn",a,b,c); c=b; A 13,0,13 B 18,8,13 C 13,8,13 D 18,8,08. C语言程序的三种根本程序是( A )。A 依次构造,选择构造,循环构造B 递归构造,循环构造,转移构造C 嵌套构造,递归构造,依次构造D 循环构造,转移构造,依次构造9. 执行下面语句后的输出结果为( D )。int i = -1; if (i < =0) printf(“*n”); i = 2; else printf(“%n”);A 乱码 B % C % D 有语法错误,不能正确执行10. 在C语言中,要求运算数必需是整型的运算符是( D )。A / B + C != D %11. 下面的程序运行结果为( C )。 char *RetMenory(void) char p = “hello world”; return p; void Test(void) char *str = NULL; str = RetMemory(); puts(str);A 语法有错误,不能编译 B hello world C结果不行预知 D hello world+乱码12. 下述程序的输出结果是( C )。int main(void)int Y=100;while(Y-);printf(“Y=%d”,Y);A Y=0 B Y=1 C Y=-1 D Y=随机数13. 构造体DATA定义如下,则sizeof(struct DATA)的值为( C )。struct DATA float f1; int i;char c2; ;A 6 B 8 C 12 D 1614. 以下程序的功能是将字符串s中全部的字符c删除,那么空白处缺少的语句为:( A )。#include <stdio.h>int main(void)char s80 abd abd0int i, j s2 = s3 = dgets(s) for ( i = j = 0 s i != 0 i+ )if ( s i != c ) Sj+ = si ;s j = 0 puts ( s ) return 0 A s j+ = s i Bs +j = s i C s j = s i ; j+D s j = s i 15. 下面函数的功能是( A )。int fun (char*x)char*y=x;while(*y+);return(y-x-1);A 求字符串的长度B 比拟两个字符串的大小C 将字符串x复制到字符串yD 将字符串x连接到字符串y后面16. /* Address */unsigned short *a = (unsigned short *)0x800;unsigned short *b= a+1;b = ( C )A 0x800 B 0x801 C 0x802 D 0x80417. 下面程序的功能是将已按升序排好序的两个字符串a和b中的字符,按升序归并到字符串c中,请为程序中的空白处选择适当的语句。 #include <stdio.h>int main(void)char a = “acegikm”;char b = “bdfhjln pq”;char c80, *p;int i = 0, j= 0, k = 0;while( ai != 0 && bj != 0 )if ( ai < bj ) ( ) Aelse ( ) Dk+;ck = 0;if ( ) p = b + j; Delse p = a + i;strcat ( c , p );puts ( c ); A ck = ai; i+;B ck = bj; i+; C ck = ai; j+;D ck = aj; j+; A ck = ai; i+;B ck = bj; i+; C ck = ai; j+;D ck = bj; j+; A ai = 0B ai != 0 C bj = 0 D bj != 018. 若要将当前书目中的my文件压缩成my,则实现的嘱咐为( C)。A tar -cvf my myB tar -cjf my myC tar -czf my myD tar -cxf my my19. 在一个C源程序文件中,若要定义一个只允许根源文件中全部函数运用的全局变量,则该变量须要运用的存储类别是( D )。A extern B register C auto D static20. 下面的代码输出是( A ) void foo(void) unsigned int a = 6;int b = -20; (a+b > 6) puts("> 6") : puts("<= 6"); A > 6 B <= 6 21. 假设文件fileA的符号链接为fileB,那么删除fileA后,下面的描绘正确的是( D )。A.fileB没有任何影响B.因为fileB未被删除,所以fileA会被系统自动重新建立C.fileB会随fileA的删除而被系统自动删除 D.fileB仍存在,但是属于无效文件22. 以下程序的运行结果为( B )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, -723、一位法官在审理一起盗窃案中,对涉及到的四名嫌疑犯甲、乙、丙、丁进展了审问。四人供述如下:甲说:“罪犯在乙、丙、丁三人之中。”乙说:“我没有做案,是丙偷的。”丙说:“在甲和丁中间有一人是罪犯。”丁说:“乙说的是事实。”经过充分的调查,证明这四人中有两人说了真话,另外两人说的是假话。那么,请你对此案进展裁决,确认谁是罪犯?( A )A、乙和丁是盗窃犯 B、乙和丙是盗窃犯 C、乙是盗窃犯 D、甲和丁是盗窃犯二、填空题(每空2分,共14分) 1. 对文件file创立一个符号链接link( ln s )。2. 若有以下定义和语句,则*p0引用的是a数组元素中的( a0 ),*(p1+1)引用的是a数组元素中的( a3 )。int *p3, a6, i;for( i = 0; i < 3; i+) pi = &a2*i;3. 若有以下输入(<CR>代表回车换行符),则下面程序的运行结果为( 7 )。1,2<CR>int main(void)int a34 = 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;4. shell脚本的本质是( shell嘱咐的有序集合 )。5. 将历史纪录追加到文件内( history >> )。6. make工程管理器依据( 时间戳 )来自动觉察更新过的文件从而削减编译的工作量。三、简答题(2题,每题5分,共10分)1、下面findmax函数将计算数组中的最大元素及其下标值,请编写该函数。#include <stdio.h>void findmax ( int s , int t, int *k )int main (void)int a10 = 12, 23, 34, 45, 56, 67, 78, 89, 11, 22, k;findmax ( a, 10, &k );printf ( “ 最大元素为:%d, 其下标值为:%dn”, ak, k );return 0;2、如今有一个简洁的工程工程,由main.c fun.c 和fun.h三个文件组成。其中main.c中包含主函数和fun.h的头文件,fun.c中为功能函数的实现,fun.h中为fun.c中功能函数的声明 。请写一个makefile实现这几个文件的编译。$(CC)=gcctest:fun.o main.o$(CC) fun.o main.o -o test*.o:*.c $(CC) c $(<) o $main.o:main.c gcc -c main.c -o main.o四、编程题(每题10分,共30分)1. 编写一个shell脚本完成如下功能 :1. 在家书目下创立文件夹filer2. 遍历当前文件夹下的文件,假设是一般文件则放入创立的filer中3. 打印出放入filer文件夹中的文件数目# !/bin/bashmkdir /filernum=0lsfor $doif test -f $file thencp $file /filernum=expr $num + 1 fidoneecho $num 2.打印杨辉三角形前10行。(提示:定义数组a1010)11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1int main() int i , j, a1010 = 0; for ( i=0; i<10; i+) ai0 = 1; for ( j=1; j<=i; j+) aij = ai-1j-1 + ai-1j; for ( i=0; i<10; i+) for ( j=0; j<=i; j+) printf(“4d”, aij); printf(“n”);3. 创立一个构造体数组,数组名为student,成员包含学号,姓名,成果(数据类型自己设定)。写一个程序,要求可以循环的从终端输入学生信息。完成输入后自动打印出所输入的学生信息,打印结果按学生成果从低到高打印。Struct StudentInt num;Char name64;Int salary;studentN;Sort(struct Student * p,int n)Int i,j;Struct student tmp;For(i = 0;i < n -1;i+)For(j = 0;j < n - i - 1;j+)If(pj.salary > pj + 1.salary)tmp= pj + 1;Pj + 1= pj;Pj = tmp;Int main()Int i = 0,j;While(scanf(“%d%s%d”,studenti.name,studenti.name,studenti.salary) = 3)if(i < N)i+;elsePuts(“list full”);Sort(student,i);for(j = 0;j < i;j+ ) Printf(“num:%dnname:%sn,salary:%dn”,studentj.num,studentj.name,studentj.salary);第 13 页