logo资料库

C语言面试题附带答案解析.docx

第1页 / 共355页
第2页 / 共355页
第3页 / 共355页
第4页 / 共355页
第5页 / 共355页
第6页 / 共355页
第7页 / 共355页
第8页 / 共355页
资料共355页,剩余部分请下载后查看
一、选择题(1)~(10)每小题 2 分, (11)~(50)每小题 1 分,共 60 分) 下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选 项涂写在答题卡相应位置上,答在试卷上不得分。 (1)在数据结构中,从逻辑上可以把数据结构分为_______。 A)动态结构和静态结构 B)紧凑结构和非紧凑结构 C)线性结构和非线性结构 D)内部结构和外部结构 答案:C 评析:逻辑结构反映数据元素之间的逻辑关系,线性结构表示数据元素之间一对 一的关系,非线性结构表示数据元素之间一对多或多对一的关系。 (2)若进栈序列为 l,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈 序列是_______。 A)1,4,3,2 B)2,3,4,l C)3,1,4,2 D)3,4, 2,1 答案:C 评析:栈是一种后进先出表,选项 c 中,先出栈的是 3,说明此时栈内必然有 1, 2,由于 l 先于 2 进栈,所以 l 不可能在 2 之前出栈,故选项 C 这种出栈序列是 不可能的。 (3)排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的 方法,称为_______。 A)希尔排序 B)冒泡排序 C)插入排序 D)选择排序 答案:A 评析:希尔排序法的基本思想是:将整个无序序列分割成若干小的子序列分别进 行插入排序。
(4)在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关 键码值 11,所需的关键码比较次数为_______。 A)2 B)3 C)4 D)5 答案:C 评析:二分法查找是用关键码与线性表的中间元素比较,然后根据比较结果来判 断是结束查找,还是在左边或者右边子表按相同的方法继续查找。本题中,与 ll 比较的关键码分别为 15,8,10,12 四个。 (5)对于 n 个结点的单向链表(无表头结点),需要指针单元的个数至少为_______。 A)n-1 B)n C)n+l D)2n 答案:C 评析:在 n 个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即 指针域),加上头指针,至少需要 n+1 个指针单元。 (6)在软件开发过程中,软件结构设计是描述_______。 A)数据存储结构 件控制过程 答案:B B)软件体系结构 C)软件结构测试 D)软 评析:从工程管理角度来看,软件设计分两步完成:概要设计和详细设计。概要 设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数 据结构或数据库模式。 (7)模块本身的内聚是模块独立性的重要性度量因素之一。在 7 类内聚中,具有 最强内聚 的一类是_______。 B)过程性内聚 C)逻辑性内聚 D)功能 A)顺序性内聚 性内聚 答案:D
评析:内聚性是一个模块内部各元素间彼此结合的紧密程度的度量。内聚共有 7 类,它们之间的内聚性由弱到强排列顺序为:偶然内聚、逻辑内聚、时间内聚、 过程内聚、通信内聚、顺序内聚和功能内聚。 (8)数据存储和数据流都是_______,仅仅是所处的状态不同。 A)分析结果 B)事件 C)动作 D)数据 答案:D 评析:数据流图有 4 种成分:源点或终点、处理、数据存储和数据流。数据存储 是处于静止状态的数据,数据流是处于运动中的数据。 (9)数据的完整性是指数据的正确性、有效性和_______。 A)可维护性 B)独立性 C)安全性 D)相容性 答案:D 评析:数据模型的完整性规则是给定的数据模型中数据及其联系所具有的制约和 依存规则,用以限定符合数据模型的数据库状态及其状态的变化,以保证数据的 正确性、有效性和相容性。 (10)关系代数运算是以_______为基础的运算。 A)关系运算 B)谓词运算 C)集合运算 D)代数运算 答案:C 评析:关系代数运算是以关系代数作为运算对象的一组高级运算的集合。它的基 本操作是并、交、差、笛卡尔积,另外还包垂直分割(投影)、水平分割(选择)、 关系的结合(连接)等。 (11)能将高级语言程序转换成目标语言程序的是_______。 A)调试程序 B)解释程序 C)编译程序 D)编辑程序 答案:C
评析:用高级语言编写的程序称为“源程序”,而计算机只能识别和执行由 0 和 l 组成的二进制指令,所以高级语言必须先用一种称为“编译程序”的软件, 把源程序翻译成二进制形式的“目标程序”。 (12) _______是构成 c 语言程序的基本单位。 A)函数 B)过程 C)子程序 D)子例程 答案:A 评析:c 程序是由函数构成的。一个 c 源程序至少包含一个 main 函数,也可以 包含一个 main 函数和若干个其他函数,因此,函数是 c 程序的基本单位。 (13)可以在 C 语言中用做用户标识符的是_______。 A)void B)as_b3 C)for define _123 -abc D)2c Do WORD If cas SIG 答案:B 评析:c 语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一 个字符必须是字母或下划线。另外还需要注意的是关键字不能作标识符。选项 A 中 void,C 中 for 都为关键字,D 中 2c 以字母开头。 (14)若有以下类型说明语句: char w;int x;float y,z; 则表达式 w*x+z-y 的结果为________类型。 A)float B)char C)int D)double 答案:A 评析:在进行运算时,不同类型的数据参加运算,需要先将其转换成同一类型的 数据,然后再进行运算。转换的顺序由低到高为:char, short→int→unsigned→long→double→float,故结果为 float 型。
(15)main(() { float x=123A56; printf(“%-5.2f\n”,x); } 以上程序输出的结果是________。 A)123.4 B)123.5 C)123.45 D)123.46 答案:D 评析:f 格式符,用来输出实数,以小数形式输出。“%-m.nf”的含义是:输 出数据共占 m 列,其中 n 位小数,如果输出位数小于 m。则右端补空格。如果总 长度大于列数,则按实际情况四舍五入输出。 (16)下面语句的输出结果是________。 Printf(“%d\n”,strlen(“\t\”\065\xff\n”)); A)14 C)5 答案:C B)8 D)输出项不合法,无正常输出 评析:在 c 语言中,以“\”开头的字符均为转义字符,其中“\”后可跟 l~ 3 位八进制数或在“\”后跟字母 x 及 l~2 位十六进制数,以此来代表一个特 定的字符。 (17)下列程序的输出结果是________。 main() { int a=0,b=0,c=0; if(++a>0lI++b>0)++c;
printf(“\na=%d,b=%d,c=%d”,a,b,C); } A)a=0,b=0,c=0 B)a=l,b=l,c=1 C)a=l,b=O, c=I D)a=0, b=1.c=1 答案:C 评析: “︱︱”是或运算,它有个“短路”的特点需特别注意,当“︱︱”运算符左边 的表达式的值为真时,则程序就不再对“︱︱”右边的表达式的值进行运算,而 是使得整个表达式的值直接为真。 (18)下列程序的输出结果是_________。 Main() { int i; for(i=1;i+l;i++) if(i>4){printlf(”%d”,i++);break;} { } printf(“%d”,i++); } A)55 B)56 C)程序错误,没有输出 D)循环条件永远为真,死循环 答案:B 评析:本程序中有个 for 循环,但注意到 for 循环的条件是“i+l”,也就是只 要 i+l 的值为真(非零值均为真),就执行循环。当 i=l 的时,i+l 的值为真,判 断 if 条件不成立,执行 i++,输出 i 的值为 5。
(19)下列程序的输出结果是_________。 #define A 100 main() { int i=O,sum=O; do{ if(I==(i/2)*2)continue; sum+=i; }while(++i
} } A)0 B)3 C)OK D)没有任何输出 答案:D 评析:在题中,i 的值为 3,由于“case 3:”后面没有 break 语句,所以继续 向下执行“case 4:”后面的语句,由于“case 4:”后面的语句为 break 强行 退出 switch 语句,所以,本题没有任何输出。 (21)下列程序执行后的输出结果是________。 main() { int m[][3]={1,4,7,2,5,8,3,6,9}; int i,k=2: for(I=0;i<3;i++) {printf(”%d”,m[k][i]);} } A)456 B)258 C)369 D)789 答案:C 评析:根据二维数组的定义得出:m[O][O]=1,m[O][1]=4,m[O][2]=7,m[1][0]=2, rail][1]=5,m[1][2]=8,m[2][0]=3,m[2][l]=6,m[2][2]=9,所以本题的输出 是第 3 行的值 m[2][0],m[2][1],m[2][2],即 369。 (22)设已定义洱口 k 为 int 类型变量,则以下 for 循环语句_________。 for(i=0;k=-1,k=1;i++,k++) printf(”****\n”); A)判断循环结束的条件不合法 B)是无限循环
分享到:
收藏