二级C语言选择题专项强化真题试卷6
选择题
1.在满足实体完整性约束的条件下( )。(A)
A. 一个关系中应该有一个或多个候选关键字
B. 一个关系中只能有一个候选关键字
C. 一个关系中必须有多个候选关键字
D. 一个关系中可以没有候选关键字
解析:实体完整性约束要求关系的主键中属性值不能为空值,因此本题答案为A。
2.设二叉树共有150个节点,其中度为1的节点有10个,则该二叉树中的叶子节点数为( )。(D)
A. 71
B. 70
C. 69
D. 不可能有这样的二叉树
解析:在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。对任何一棵二叉树,度为O的节点总是比度为2的节点多一个。如果有一棵二叉树,节点总数为150,假设度为0的节点个数为n,则有n+10+n—1=150,n=70.5,由于节点个数必须是整数,所以不可能有题目中这样的二叉树。故选择D选项。
3.若有定义:char c;int d;,程序运行时输入:c=1,d=2,能把字符1输入给变量c、整数2输入给变量d的输入语句是( )。(D)
A. scanf(\\
B. scanf(\\
C. scanf(\\
D. scanf(\\
解析:scanf()函数中,%d对应的参数为整数型地址,%c对应的参数为chat型地址,故A、C选项错误;如果输入地址有多个,应该用逗号隔开,故B选项错误,因此答案为D选项。
4.有以下程序:
#jnclude<stdio.h>
int fun(int(*s)[4],int n,int k)
{int m,i;
m=s[0][k];
for(i=1;i<n;i++)
if(s[i][k]>m)
m=s[i][k];
return m;
}
main( )
{int a[4][4]={{1,2,3,4},
{11,12,13,14},
{21,22,23,24},
{31,32,33,34}};
prinff(\\(C)
A. 4
B. 34
C. 31
D. 32
解析:本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4、0,这样对应定义fun函数首部有三种形式,这里采用了第一种形式——行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中最大的那个元素。因此C选项正确。
5.下列叙述中正确的是( )。(D)
A. 每一个结点有两个指针域的链表一定是非线性结构
B. 所有结点的指针域都为非空的链表一定是非线性结构
C. 循环链表是循环队列的链式存储结构
D. 线性结构的存储结点也可以有多个指针
解析:一个非空的数据结构如果满足以下两个条件:有且只有一个根结点;每一个结点最多有一个前件,也最多有一个后件,则称为线性结构,在数据结构中习惯称为线性表。双向链表结点具有两个指针域,属于线性结构,A选项错误。循环链表所有结点的指针域都为非空,属于线性结构,B选项错误。循环链表是链表,循环队列属于队列,队列只能在队尾入队,在排头退队,链表可以在任何位置插入、删除,C选项错误。双向链表结点具有多个指针域,D选项正确。
6.有以下程序:
#include
int fun(int*b,int n)
{ int i,r=1;
for(i=0;i<=n;i++)r=r*b[i];
return r;
}
main()
{ int x,a[]={2,3,4,5,6,7,8,9};
x=fun(a,3);
printf(\\(C)
A. 24
B. 720
C. 120
D. 6
解析:函数fun()求数组指定返回的元素的积。函数fun(a,3)求的是数组a[0]一a[3]的积。因此结果为2*3*4*5=120,故答案为C选项。
7.下列关于线性链表的叙述中,正确的是( )。(C)
A. 各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致
B. 各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续
C. 进行插入与删除时,不需要移动表中的元素
D. 以上说法均不正确
解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。线性链表中数据的插入和删除都不需要移动表中的元素,只需改变结点的指针域即可。
8.下列定义数组的语句中,正确的是( )。(A)
A. #define N 10
int x[N];
B. int N=10;
int x[N];
C. int x[0…10];
D. int x[];
解析:数组说明的一般形式为:类型说明符数组名[常量表达式]。B)选项中N是变量,不能用变量定义数组长度。C)选项中数组长度是非法的一串数字。定义数组时必须为其指明长度,D)选项中数组长度为空。所以非法。
9.设有定义
#include<stdio.h>
#include<stdlib.h>
typedef struet{int x,y;}T;
typedef struet{int x,y;}*USER;
USER fun( )
{USER p;
p=(USER)malloc(sizeof(T));
p->x=1:
p->y=2:
return p;
}
函数fun返回值的类型是( )。(B)
A. T类型的结构体
B. 指向结构体类型的指针
C. int类型的元素
D. int类型的指针
解析:由题意可知:使用typedef将类型:struct{int x,y;*重命名为USER,所以函数fun的返回类型为struct{int x,y;}*,即指向结构体类型的指针,本题答案为B。
10.若有定义:int a;float b;double c;,程序运行时输入:1,2,3,能把1输入给变量a、2输入给变量b、3输入给变量c的输入语句是( )。(A)
A. scanf(\\
B. scanf(\\
C. seanf(\\
D. scanf(\\
解析:scanf()函数中,%d对应的参数是整数型地址,%f对应的参数是float型地址,%If对应的参数是double型地址,因此C、D选项错误;在格式化字符串中,如果输入地址有多个,应该用逗号隔开,B选项错误,故答案为A选项。
11.有以下程序:
#include
main()
{ int a=1,b=0;
pfinff(\\(A)
A. 1,2
B. 1
本文档预览:3600字符,共8075字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载