1、二级 C 语言分类模拟题 557 及答案解析(总分:57.50,做题时间:90 分钟)一、选择题(总题数:40,分数:57.50)1.以下正确的字符串常量是_。(分数:2.00)A.“/“B.“abc“C.Olympic GamesD.“2.在一个 C 源程序文件中,定义一个只允许本源文件中所有函数使用的全局变量的存储类别是_。(分数:2.00)A.externB.staticC.registerD.auto3.以下关于 return 语句的叙述中正确的是_。(分数:1.00)A.没有 return 语句的自定义函数在执行结束时不能返回到调用处B.一个自定义函数中必须有一条 return 语句
2、C.定义成 void 类型的函数中可以有带返回值的 return 语句D.一个自定义函数中可以根据不同情况设置多条 return 语句4.设变量 x 为 long int 型并已正确赋值,以下表达式中能将 x 的百位上的数字提取出的是(分数:2.00)A.x/10%100B.x%10/100C.x%100/10D.x/100%105.某系统结构图如下图所示。 (分数:1.00)AnB.1C.3D.46.下列选项中不符合良好程序设计风格的是_。(分数:2.00)A.源程序要文档化B.数据说明的次序要规范化C.避免滥用 go to 语句D.模块设计要保证高耦合,高内聚7.以下数组定义中错误的是_。
3、(分数:1.00)A.int x3=1,2,3,4,5,6;B.int x3=0;C.int x23=1,2,3,4,5,6;D.int x23=1,2,3,4,5,6;8.以下关于结构化程序设计的叙述中正确的是_。(分数:1.00)A.一个结构化程序必须同时由顺序、分支、循环三种结构组成B.结构化程序使用 GOTO 语句会很便捷C.在 C 语言中,程序的模块化是利用函数实现的D.由三种基本结构构成的程序只能解决小规模的问题9.有以下程序,程序中库函数“islower (ch)”用以判断 ch 中的字母是否为小写字母 #include stdio.h #include ctype.h void
4、 fun(char *P) int i=0; while(pi) if(pi=“ i+; main() char s1100=“ab cd EFG!“; fun(s1); printf(“%s/n“,s1); 程序运行后的输出结果是_。(分数:1.00)A.ab cd EFG !B.Ab Cd EFg !C.aB cD EFG !D.ab cd EFg !10.有以下程序: #includestdio.h double fun(int n) static double f=1; f*=n; return f; main() int i; double s=0; for(i=1; i6; i+)
5、 s+=fun(i); printf(“%If/n“, s); 程序计算的是_。(分数:1.00)A.s=1!+2!+3!+4!+5!B.s=1+2+3+4+5C.s=1*2*3*4*5D.s=1!*2!*3!*4!*5!11.设变量均已正确定义,若要通过 scanf(“%d%c%d%c“, 语句为变量 a1 和 a2 赋数值 10 和 20,为变量 c1 和 c2 赋字符 x 和 y。以下所示的输入形式中正确的是_。(注:代表空格字符)(分数:1.00)A.10X回车20Y回车B.10X20YC.10X回车20Y回车D.10X20Y回车12.有以下程序 main() int x=1,3,5,
6、7,2,4,6,0,i,j,k; for(i=0; i3 ; i+) for(j=2; j=i ; j-) if(xj+1xj) k=xj; xj=xj+1; xj+1=k; for(i=0; i3; i+) for(j=4; j7-i; j+) if(xjxj+1) k=xj; xj=xj+1; xj+1=k; for(i=0; i8; i+) printf(“%d“,xi); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.75310246B.01234567C.76310462D.1357024613.算法的有穷性是指_。(分数:2.00)A.算法程序的运行时
7、间是有限的B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用14.有以下程序: #includestdio.h struct tt int x; struct tt *y; s2=1,0,2,0; main() struct tt *p=s; p-y=s; printf(“%d“,+p-x); 程序运行后的输出结果是_。(分数:1.00)A.2B.0C.1D.315.设有一个商店的数据库,记录客户及其购物情况,由三个关系组成:商品(商品号,商品名,单价,商品类别,供应商),客户(客户号,姓名,地址,电邮,性别,身份证号),购买(客户号,商品号,购买数量),
8、则关系购买的键为_。(分数:1.00)A.客户号B.商品号C.客户号,商品号D.客户号,商品号,购买数量16.以下叙述中正确的是_。(分数:2.00)A.赋值语句是一种执行语句,必须放在函数的可执行部分B.scanf 和 printf 是 C 语言提供的输入和输出语句C.由 printf 输出的数据都隐含左对齐D.由 printf 输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的17.设有下列程序段: char str=“HelloWorld“; char*ptr; ptr=str; 执行上面的程序段后,*(ptr+10)的值为_。(分数:2.50)A.“/0“B.“0“C.不
9、确定的值D.“0“的地址18.下列关于栈的叙述正确的是_。(分数:1.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据19.以下程序的输出结果是_。 试题程序#include stdio.h main() int a, b, c; a=10; b=50; c=30; if(ab) a=b, b=c; c=a; printf(“a=% d, b=% d, c=% d“, a, b, c); (分数:1.00)A.a=10,b=50,c=10B.a=10,b=30,c=10C.a=50,b=30,c=10D.a=50,b=30,c=5020.有嵌
10、套的 if 语句: if(ab) if(ac)k=a; else k=c; else if(bc)k=b; else k=c; 以下选项中与上述 if 语句等价的语句是_。(分数:2.50)A.k=(ab)?(bc)?a:b):(bc)?b:c);B.k=(ab)?(ac)?a:c):(bc)?b:c);C.k=(ab)?a:b;k=(bc)?b:c;D.k=(ab)?a:b;k=(ac)?a:c;21.有以下程序: #includestdio.h #define SUB(A)(a)-(a) main() int a=2,b=3,c=5,d; d=SUB(a+b)*c; printf(“%d/
11、n“,d); 程序运行后的输出结果是_。(分数:1.00)A.0B.-12C.-20D.1022.有以下程序 #includestdio.h main() int a=2, c=5; printf(“a=%d, b=%d/n“, a, c); 程序的输出结果是_。(分数:2.00)A.a=2, b=5B.a=%2, b=%5C.a=%d, b=%dD.a=%d, b=%d23.下列叙述中正确的是_。(分数:2.50)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态
12、变化情况D.循环队列中元素的个数是由队头指针和队尾指针共同决定24.关系数据模型_。(分数:1.00)A.只能表示实体间 1:1 联系B.只能表示实体间 1:m 联系C.可以表示实体间 m:n 联系D.能表示实体间 1:n 联系而不能表示实体间 n:1 联系25.以下叙述中正确的是_。(分数:1.00)A.C 语言源程序即使不编译,也是可以直接运行的B.一个程序要被称为结构化程序,则只能包含循环结构、选择结构、顺序结构C.使用 N-S 流程图只能描述简单的算法D.复杂算法是指不能分解成子任务的算法26.若 i、j 已定义成 int 型,则下列程序段中内循环体的总执行次数是_。 for(i=6;
13、 i0; i-) for(j=0; j4; j+)(分数:2.50)A.20B.24C.25D.3027.下面不能作为结构化方法软件需求分析工具的是_。(分数:1.00)A.系统结构图B.数据字典(DD)C.数据流程图(DFD 图)D.判定表28.下列叙述中正确的是 _ 。(分数:2.00)A.break 语句只能用于 switch 语句体中B.continue 语句的作用是使程序的执行流程跳出包含它的所有循环C.break 语句只能用在循环体内和 switch 语句体内D.在循环体内使用 break 语句和 continue 语句的作用相同29.以下选项中,不正确的实型常量是_。(分数:1.
14、00)A.123B.1e4C.3.640E-1D.0.3530.有以下程序: #includestdio.h main() int sum,pad,pAd; sum=pad=5; pAd=+sum,pAd+,+pad; printf(“%d/n“,pad); 程序运行后的输出结果是_。(分数:1.00)A.5B.6C.7D.831.以下叙述中正确的是_。(分数:1.00)A.用户自己定义的函数只能调用库函数B.实用的 C 语言源程序总是由一个或多个函数组成C.不同函数的形式参数不能使用相同名称的标识符D.在 C 语言的函数内部,可以定义局部嵌套函数32.下面 4 个关于 C 语言的结论中错误的
15、是_。(分数:2.50)A.可以用 do.while 语句实现的循环一定可以用 while 语句实现B.可以用 for 语句实现的循环一定可以用 while 语句实现C.可以用 while 语句实现的循环一定可以用 for 语句实现D.do.while 语句与 while 语句的区别仅是关键字“while”出现的位置不同33.以下选项中能表示合法常量的是_。(分数:1.00)A.整数: 1,200B.实数: 1.5E2.0C.字符斜杠: “D.字符串: “/007“34.以下叙述中错误的是_。(分数:1.00)A.书写风格良好的程序执行效率高B.书写风格良好的程序易读性好C.C 程序可以在一行
16、上写多条语句D.C 程序允许将一条语句分写在多行上35.以下程序的输出结果是( )。 struct HAR int x, y; struct HAR *p; h2; main() h0.x=1; h0.y=2; h1.x=3; h1.y=4; h0.p=h1; h1.p=h; printf(“%d%d/n“, (h0.p) -x, (h1.p) -y); (分数:1.00)A.12B.23C.14D.3236.某二叉树有 5 个度为 2 的节点,则该二叉树中的叶子节点数是_。(分数:1.00)A.10B.8C.6D.437.有以下程序: #includestdio.h main() int x
17、; scanf (“%d“,B.int x3=0;C.int x23=1,2,3,4,5,6; D.int x23=1,2,3,4,5,6;解析:解析 C 选项中 x23定义的是一个 2 行 3 列的二维数组,而在给数组元素赋值时却赋成了 3 行,因此错误。8.以下关于结构化程序设计的叙述中正确的是_。(分数:1.00)A.一个结构化程序必须同时由顺序、分支、循环三种结构组成B.结构化程序使用 GOTO 语句会很便捷C.在 C 语言中,程序的模块化是利用函数实现的 D.由三种基本结构构成的程序只能解决小规模的问题解析:解析 结构化程序设计是指将待开发的软件系统划分为若干个相互独立的模块,与具体
18、的语句结构无关。goto 语句的滥用会导致程序的可读性降低。三种基本结构构成的程序依然可以解决大规模的问题,只是不利于复用。9.有以下程序,程序中库函数“islower (ch)”用以判断 ch 中的字母是否为小写字母 #include stdio.h #include ctype.h void fun(char *P) int i=0; while(pi) if(pi=“ i+; main() char s1100=“ab cd EFG!“; fun(s1); printf(“%s/n“,s1); 程序运行后的输出结果是_。(分数:1.00)A.ab cd EFG !B.Ab Cd EFg
19、!C.aB cD EFG ! D.ab cd EFg !解析:解析 fun 函数将空格之前的小写字母修改为大写字母,所以答案选 C。10.有以下程序: #includestdio.h double fun(int n) static double f=1; f*=n; return f; main() int i; double s=0; for(i=1; i6; i+) s+=fun(i); printf(“%If/n“, s); 程序计算的是_。(分数:1.00)A.s=1!+2!+3!+4!+5! B.s=1+2+3+4+5C.s=1*2*3*4*5D.s=1!*2!*3!*4!*5!解
20、析:解析 函数 fun()中的变量 f 是静态变量,所以只初始化一次,之后每次调用 fun(),f 的初值就是上一次 fun()结束时的值。对于 fun()函数,当传入 n=1 时,f=1,返回值为 1;当传入 n=2 时,f=12=2,返回值为 2;当传入 n=3 时,f=23=6,返回值为 6;当传入 n=4 时,f=64=24,返回值为24。所以每次调用 fun()函数时,f 变量在上一次 fun()函数运行结束时保留值的基础上,再与 n 相乘,并重新赋值给 f,所以可以将 f 理解为记录当前的累乘值,即当 main()函数中 i=1 时,f=1!=1;当 main()函数中 i=2 时
21、,f=2!=2,当 main()函数中 i=3 时,f=3!=6另外 main()函数中的 s 记录调用 fun()函数的返回值之和,所以 s=1!+2!+i!,由于 i 最大值为 5,所以 s=1!+2!+3!+4!+5!,故答案为 A 选项。11.设变量均已正确定义,若要通过 scanf(“%d%c%d%c“, 语句为变量 a1 和 a2 赋数值 10 和 20,为变量 c1 和 c2 赋字符 x 和 y。以下所示的输入形式中正确的是_。(注:代表空格字符)(分数:1.00)A.10X回车20Y回车B.10X20YC.10X回车20Y回车 D.10X20Y回车解析:解析 输入数据的格式必须
22、与 scanf()的格式控制串完全匹配,如果 A、B、C 选项中在数字 10 后面均输入了空格,则会将空格赋给变量 c1,而不是把 X 赋给 c1,所以选择 C 选项。12.有以下程序 main() int x=1,3,5,7,2,4,6,0,i,j,k; for(i=0; i3 ; i+) for(j=2; j=i ; j-) if(xj+1xj) k=xj; xj=xj+1; xj+1=k; for(i=0; i3; i+) for(j=4; j7-i; j+) if(xjxj+1) k=xj; xj=xj+1; xj+1=k; for(i=0; i8; i+) printf(“%d“,x
23、i); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.75310246 B.01234567C.76310462D.13570246解析:解析 在程序中,第一个 for 循环内部实现的是对数组中前四个元素进行降序排序,第二个 for循环内部实现的是对数组后四个元素进行升序排序,因此数组 x 中的最后结果应该是前四个降序,后四个升序。最终结果为7,5,3,1,0,2,4,6。13.算法的有穷性是指_。(分数:2.00)A.算法程序的运行时间是有限的 B.算法程序所处理的数据量是有限的C.算法程序的长度是有限的D.算法只能被有限的用户使用解析:解析 算法原则上能够精确
24、地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。14.有以下程序: #includestdio.h struct tt int x; struct tt *y; s2=1,0,2,0; main() struct tt *p=s; p-y=s; printf(“%d“,+p-x); 程序运行后的输出结果是_。(分数:1.00)A.2 B.0C.1D.3解析:解析 *p=s,可得 p 指向 s0,p-y 指向 s1,现 p-y=s,因此 p-y 指向 s0。因此 p-x=1,+p-x 等价于+(p-x),因此打印结果为 2。答案为 A 选项。15.设有一个商
25、店的数据库,记录客户及其购物情况,由三个关系组成:商品(商品号,商品名,单价,商品类别,供应商),客户(客户号,姓名,地址,电邮,性别,身份证号),购买(客户号,商品号,购买数量),则关系购买的键为_。(分数:1.00)A.客户号B.商品号C.客户号,商品号 D.客户号,商品号,购买数量解析:解析 候选键(码)是二维表中能唯一标识元组的最小属性集。一个二维表有多个候选码,则选定其中一个作为主键(码)供用户使用。在购买关系中,商品号、客户号、购买数量均不能唯一标识元组,每一个单独的属性集都不能作为键,但商品号与客户号构成的集合与三者构成的集合都可以唯一标识购买关系,而前者为最小属性集,故商品号与
26、客户号构成的集合为候选键,故 C 选项正确。16.以下叙述中正确的是_。(分数:2.00)A.赋值语句是一种执行语句,必须放在函数的可执行部分 B.scanf 和 printf 是 C 语言提供的输入和输出语句C.由 printf 输出的数据都隐含左对齐D.由 printf 输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的解析:解析 scanf 和 printf 是输入输出函数,不是语句,B 错误。printf 输出如果有宽度控制,默认是右对齐,C 错误。数据的实际精度是由数据存储类型决定的,double 精度高于 float,D 错误。赋值语句需要放在可执行语句,所以 A 正
27、确。17.设有下列程序段: char str=“HelloWorld“; char*ptr; ptr=str; 执行上面的程序段后,*(ptr+10)的值为_。(分数:2.50)A.“/0“ B.“0“C.不确定的值D.“0“的地址解析:解析 本题主要考查字符数组和指针,在 C 语言中,字符型数组在存放字符串时会自动在末尾加上“/0“,所以数组 str 有 11 个元素;ptr 指向数组 str 的首地址,ptr+10 是指向 str10,*(ptr+10)是引用 str10的值。18.下列关于栈的叙述正确的是_。(分数:1.00)A.栈按“先进先出”组织数据B.栈按“先进后出”组织数据 C.
28、只能在栈底插入数据D.不能删除数据解析:解析 栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。所以选择B 选项。19.以下程序的输出结果是_。 试题程序#include stdio.h main() int a, b, c; a=10; b=50; c=30; if(ab) a=b, b=c; c=a; printf(“a=% d, b=% d, c=% d“, a, b, c); (分数:1.00)A.a=10,b=50,c=10 B.a=10,b=30,c=10C.a=50,b=30,c=10D.a=50,b=30,c=50解析:解析 本题考查了 if 语句的执行流程
29、。20.有嵌套的 if 语句: if(ab) if(ac)k=a; else k=c; else if(bc)k=b; else k=c; 以下选项中与上述 if 语句等价的语句是_。(分数:2.50)A.k=(ab)?(bc)?a:b):(bc)?b:c);B.k=(ab)?(ac)?a:c):(bc)?b:c); C.k=(ab)?a:b;k=(bc)?b:c;D.k=(ab)?a:b;k=(ac)?a:c;解析:解析 题目中嵌套语句的含义是当 ab 且 ac 成立时,将 a 的值赋给 k,如果 ab 成立而ac 不成立,则将 c 的值赋给 k。如果 ab 不成立而 bc 成立,则将 b
30、的值赋给 k,如果 ab 不成立且 bc 也不成立,则将 c 的值赋给 k。判断条件表达式,只有 B 选项可以表示这个含义。21.有以下程序: #includestdio.h #define SUB(A)(a)-(a) main() int a=2,b=3,c=5,d; d=SUB(a+b)*c; printf(“%d/n“,d); 程序运行后的输出结果是_。(分数:1.00)A.0B.-12C.-20 D.10解析:解析 本题考查宏定义,宏定义只是做简单的替换,所以本题中 SUB(a+b)*c=(a+b)-(a+b)*c=-20,所以答案为 C 选项。22.有以下程序 #includestd
31、io.h main() int a=2, c=5; printf(“a=%d, b=%d/n“, a, c); 程序的输出结果是_。(分数:2.00)A.a=2, b=5B.a=%2, b=%5C.a=%d, b=%d D.a=%d, b=%d解析:解析 格式化输出函数两个%会输出一个%,同时即失去了占位符的作用,d 也会原样输出,所以答案选择 C。23.下列叙述中正确的是_。(分数:2.50)A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D.循环队列中
32、元素的个数是由队头指针和队尾指针共同决定 解析:解析 循环队列有队头和队尾两个指针,但是循环队列仍是线性结构,因此 A 错误;在循环队列中需要队头与队尾两个指针来共同反映队列中元素的动态变化情况,因此 B 与 C 错误,故本题答案为 D。24.关系数据模型_。(分数:1.00)A.只能表示实体间 1:1 联系B.只能表示实体间 1:m 联系C.可以表示实体间 m:n 联系 D.能表示实体间 1:n 联系而不能表示实体间 n:1 联系解析:解析 关系模型是目前最常用的数据模型之一,现实世界的实体以及实体间的各种联系均用关系来表示。实体集之间通过联系来建立连接关系分为三类:一对一联系(1:1)、一
33、对多联系(1:m)、多对多联系(m:n)。故 C 选项正确。25.以下叙述中正确的是_。(分数:1.00)A.C 语言源程序即使不编译,也是可以直接运行的B.一个程序要被称为结构化程序,则只能包含循环结构、选择结构、顺序结构 C.使用 N-S 流程图只能描述简单的算法D.复杂算法是指不能分解成子任务的算法解析:解析 C 语言源程序必须经过编译、链接,生成二进制可执行文件,才可以运行,选项 A 错误;由 3 种基本结构:即循环结构、选择结构、顺序结构构成的程序称为结构化程序,选项 B 正确;使用 N-S流程图可以描述任何算法,选项 C 错误;可以将复杂算法分解成多个子任务来解决,这种程序的设计方
34、法称为模块化设计,选项 D 错误。故本题答案为 B 选项。26.若 i、j 已定义成 int 型,则下列程序段中内循环体的总执行次数是_。 for(i=6; i0; i-) for(j=0; j4; j+)(分数:2.50)A.20B.24 C.25D.30解析:解析 本题考查 for 循环的使用。对于第 1 个 for 循环,任何一个 i,内层 j 的循环都要使 j=0到 3,j=4 时不符合,所以退出 j 循环;然后 i 减 1,j 仍然要从 03,j=4 时退出 j 循环直到 i 变成 0,退出 i 循环。第一条 for 语句执行 6 次,第二条 for 语句执行 4 次,所以内循环体执
35、行 6*4=24 次。27.下面不能作为结构化方法软件需求分析工具的是_。(分数:1.00)A.系统结构图 B.数据字典(DD)C.数据流程图(DFD 图)D.判定表解析:解析 结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。28.下列叙述中正确的是 _ 。(分数:2.00)A.break 语句只能用于 switch 语句体中B.continue 语句的作用是使程序的执行流程跳出包含它的所有循环C.break 语句只能用在循环体内和 switch 语句体内 D.在循环体内使用 break 语句和 continue 语句的作用相同解析:解析 只能在循环体内和 switch 语
36、句体内使用 break 语句。当 break 出现在循环体的 switch 语句体内时,其作用只是跳出该 switch 语句体,并不能中止循环体的执行。若想强行中止循环体的执行,可以在循环体中,但并不在 switch 语句中设置 break 语句,满足某种条件,则跳出本层循环体。29.以下选项中,不正确的实型常量是_。(分数:1.00)A.123 B.1e4C.3.640E-1D.0.35解析:30.有以下程序: #includestdio.h main() int sum,pad,pAd; sum=pad=5; pAd=+sum,pAd+,+pad; printf(“%d/n“,pad);
37、程序运行后的输出结果是_。(分数:1.00)A.5B.6 C.7D.8解析:解析 C 语言区分大小写,pad 与 pAd 是两个不同的变量。首先将 5 赋值给两个变量,由于赋值运算符的优先级高于逗号运算符,所以计算 pAd=+ +sum,此时 pAd 为 6,sum 也为 6,然后计算 pAd+ +,pAd 的值变为 7,+ +pad,pad 的值变为 6,所以选择 B 选项。31.以下叙述中正确的是_。(分数:1.00)A.用户自己定义的函数只能调用库函数B.实用的 C 语言源程序总是由一个或多个函数组成 C.不同函数的形式参数不能使用相同名称的标识符D.在 C 语言的函数内部,可以定义局部
38、嵌套函数解析:解析 A 选项中,“用户自己定义的函数只能调用库函数”描述是不正确的,也可以调用自定义函数;C 选项中,对于不同函数的形式参数可以使用相同名称的标识符;D 选项中,关于函数的定义不可以嵌套,但函数的调用可以嵌套。B 选项正确。32.下面 4 个关于 C 语言的结论中错误的是_。(分数:2.50)A.可以用 do.while 语句实现的循环一定可以用 while 语句实现B.可以用 for 语句实现的循环一定可以用 while 语句实现C.可以用 while 语句实现的循环一定可以用 for 语句实现D.do.while 语句与 while 语句的区别仅是关键字“while”出现的
39、位置不同 解析:33.以下选项中能表示合法常量的是_。(分数:1.00)A.整数: 1,200B.实数: 1.5E2.0C.字符斜杠: “D.字符串: “/007“ 解析:解析 选项 A:整数中不能用逗号分隔,选项 B:实数中 E 后数值必须是整数,选项 C:C 语言里字符串中的字符“/”需转义,应为“/”。34.以下叙述中错误的是_。(分数:1.00)A.书写风格良好的程序执行效率高 B.书写风格良好的程序易读性好C.C 程序可以在一行上写多条语句D.C 程序允许将一条语句分写在多行上解析:解析 书写风格良好的程序易读性好,方便团队合作,分模块来完成复杂的程序设计,B 选项叙述正确。但是书写
40、风格与程序执行效率无关,程序执行效率与程序的数据结构有关,由算法的时间复杂度和空间复杂度决定,A 选项叙述错误。C 语言程序书写规范中,良好的书写习惯中一般一行写一条语句,这样方便阅读,但是一行写多条语句是符合 C 程序编写规则的,C 选项叙述正确。C 程序允许将一条较长的语句分写在多行,D 选项叙述正确。叙述中错误的是 A 选项,故选择 A 选项。35.以下程序的输出结果是( )。 struct HAR int x, y; struct HAR *p; h2; main() h0.x=1; h0.y=2; h1.x=3; h1.y=4; h0.p=h1; h1.p=h; printf(“%d
41、%d/n“, (h0.p) -x, (h1.p) -y); (分数:1.00)A.12B.23C.14D.32 解析:解析 本题考查的是 C 语言中结构体与链表。本题中是一个含有两个结点的循环链表。C 语言中结构体的定义为: struct 结构体类型名 成员项表; );36.某二叉树有 5 个度为 2 的节点,则该二叉树中的叶子节点数是_。(分数:1.00)A.10B.8C.6 D.4解析:解析 根据二叉树的基本性质 3:在任意一棵二叉树中,度为 0 的叶子节点的个数总是比度为 2的节点个数多一个,所以本题中是 5+1=6(个)。37.有以下程序: #includestdio.h main()
42、 int x; scanf (“%d“,&x); if(x=0);else if(x!=5)printf(“%d/n“,x); 程序运行时,输入的值在哪个范围才会有输出结果 _ 。(分数:2.00)A.不等于 5 的整数B.大于 0 且不等 5 的整数 C.大于 0 或等于 5 的整数D.小于 5 的整数解析:解析 题目中,虽然 else 和第二个 if 不在同一行上,但等价于在同一行上,因此,程序的意思是当 x 大于 0 且不等于 5 时将其打印出来。38.在模块化程序设计中,按功能划分模块的原则是 _ 。(分数:1.00)A.各模块的功能尽量单一,且各模块之间的联系尽量少 B.各模块的功能
43、尽量单一,且各模块之间的联系尽量紧密C.各模块应包括尽量多的功能D.各模块应包括尽量多的输入输出操作解析:解析 模块化设计是指把一个大程序按人们能理解的大小规模进行分解。划分模块的基本原则是使每个模块都易于理解。按照人类思维的特点,按功能来划分模块最为自然。在按功能划分模块时,要求各模块的功能尽量单一,各模块之间的联系尽量少。所以选项 B 错误;选项 C 错误;选项 D 错误。39.下列叙述中正确的是_。(分数:1.00)A.所谓有序表是指在顺序存储空间内连续存放的元素序列B.有序表只能顺序存储在连续的存储空间内C.有序表可以用链接存储方式存储在不连续的存储空间内 D.任何存储方式的有序表均能
44、采用二分法进行查找解析:解析 “有序”是特指元素按顺序排列但允许相邻元素相等,A 选项错误。有序表可以顺序存储也可以链式存储,B 选项错。能使用二分法查找的线性表必须满足两个条件:用顺序存储结构;线性表是有序表,D 选项错误。故 C 选项正确。40.以下叙述中错误的是_。(分数:2.00)A.C 语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 B.C 程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C.用 C 语言编写的程序称为源程序,它以 ASCII 代码形式存放在一个文本文件中D.C 语言源程序经编译后生成后缀为.obj 的目标程序解析:解析 C 语言中的非执行语句不会被编译,不会生成二进制的机器指令,因此 A 选项错误。由 C语言构成的指令序列称为 C 源程序,C 源程序经过 C 语言编译程序编译之后生成一个后缀为.obj 的二进制文件(称为目标文件);最后要由”连接程序”把此.obj 文件与 C 语言提供的各种库函数连接起来生成一个后缀为.exe 的可执行文件。根据上述分析可知,A 选项叙述错误。