二级C语言选择题专项强化真题试卷21
选择题
1.以下表达式中,结果为“假”的是( )。(B)
A. (3+4)>6
B. (31=4)>2
C. 3<=4||3
D. (3<4)=1
解析:A项,先执行3+4=7,7>6,结果为真;B项,先执行3!=4为真,即为1,1>2结果为假;C项,先执行3<=4结果为真,即1,再逻辑或3,结果为真;D项,先执行3<4结果为真,即为1,再执行1=1,结果为真。
2.设有定义:int a,b;float x,y;,则以下选项中对语句所做的注释叙述错误的是( )。(B)
A. scanf(\\
B. scanf(\\
C. scanf(\\
D. scanf(\\
解析:考查scanf函数的格式输入,“格式控制串”中允许有非格式字符,只不过输入时也要输入该非格式字符,选项D正确。输入的数据与输出类型不一致时,编译依然能通过,只不过输出结果有可能不正确,选项C正确。输入多个数据时,系统等待接收的数据个数与“格式控制串”中的格式控制符的个数一致,然后把接收的数据依次赋值给后面的变量,若变量个数多于格式控制符个数,则多余的变量不获取数据,若少于,系统会在接收完额定数目的数据之后报错,答案选B。
3.以下数组定义中错误的是( )。
D
解析:二维数组的第一维数据表示行数,第二维数据表示列数,所以x[2][3]中的数据应为两行三列,和定义内容不符,选项D错误,答案选D。
4.以下叙述中错误的是( )。(D)
A. 当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL
B. 函数可以返回地址值
C. 改变函数形参的值,不会改变对应实参的值
D. 可以给指针变量赋一个整数作为地址值
解析:不可以把一个int型数据直接赋值给一个指针变量,只能用取地址运算符“&”把该整型变量的地址赋值给该指针变量,选项D错误;函数类型若为指针类型则可以返回地址值,选项B正确;函数传参过程中,是把实参的数据复制一份传给形参,所以改变形参的值不会对实参造成影响,选项C正确;NULL的定义包含在头文件stdio.h中,所以选项A正确;所以答案选D。
5.存储在计算机内有结构的数据集合是( )。(A)
A. 数据库
B. 数据库系统
C. 数据库管理系统
D. 数据结构
解析:数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库系统是由数据库及其管理软件组成的系统,是应用软件。数据库管理系统是数据库系统的核心,它位于用户与操作系统之间,属于系统软件。数据结构是计算机存储、组织数据的方式。故本题选A选项。
6.下列关于二叉树的叙述中,正确的是( )。(B)
A. 叶子结点总是比度为2的结点少一个
B. 叶子结点总是比度为2的结点多一个
C. 叶子结点数是度为2的结点数的两倍
D. 度为2的结点数是度为1的结点数的两倍
解析:根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个。所以选择B。
7.某棵树中共有25个节点,且只有度为3的节点和叶子节点,其中叶子节点有7个,则该树中度为3的节点数为( )。(A)
A. 不存在这样的树
B. 7
C. 8
D. 6
解析:树是一种简单的非线性结构,直观地来看,树是以分支关系定义的层次结构。在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。首先假设这样的树是存在的,由于只有度为3的节点和叶子节点,可知最后一层都为叶子节点,倒数第二层一部分节点的度为3,一部分节点为叶子节点。节点总数为25,叶子节点有7个,则度为3的节点有18个,由于(34—1一1)/2<18<(35—1一1)/2可知,树共有5层,前三层有度为3的节点(34—1一1)/2=13个,第四层有34—1=27个节点,其中5个是度为3的节点,22个是叶子节点,此时与题目给出的叶子节点有7个相矛盾,故不存在这样的树。故选择A选项。
8.若要建立下图所示的存储结构,以下正确的程序段是( )。
(A)
A. char**q,*p,c;
p=&c;q=&p;
B. char**q,*p,c;
p=&c;q=*p;
C. char*q,*p,c;
p=&c;*q=p;
D. char*q,*p,c;
q=p;p=* c;
解析:由图示可知,c是个普通变量,p指向c,因此p是指针,且p=&c,q指向p,但是p也是指针,因此q是指向指针的指针q=&p,因此定义是int**q,*p,c,q=&p,P=&c。答案为A选项。
9.下列关于算法复杂度叙述正确的是( )。(B)
A. 最坏情况下的时间复杂度一定高于平均情况的时间复杂度
B. 时间复杂度与所用的计算工具无关
C. 对同一个问题,采用不同的算法,则它们的时间复杂度是相同的
D. 时间复杂度与采用的算法描述语言有关
解析:算法的时间复杂度是指执行算法所需要的计算工作量,它与使用的计算机、程序设计语言以及算法实现过程中的许多细节无关,B选项正确,D选项错误。最坏情况下的时间复杂度可以与平均情况的时间复杂度相同,A选项错误。不同的算法时间复杂度一般不相同,C选项错误。
10.以下叙述正确的是( )。(B)
A. 不能在数组说明符的一对方括号中使用表达式
B. char c1,*c2,**c3,04[2];是C语言的合法语句
C. 数组下标的最小值可以是负值
D. 若有数组定义int array[5];则语句printf(\\
解析:在B选项中,c1是字符型变量,c2是字符型指针变量,c3是指向字符型指针的指针变量,04[2]是一个一维字符数组,这些都是C语言的合法语句,因此答案为B选项。
11.有下列程序
#include<stdio.h>
void f(int x[],int n)
{if(n>1)
{prinff(\\(C)
A. 1234321
B. 43211234
C. 4321234
D. 12344321
解析:f( )函数有两个参数:数组首地址x和数组元素个数n,当n大于1时,执行首先输出最后一个元素x[n-1],然后递归调用自身;直到n等于1时再次输出x[n-1],然后回到上一层调用,输出x[n-1];main( )函数定义一个数组a,包含四个元素:1,2,3,4,然后调用f函数f(a,4),此时形参x等于a,形参n的值是4,所以输出a[3]即4,接着调用f(a,3),输出3,调用f(a,2)输出2,调用f(a,1)输出1;接着再逐步回到上一层的调用:f(a,2)输出2,f(a,3)输出3,f(a,4)输出4,最终程序输出结果为:4,3,2,1,2,3,4,本题答案为C。
12.下面能作为软件需求分析工具的是( )。(D)
A. PAD图
B. 程序流程图
C. 甘特图
D. 数据流程图(DFD图)
本文档预览:3600字符,共7747字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载