1、选择题(1)数据的存储结构是指_。A)存储在外存中的数据 B)数据所占的存储空间量C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示答案:D评析:数据的逻辑结构在计算机存储空间中的存放形式形式称为数据的存储结构(也称数据的物理结构)。(2)下列关于栈的描述中错误的是_。A)栈是先进后出的线性表B)栈只能顺序存储C)栈具有记忆作用D)对栈的插入与删除操作中,不需要改变栈底指针答案:B评析:栈是一种特殊的线性表,又称先进后出表(FILOFirst In Last Out)。(3)对于长度为 n 的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是_。A)冒泡排序为 n2
2、 B)冒泡排序为 nC)快速排序为 n D)快速排序为 n(n 一 1)2答案:D评析:假设线性表的长度为 n,则在最坏情况下,冒泡排序需要经过 n2 遍的从前往后扫描和 n2 遍的从后往前扫描,需要比较次数为 n(n-1)2。快速排序法的最坏情况比较次数也是 n(n-1)2。(4)下列对于线性链表的描述中正确的是_。A)存储空间不一定是连续,且各元素的存储顺序是任意的B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面C)存储空间必须连续,且前件元素一定存储在后件元素的前面D)存储空间必须连续,且各元素的存储顺序是任意的答案:A评析:在链式存储结构中,存储数据结构的存储空间可以不连续
3、,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。(5)以下选项中可作为 c 语言合法常量的是_。A)-80 B)-080 C)-8e10 D)-800e答案:A评析:c 语言的常量分为整型常量、实型常量和字符型常量。选项A 属于实型常量中的十进制小数形式的表示法,是合法的。(6)以下不能定义为用户标识符的是_。A)Main B)_0 C)_int D)sizeof答案:D评析:C 语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。注意:大写字母和小写字母被认为是两个不同的字符。A 中 Main 与主 i
4、函数名 main 不同。(7)数字字符 0 的 ASCII 值为 48,若有以下程序main()char a=“1”,b=“2”;printf(“c, ”,b+);printf(“dn”,b-a);)程序运行后的输出结果是_。3,2 B)50,2 C)2,2 D)2,50答案:C评析 l 执行语句“printf(“ c,ll,b+);” 后, b 的值变成字符 3,执行“printf(“dn”,b-a); ”,即3-1。(8)有以下程序main()int m=12, n=34;printf(“d d”,m+,+n);printf(“d dn”,n+,+m);程序运行后的输出结果是_。A)123
5、53514 B)12353513 C)12343514 D)12343513答案:A评析:执行“printf(“dd”m+,+n);”后,输出的是 m 和 n+l 的值 1235,接着执行“printf(“ddn”,n+,+m);”输出 n 和 m+l 的值 3514。(9)有以下程序main() int a,b,d=25;a=d109;b=aprintf(”d, dn” ,a,b);程序运行后的输出结果是_。A)6,l B)2,l C)6,0 D)2,0答案:B评析:本题中“a=d109;”的值为 25109=2; “b=afor(i=0;j4)printlf(”d”,i+);break;p
6、rintf(“d”,i+);A)55 B)56C)程序错误,没有输出 D)循环条件永远为真,死循环答案:B评析:本程序中有个 for 循环,但注意到 for 循环的条件是“i+l”,也就是只要 i+l 的值为真(非零值均为真),就执行循环。当 i=l 的时,i+l 的值为真,判断 if 条件不成立,执行 i+,输出 i 的值为 5。(7)下列程序的输出结果是_。main() int I=3;switch(i) case 1:case 2:printf(”d”,i);case 3:case 4:break;default:printf(”OK”);A)0 B)3 C)OK D)没有任何输出答案:
7、D评析:在题中,i 的值为 3,由于“case 3:”后面没有 break 语句,所以继续向下执行“case 4:”后面的语句,由于“case 4:”后面的语句为 break 强行退出 switch 语句,所以,本题没有任何输出。(7)请读程序段:char str=”ABCD”,*p=str;printf(”dn”,*(p+4);程序段的输出结果是_。A)68 B)0C)字符D的地址 D)不确定的值答案:B评析:在对字符数组赋字符串值时,系统会自动在字符串的末尾加上一个字符串结束标志“0”,故指向字符数组的指针 p 的+(p+4)的值为“0”。由于“0”的编码值就是 0,所以本题输出为 0。(
8、8)以下程序的输出结果是_。main() char str12=s,t,r,i,n, g;printf(”dn”,strlen(str);A)6 B)7 C)ll D)12答案:A评析:在 c 语言中,字符串的长度是其首字符到 NULL(不含)字符的总字符个数。本题定义字符数组 str 的同时,对第 7 个元素,由系统自动添加上“0”,故字符串的长度为 6。(9)已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填_。struct link char data;Data next_node;A)struct link next B)link*nextC)struct next lin
9、k D)struct link*next答案:D评析:在单向链表中,由于每个结点需要存储下一个结点的地址,且下一个结点的数据类型与前一个结点的数据类型完全相同,故应为 struct link*next。(10)已知小写字母 a 的 ASCII 码为 97,大写字母 A 的 ASCII码为 65,以下程序的结果是_。main() unsigned int a=32,b=66;printf(“cn”,afor(i=p;imain()char ch=”abc”,x34; int i;for(i=O;i3;i+) strcpy(xi,ch);for(i=O;i3;i+) printf(“%s”,printf(“n”);答案: abcbcc评析:字符数组 ch 的值abc分别复制到了二维数组 x 的每一行,使得二维数组中每一行的值均为abc,再通过第二个 for 循环打印出每一行上所要求输出的字符串。三、判断题(1)C 语言是一种结构化程序设计语言( 对);(2)定义“int *a3”和“int (*a)3”具有相同的含义(错 );(3)a 是一个一维数组名,数组元素 a1还可以写成“*(a+)” (错 );(4)08 是一个正确的整形常量 ( 错);(5)定义“int *p”;则*p 的值是一个存储单元的地址(对);