经典C语言面试题目
- 格式:pdf
- 大小:219.13 KB
- 文档页数:35
(16)数字字符 0 的 ASCII 值为 48,若有以下程序 main() {char a=”1″,b=”2″; printf(“%c,”,b++); printf(“%d\n”,b-a); ) 程序运行后的输出结果是___C_____。 A) 3,2 B)50,2 C)2,2 D)2,50 答案:C 评析 l 执行语句“printf(“%c,ll,b++);”后,b 的值变成字符 3,执行“printf(“%d\n”,b-a);”, 即‘3’-‘1’。
(10)用树形结构表示实体之间联系的模型是__C______。 A)关系模型 B)网状模型 C)层次模型 D)以上三个都是 答案:C 评析:层次模型是最早发展起来的数据库模型,它的基本结构是树形结构。
(11)算法具有五个特性,以下选项中不属于算法特性的是___B_____。 A)有穷性 B)简洁性 C)可行性 D)确定性 答案:B 评析:有穷性、确定性、有零个或多个输入、有一个或多个输出、有效性是算法的基本特性。
(6)下列对于软件测试的描述中正确的是___C_____。 A)软件测试的目的是证明程序是否正确 B)软件测试的目的是使程序运行结果正确 C)软件测试的目的是尽可能多地发现程序中的错误
D)软件测试的目的是使程序符合结构化原则 答案:C 评析:关于软件测试的目的,Grenford J.Myers 再《The Art of Software Testing》一书中给 出了深刻的阐述,整体来说,软件测试的目的就是尽可能多地发现程序中的错误。
评析:执行“i++==1&&(++j==3‖k++==3)”时,表达式“i++==1”嗨值为真,其值为 1,表达 式“++j=3”的值为真,根据短路原理,右边的表达式“k++==3”不再进行运算。括号中表达的 值为 l,作与运算后整个表达式的值也为 l,输出 i.j,k 时,由于未执行过 k,所以它们的值 分别为 2,3,3。
(7)为了使模块尽可能独立,要求___B_____。 A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 答案:B 评析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最 少且接口简单。软件设计,应尽量做到高内聚,低耦合,有利于提高模块的独立性。
(19)有以下程序 main() {int m,n,p; scanf(“m=%dn=%dp=%d”,&m,&n,&p); printf(“%d%d%d\n”,m,n,p); } 若想从键盘上输入数据,使变量 m 中的值为 123,n 中的值为 456,p 中的值为 789, 则正确的输入是___A_____。 A) m=123n=456p=789 B) m=123 n=456 p=789 C) m=123,n=456,p=789 D) 123 456 789 答案:A 评析:根据本题的数据输入形式“scanf(“m=%dn=%dp=%d”&m,&n,&p);”说明在输入数 据时,必须输入“m=”、“n=”、“p=”字符,且中间不能含有空格。
评析:执行“printf(“%d%d”m++,++n);”后,输出的是 m 和 n+l 的值 1235,接着执行 “printf(“%d%d\n”,n++,++m);”输出 n 和 m+l 的值 3514。
(18)有定义语句:int b;char c[10];,则正确的输入语句是___B_____。 A) scanf("%d%s",&b,&C); B) scanf("%d%s",&b,C); C) scanf("%d%s",b,C); D) scanf("%d%s",b,&C); 答案:B 评析:scanf 函数中的“格式控制”后面应当是地址,而不是变量名。对于变量,通过地址运算 符“&”求出内存中的地址;对于数组 c[10],数组名 c 即为数组在内存中的地址。
(17)有以下程序 main( ) { int m=12, n=34; printf(“%d%d”,m++,++n); printf(“%d%d\n”,n++,++m); } 程序运行后的输出结果是___A_____。 A)12353514 B)12353513 C)12343514 D)12343513 答案:A
A)数据与程序独立存放 B)不同的数据被存放在不同的文件中 C)不同的数据只能被对应的应用程序所使用 D)以上三种说法都不对 答案:D 评析:数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖 于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。 选项 A、B、C 三种说法都是错误的。
(25)以下能正确定义一维数组的选项是___B_____。 A)int a[5]={0,1,2,3,4,5}; B)char a[]={0,1,2,3,4,5}; C)char a={’A’,’B’,’C’}; D)int a[5]=”0123″; 答案:B 评析:选项 A 中定义的是 5 个数组元素,但赋值的时候赋的是 6 个元素,所以出错;选项 c 不符合数组定义形式,数组名后应加上“[]”;选项 D 的类型说明符错误,如果用 char 定义就 对了;选项 B 中的 0,1,2,3,4,5 分别表示对应字符的 ASCII 码,所以选项 B 是正确的。
评析:假设线性表的长度为 n,则在最坏情况下,冒泡排序需要经过 n/2 遍的从前往后扫 描和 n/2 遍的从后往前扫描,需要比较次数为 n(n-1)/2。快速排序法的最坏情况比较次数 也是 n(n-1)/2。
(4)对长度为 n 的线性表进行顺序查找,在最坏情况下所需要的比较次数为____C____。 A)log2n B)n/2 C)n D)n+l 答案:C 评析:顺序查找过程中,如果被查找的元素是线性表中的最后一个元素,或者元素不在线性 表中,则需要与线性表中所有的元素进行比较。对长度为 n 的线性表进行顺序查找,在最坏 情况下需要比较 n 次。
A)42 B)45 C)56 D)60
答案:B
评析:本程序的作用是求除 p[0]外的其它奇数的和。
(24)有以下程序 main() { char a[7]= “a0\OaO\0”; int i,j; i=sizeof(a);j=strlen(a); printf(“%d%d\n”,i,j); ) 程序运行后的输出结果是___B_____。 A)2 2 B)76 C)7 2 D)6 2 答案:C 评析:c 语言中以‘\0’作为字符串的结束符,且 strlen()函数计算的是‘\0’字符前的所有字 符的个数。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。
(5)下列对于线性链表的描述中正确的是___A_____。 A)存储空间不一定是连续,且各元素的存储顺序是任意的 B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面 C)存储空间必须连续,且前件元素一定存储在后件元素的前面 D)存储空间必须连续,且各元素的存储顺序是任意的 答案:A 评析:在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与 数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。
(20)有以下程序 main() { int a,b,d=25; a=d/10%9; b=a&&(-1); printf(”%d,%d\n”,a,b); } 程序运行后的输出结果是___B_____。 A)6,l B)2,l C)6,0 D)2,0 答案:B 评析:本题中“a=d/10%9;”的值为 25/10%9=2; “b=a&&(-1);”为 2&&(-1)=1(注意:-1 表示真,只有 O 才表示假),所以 a,b 的值分别为 2,1。
(21)有以下程序 main() { int i=1, j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf(“%d%d%d\n”,i,j,k); } 程序运行后的输出结果是___D_____。 A)l 2 3 B)2 34 C) 2 2 3. D)2 3 3
答案:D
(12)以下选项中可作为 c 语言合法常量的是___A_____。 A)-80. B)-080 C)-8e1.0 D)-80.0e 答案:A 评析:c 语言的常量分为整型常量、实型常量和字符型常量。选项 A 属于实型常量中的十进
制小数形式的表示法,是合法的。
(13)以下叙述中正确的是___C_____。 A)用 C 程序实现的算法必须要有输入和输出操作 B)用 C 程序实现的算法可以没有输出但必须要输入 C)用 C 程序实现的算法可以没有输入但必须要有输出 D)用 C 程序实现的算法可以既没有输入也没有输出 答案:C 评析:算法的特性中包括“有零个或多个输入”及“有一个或多个输出”这两个特性。一个算法 得到的结果就是算法的输出,没有输出的算法是没有意义的,所以一个算法必须ห้องสมุดไป่ตู้少有一个 输出。