国家二级C语言机试(选择题)模拟试卷380
选择题
1.有以下程序:
#include
#define f(x)x*x*x
main()
{
int a=3,s,t;
s=f(a+1);t=f((a+1));
prinff(“%d,%d\n”,*,t);
}
程序运行后的输出结果是( )。(A)
A. 10,64
B. 10,10
C. 64,10
D. 64,64
解析:c语言中带参数的宏可以理解为用参数直接替代定义式中的变量,而不经过任何修改。所以s=f(a+1)=a+1*a+1*a+1,t=f((a+1))=(a+1)*(a+1)*(a+1),所以有无括号的运算结果是不同的。
2.下列对队列的描述中正确的是(D)
A. 队列属于非线性表
B. 队列按“先进后出”原则组织数据
C. 队列在队尾删除数据
D. 队列按“先进先出”原则组织数据
解析:队列(queue)是指允许在一端进行插入、而在另一端进行删除的线性表。允许插入的一端称为队尾;允许删除的一端称为队头。在队列这种数据结构中,最先插入的元素将最先能够被删除;反之,最后插入的元素将最后才能被删除。因此,队列又称“先进先出”或“后进后出”的线性表。
3.深度为5的完全二叉树的结点数不可能是( )。(A)
A. 15
B. 16
C. 17
D. 18
解析:设完全二叉树的结点数为n,根据深度为k的二叉树至多有2k-1个结点,再根据完全二叉树的定义可知,2k-1-1<n≤2k-1。本题中完全二叉树的深度为5,则25-1-1<n≤25-1,15<n≤31。因此,结点数不能为15。
4.软件生命周期中的活动不包括( )。(A)
A. 市场调研
B. 需求分析
C. 软件测试
D. 软件维护
解析:软件生命周期可以分为软件定义、软件开发与软件运行维护3个阶段,主要活动阶段是可行性研究与计划阶段、需求分析、软件设计、软件实现、软件测试、运行和维护,不包括市场调研,所以选择A选项。
5.阅读以下程序
#include<stdio.h>
main( ){
intcase;
floatprintF;
printf(’’请输入2个数:’’);
scanf(’’%d%f’,&case,&printF);
printf(’’%d%f\\
’’,case,printF);}
该程序在编译时产生错误,其出错原因是(B)
A. 定义语句出错,printF不能用作用户白定义标识符
B. 定义语句出错,case是关键字,不能用作用户自定义标识符
C. 定义语句无错,scanf不能作为输入函数使用
D. 定义语句无错,printf不能输出case的值
解析:case是C语言中的一个关键字,不能用作用户标识符来使用,所以这段程序代码存编译时就会出错。
6.下面对软件描述错误的是( )。(C)
A. 文档是不可执行的
B. 程序和数据是可执行的
C. 软件文档是与程序开发、维护和应用无关的资料
D. 软件是程序、数据及相关文档的集合
解析:软件是程序、数据及相关文档的集合。程序、数据和相关文档又称为软件的三要素。其中,程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文资料。可见,软件有两部分组成:一是机器可执行的程序和数据;二是机器不可执行的文档。
7.以下选项中合法的常量是(D)
A. 2.7e
B. 999
C. 123E0.2
D. Oxab
解析:Oxab是十六进制表示的常龄。
8.对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为(C)
A. log2n
B. n/2
C. n
D. n+1
解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有元素进行比较,这是顺序查找的最坏情况,需要比较的次数为n次。
9.下列结构中属于线性结构链式存储的是(A)
A. 双向链表
B. 循环队列
C. 二叉链表
D. 二维数组
解析:数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象,并由此得到两种不同的存储结构:顺序存储结构和链式存储结构。数据的存储结构是指数据的逻辑结构在计算机中的表示。双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱,它的存储方式是线性结构链式。循环队列、二叉链表和二维数组都是顺序存储结构。
10.下列描述中,正确的是( )。(A)
A. 线性链表是线性表的链式存储结构
B. 栈与队列是非线性结构
C. 双向链表是非线性结构
D. 只有根结点的二叉树是线性结构
解析:根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件:①有且只有一个根结点;②每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构,又称线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。
11.若有以下程序
#include
main(){
int a=0,b=0,c=0;
c=(a-=++a),(a+=b,b+=4);
printf(\\(C)
A. 0,4,4
B. 1,4,1
C. 0,4,0
D. 1,4,4
解析:表达式c=(a-=++a),(a+=b,b+=4)相当于逗号表达式,首先计算c=(a-=++a),其中a-=++a)等价于a=a-(++a),得到a的值0,c的值为0.在计算(a+=b,b+=4)时,a和b的初值为0.计算以后,a为0,b为4。
12.设有定义:
char s[81];int i=0;
以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是( )。
C
解析:函数scanf()输入字符串时默认空格为间隔符,所以不能输入空格,答案选C。
13.若有定义语句:int x:12,y=8,z;,在其后执行语句z=0.9+x/y;,则z的值为( )。(A)
A. 1
B. 1.9
C. 2
D. 2.4
解析:先计算x/y,结果为1,然后计算0.9+1,结果为1.9,但由于变量z为整型,取值1,所以z的值为1。
14.下列条件语句中,输出结果与其他语句不同的是( )。(C)
A. if(a!=0)pfintf(\\
B. if
本文档预览:3600字符,共10515字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载