国家二级C语言机试(选择题)模拟试卷238
选择题
1.在软件开发中,需求分析阶段产生的主要文档是( )。(D)
A. 数据字典
B. 详细设计说明书
C. 数据流图说明书
D. 软件需求规格说明书
解析:需求分析的最终结果是生成软件需求规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便。
2.以下叙述正确的是(B)
A. C语言程序是由过程和函数组成的
B. C语言函数可以嵌套调用,例如:fun(fun(x))
C. C语言函数不可以单独编译
D. C语言中除了main函数,其他函数不可作为单独文件形式存在
解析:在C语言中,允许函数的嵌套调用,即递归调用。在C语言中不存在过程的概念,在C语言中函数允许单独编译,可以作为单独的文件形式存在。
3.下列数据结构中,能够按照“先进后出”原则存取数据的是(B)
A. 循环队列
B. 栈
C. 队列
D. 二叉树
解析:栈按照“先进后出”(FILO)或“后进先出”(LIFO)组织数据;队列是“先进先出”(FIFO)或“后进后出”(LILO)的线性表。
4.下列属于白盒测试方法的是( )。(B)
A. 等价类划分法
B. 逻辑覆盖
C. 边界值分析法
D. 错误推测法
解析:白盒测试法主要有逻辑覆盖、基本路径测试等。逻辑覆盖测试包括语句覆盖、路径覆盖、判定覆盖、条件覆盖、判断一条件覆盖,选择B选项。其余为黑盒测试法。
5.设栈的顺序存储空间为S(0:49),栈底指针bottom=49,栈顶指针top=30(指向栈顶元素)。则栈中的元素个数为(C)
A. 30
B. 29
C. 20
D. 19
解析:在操作系统中,栈是向下生长的,如下图如示:
6.结构化程序设计的基本原则不包括(A)
A. 多元性
B. 自顶向下
C. 模块化
D. 逐步求精
解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化和限制使用GOTO语句,其中不包括多态性。
7.有以下程序:
#include<stdio.h>
main( )
{
char x=2,y=2,z;
z=(y<<1)&(x>>1);
printf(″%d\n″,z);
}
程序的输出结果是( )。(B)
A. 1
B. 0
C. 4
D. 8
解析:本题考查位运算<<和&。y<<1为4,x>>1为1,二者与运算后为0,故B选项正确
8.若有定义语句: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。
9.以下选项中与iffa:1)a=b;else a++;语句功能不同的switch语句是
A
解析:if else语句的含义是,如果变量a的值等于1,则把变量b的值赋给变量a,否则,变量a的值加l。在本题的4个选项中,与其含义不同的是选项A),表示如果变量a的值等于1,则把变量a的值加1,否则,把变量b的值赋给变量a。
10.有以下程序:
#include
#define N 4
void fun(int a[][N],int b[]){
int i;
for(i=0;i<N;i++)b[i]=a[i][i];
}
main()
{
int x[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},Y[N],i;
fun(X,y);
for(i=0;i<N;i++)
prinff(“%d,”,Y[i]);
prinff(“\n”);
}
程序的运行结果是( )。(A)
A. 1,0,7,0,
B. 1,2,3,4,
C. 1,4,5,9,
D. 3,4,8,10,
解析:该程序首先在定义变量时,对二维数组x[][N]进行赋值操作;调用函数fun,函数fun的功能是将二维数组中的a[0][0]、a[1][1]、a[2][2]和a[3][3]赋值给一维数组,最后将一维数组1,0,7,0,输出。
11.在E—R图中,用来表示实体联系的图形是(C)
A. 椭圆形
B. 矩形
C. 菱形
D. 三角形
解析:构成E-R图的基本要素是实体型、属性和联系,其表示方法为:实体型(Entity)—用矩形表示;属性(Attribute)—用椭圆形表示,联系(Relationship)—用菱形表示,菱形框内写明联系名。
12.有三个关系R、S和T如下:
(D)
A. 笛卡尔积
B. 交
C. 并
D. 自然连接
解析:在实际应用中,最常用的连接是一个叫自然连接的特例。它满足下面的条件:两关系间有公共域;通过公共域的相等值进行连接。通过观察三个关系R,S,T的结果可知关系T是由关系R和S进行自然连接得到的。
13.有以下程序
#include
main()
{
int s[12]={1,2,3,4,4,3,2,1,1,1,2,3),c[5]={0),i;
f.0r(i=0;i<12;i++)c[s[i]]++;
for(i=1;i<5;i++)printf(\\(A)
A. 4 3 3 2
B. 2 3 4 4
C. 1 2 3 4
D. 1 1 2 3
解析:本题考查for语句的循环控制,首先定义了两个数组并赋予了初始值,第一个for循环语句循环12次遍历s数组的各个元素,将s[]中的原素值作为c[]数组中的下标,使相应的值自加。例如当i=0,c[s[0]]++为c[1]++,其值变为1,当执行i=1,2,…!1后,c[1]、c[2]、c[3]、c[4]分别为4、3、3、2,故选项A为正确的运行结果。
14.有以下程序
#include
main()
{ int k=5,n=0;
do
{ switch(k)
{ case 1:case 3: n+=1; k–; break;
default: n=0; k–;
case 2:c
本文档预览:3600字符,共7788字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载