国家二级C语言机试(选择题)模拟试卷325
选择题
1.下列关于栈的叙述中确的是( )。(B)
A. 栈按“先进先出”组织数据
B. 栈按“先进后出”组织数据
C. 只能在栈底插入数据
D. 不能删除数据
解析:栈是按先进后出的原则组织数据的,数据的插入和删除都在栈顶进行操作。
2.若变量都己正确说明,则以下程序段输出结果为( )。
#include
main()
{char a=’a’;
int b=2:
printf(a>b?\\(D)
A. ***a=3
B. ###b=3
C. ***a=3##b=5
D. 全部错误
解析:本题考查printf函数的格式和三目运算符“?:”的使用。printf函数中格式说明符之前插入的任何字符都原样输出。本题中“a>b”为真,所以返回“***a=97”。
3.在线性表的链式存储结构中,其存储空间一般是不连续的,并且( )。(C)
A. 前件节点的存储序号小于后件节点的存储序号
B. 前件节点的存储序号大于后件节点的存储序号
C. 前件节点的存储序号可以小于也可以大于后件节点的存储序号
D. 以上三种说法均不正确
解析:在线性表的链式存储结构中,各数据节点的存储序号是不连续的,并且各节点在存储空间中的位置关系与逻辑关系也不一致,因此前件节点的存储序号与后件节点的存储序号之间不存在大小关系。
4.C语言程序的模块化通过以下哪个选项来实现(C)
A. 变量
B. 程序行
C. 函数
D. 语句
解析:用函数作为程序模块以实现C程序的模块化,程序有多个函数构成,每个函数可以实现一个具体的功能,实现程序的模块化设计。
5.某棵树中共有25个结点,且只有度为3的结点和叶子结点,其中叶子结点有7个,则该树中度为3的结点数为( )。(D)
A. 6
B. 7
C. 8
D. 不存在这样的树
解析:根据题意,树中只有度为3的结点和叶子结点(7个),则度为3的结点有25-7=18个;又根据树中的结点数=树中所有结点的度之和+1,设度为3的结点数为n,则3n+1=25,得n=8。两种方式得到的度为3的结点数不同,故不存在这样的树。
6.在长度为n的顺序表中查找一个元素,假设需要查找的元素有一半的机会在表中,并且如果元素在表中,则出现在表中每个位置上的可能性是相同的。则在平均情况下需要比较的次数大约为( )。(B)
A. n
B. 3n/4
C. n/2
D. n/4
解析:在顺序表中查找,最好情况下第一个元素就是要查找的元素,则比较次数为1;在最坏情况下,最后一个元素才是要找的元素,则比较次数为n。这是找到元素的情况。如果没有找到元素,则要比较n次。因此,平均需要比较:找到元素的情况×+未找到元素的情况×
=(1+2+…+n)/n×
+n×
=
7.有以下程序:
#include
void fun(char(*P)[6])
{
int 1;
for(i=0;i<4;i++)
printf(“%c”,P[i][i]);
prinff(“\n”);
}
main()
{
char S[6][6]={.“ABCD”,“abcde”,
“12345”,“FGHIJ”,“fghij”,“54321”};
fun(s);
}
程序的运行结果是( )。(B)
A. Aal F
B. Ab3I
C. ABCD
D. fghij
解析:函数fun的功能是输出s[i][i],所以结果会输出s[0][0]、s[1][1]、s[2][2],即Ab31。
8.在长度为64的仃序线性表中进行顺序查找,最坏情况下需要比较的次数为(B)
A. 63
B. 64
C. 6
D. 7
解析:顺序查找又称顺序搜索。顺序查找一般是指在线性表中查找指定的元素,其基本方法是:从线性表的第一元素开始,依次将线性表中的元素与被查找的元素进行比较,若相等则表示找到(即查找成功),若线性表中所有元素都与被查元素进行了比较但都不相等,则表示线性表中没有要找的元素(即查找失败)。如果线性表中的第一个元素就是要查找的元素,则只需要做一次比较就查找成功;但如果要查找的元素是线性表中的最后一个元素,或者要查找元素不在线性表中,则需要与线性表中所有元素进行比较,这是顺序查找的最坏情况,比较次数为线性表的长度。
9.若主函数中有定义语句:int a[10],b[10],c;,在主函数前定义的fun函数首部为:void fun(int x[]),则以下选项中错误的调用语句是( )。(D)
A. fun(b);
B. fun(&c);
C. fun(&a[3]);
D. fun(b[11]);
解析:fun函数的形式参数应为一个数组,而b[11]是一个整型元素,参数类型不一致,且b[11]已经溢出,所以D选项错误。
10.设某棵树的度为3,其中度为2、1、0的结点个数分别为3、4、15。则该树中总结点数为(D)
A. 22
B. 30
C. 35
D. 不可能有这样的树
解析:本题采用画图法来求出结果。首先先画出包含3个度为2的结点;然后再添加4个度为1的结点。根据题目中描述的度为0的结点数有15个,这时要在书中添加度为3的结点,不管怎么添加都不能添加出15个度为0的结点,因此不可能有这样的树。
11.下列程序的运行结果为( )。
#include
void abc(char*str)
{ int a,b,i,j;
for(i=j=0;str[i]!=’\0’;i++)
if(str[i]!=’a’)
str[j++]=str[i];
str[j]=’\0’;
}
void main()
{ char str[]=\\(A)
A. str[]=bcdef
B. str[]=abcdef
<本文档预览:3600字符,共11339字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载