二级C语言选择题专项强化真题试卷44
选择题
1.以下叙述中错误的是( )。(A)
A. 使用三种基本结构构成的程序只能解决简单问题
B. 结构化程序由顺序、分支、循环三种基本结构组成
C. C语言是一种结构化程序设计语言
D. 结构化程序设计提倡模块化的设计方法
解析:使用顺序、选择(分支)、循环3种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,因此A选项错误。
2.下列数据结构中,属于非线性结构的是( )。(C)
A. 循环队列
B. 带链队列
C. 二叉树
D. 带链栈
解析:线性结构的特点:
①有且只有一-个根结点;
②每一个结点最多有一个前驱,也最多有一个后继。
不满足线性结构条件的称为非线性结构,二叉树的非叶子结点最多可以用两个后继,属于非线性结构。
3.负责数据库中查询操作的数据库语言是( )。(C)
A. 数据定义语言
B. 数据管理语言
C. 数据操纵语言
D. 数据控制语言
解析:数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增、删、改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。
4.若有以下程序段:
double x=5.16894;
printf(\\(C)
A. 5.170000
B. 5.175000
C. 5.169000
D. 5.168000
解析:本题考查强制类型转换与输出格式。%f的输出格式是以带小数点的数学形式输出浮点数。首先计算x*1000,结果为5168.94,加0.5为5169.44,然后进行强制类型转换,转换成整型为5169,然后除以双精度数据1000,结果为双精度数据5.169,输出时按照%1的格式输出,所以输出结果为5.169000。
5.下列叙述中正确的是( )。(A)
A. 解决同一个问题的不同算法的时间复杂度一般是不同的
B. 解决同一个问题的不同算法的时间复杂度必定是相同的
C. 对同一批数据作同一种处理,如果数据存储结构不同,不同算法的时间复杂度肯定相同
D. 对同一批数据作不同的处理,如果数据存储结构相同,不同算法的时间复杂度肯定相同
解析:算法的时间复杂度是指执行算法所需要的计算工作量,而计算工作量是用算法所执行的基本运算次数来度量的。解决同一个问题的不同算法的时间复杂度,可能相同也可能不相同。算法的时间复杂度与数据存储结构无关,对同一批数据做同一种处理或者不同处理,数据存储结构相同或者不同,算法的时间复杂度都可能相同或者不同。故选A选项。
6.有以下程序:
#include<stdio.h>
main( )
{int k=5:
while(–k)pfintf(\\(A)
A. 1
B. 2
C. 4
D. 死循环
解析:–k先自减再使用,所以第一次判断条件即为while(4),条件为真,执行打印k的值k=4-3,结果为1;第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。所以选择A选项。
7.下列选项中,能正确定义数组的语句是( )。(D)
A. intnum[0..2008];
B. int num[];
C. int N=2008;
int hum[N];
D. #define N2008
int num[N];
解析:C语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C选项错误,N为变量,不能用来定义数组大小。因此D选项正确。
8.设有以下语句:
typedef struct TT
{char c;int a[4];}CIN:
则下面叙述中正确的是( )。(D)
A. CIN是struet Tr类型的变量
B. TT是struet类型的变量
C. 可以用TT定义结构体变量
D. 可以用CIN定义结构体变量
解析:本题考查typedef重新声明一种结构体类型,其中CIN为结构体类型名,而不是结构体变量,所以D选项正确。
9.若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是( )。
A
解析:B)选项中switch((int)x);语句中不应该有最后的分号。switch(expr1),中的expr1不能用浮点类型或long类型,也不能为一个字符串,所以C)错误。case后面常量表达式的类型必须与switch后面表达式的类型一致,所以D)错误。
10.下列叙述中正确的是( )。(D)
A. 有两个指针域的链表称为二叉链表
B. 循环链表是循环队列的链式存储结构
C. 带链的栈有栈顶指针和栈底指针,因此又称为双重链表
D. 节点中具有多个指针域的链表称为多重链表
解析:双向链表与二叉链表均是有两个指针域的链表,A选项错误。在单链表的第一个节点前增加一个表头节点,队头指针指向表头节点,最后一个节点的指针域的值由NULL改为指向表头节点,这样的链表称为循环链表。循环队列是队列的一种顺序存储结构。循环链表与循环队列是两种存储结构,B选项错误。双向链表节点有两个指针域,指向前一个节点的指针和指向后一个节点的指针,而带链的栈是单链表形式,C选项错误。故正确答案为D选项。
11.若变量已正确定义,在if(w)printf(\\(A)
A. ab+c
B. ch=getchar()
C. a==b+c
D. a++
解析:选项A)是非法的表达式,C语言中没有运算符。
12.有以下程序:
#include
main()
{ int c=0,k;
for(k=1;k<3;k++)
switch(k)
{default:c+=k;
case 2:c++;break;
case 4:c+=2;break;
}
printf(\\(C)
A. 7
B. 5
C. 3
D. 9
解析:向switch语句块传送参数后,编译器会先寻找匹配的case语句块,找到后就执行该语句块,遇到break跳出;如果没有匹配的语句块,则执行default语句块。case与default没有顺序之分。所以第一次循环k的值为1,执行c+=k,c的值为1,再执行case 2后的语句c++,c的值为2,遇到break语句跳出循环;第二次循环k的值为2,执行case 2后面的语句c++,c的值为3,跳出循环。
13.以下表达式中,其值不等于数值3的是( )。(A)
A. 0+’3’
B. ’D’-’A’
C. ’3’-’0’
D. ’d’-’a’
解析:字符’3’的AscII码值是51,所以选项A的值是51;字符’D’、’A’的ASCII码值是68、
本文档预览:3600字符,共6873字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载