《最新Linux及C考试题附答案.doc》由会员分享,可在线阅读,更多相关《最新Linux及C考试题附答案.doc(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateLinux及C考试题附答案华清远见嵌入式学院第一学期期末考试华清远见嵌入式学院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
2、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. 假设目录中存在若干文件file_num.txt(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-
3、对应的八进制表示形式为( 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 1
4、3,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 )。 c
5、har *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 D
6、ATA)的值为( C )。struct DATA float f1; int i;char c2; ;A 6 B 8 C 12 D 1614. 以下程序的功能是将字符串s中所有的字符c删除,那么空白处缺少的语句为:( A )。#include 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 =
7、 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中的字符,
8、按升序归并到字符串c中,请为程序中的空白处选择适当的语句。 #include 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 6)?puts(6):puts(6 B =6 21. 假设文件fileA的符号链接为fileB,那么删除fileA后,下面的描述正确的是( D )。A.fileB没有任何影响B.因为fileB未被删除,所以fileA会被系统自动重新建立C.fileB会随fileA的删除而
9、被系统自动删除 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、一位法官在审理一起盗窃案中,对涉及到的四名嫌疑犯甲、乙、丙、丁进行了审问。四人供述如下:甲说:“罪犯在乙、丙、丁三人之中。”乙
10、说:“我没有做案,是丙偷的。”丙说:“在甲和丁中间有一人是罪犯。”丁说:“乙说的是事实。”经过充分的调查,证实这四人中有两人说了真话,另外两人说的是假话。那么,请你对此案进行裁决,确认谁是罪犯?( A )A、乙和丁是盗窃犯 B、乙和丙是盗窃犯 C、乙是盗窃犯 D、甲和丁是盗窃犯二、填空题(每空2分,共14分) 1. 对文件file创建一个符号链接link( ln s file link )。2. 若有以下定义和语句,则*p0引用的是a数组元素中的( a0 ),*(p1+1)引用的是a数组元素中的( a3 )。int *p3, a6, i;for( i = 0; i 3; i+) pi = &a
11、2*i;3. 若有以下输入(代表回车换行符),则下面程序的运行结果为( 7 )。1,2int 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. 将历史纪录追加到文件file.txt内( history file.txt )。6. make工程管理器根据( 时间戳 )来自动发现更新过的文件从而减少编译的工作量。三、简答题(2题,每
12、题5分,共10分)1、下面findmax函数将计算数组中的最大元素及其下标值,请编写该函数。#include 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的头文件,
13、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/bashmkd
14、ir /filernum=0filelist=lsfor file in $filelistdoif 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; i10; i+) ai0 = 1; for ( j=1; j=i; j+) aij = ai-1j-1 + ai-1j; for ( i=0;
15、 i10; 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 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);-
限制150内