国家二级(C语言)机试模拟试卷527
选择题
1.为了使模块尽可能独立,要求( )。(B)
A. 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强
B. 模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱
C. 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱
D. 模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
解析:系统设计的质量主要反映在模块的独立性上。评价模块独立性的主要标准有两个:一是模块之间的耦合,它表明两个模块之间互相独立的程度;二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。
2.数据管理技术发展的三个阶段中,( )没有专门的软件对数据进行管理。
Ⅰ.人工管理阶段
Ⅱ.文件系统阶段
Ⅲ.数据库阶段(A)
A. 仅Ⅰ
B. 仅Ⅲ
C. Ⅰ和Ⅱ
D. Ⅱ和Ⅲ
解析:数据管理技术发展的二个阶段中,只有人工管理阶段,没有操作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。
3.以下程序:
#include
main()
{ char str[10];
scanf(\\(A)
A. how
B. how are you
C. h
D. howareyou
解析:当从键盘输入:how are you时,由于scanf输入函数的特点是遇到空格时结束读入字符,因此,该程序只将how这3个字符送到了字符数组str中,并在其后自动加上结束符“\0”。
4.有以下函数定义:
int fun(double a,double b)
{retum a*b;}
若以下选项中所用变量都已正确定义并赋值,错误的函数调用是( )。
C
解析:本题考查函数调用时的参数传递。选项C)中第一个参数的表达式不正确,因此不能得到正确的结果。
5.关系表中的每一行记录称为一个( )。(B)
A. 字段
B. 元组
C. 属性
D. 关键码
解析:在关系表中,每一列称为一个属性,对应表中的一个字段;每一行称为一个元组,对应表中的一条记录。
6.若有以下程序段:
int r=8;
printf(\\(C)
A. 16
B. 8
C. 4
D. 2
解析:C语言中“>>”是对二进制的右移运算符,右移相当于将原数做除二操作,它将原数右移相应位数,并将移出的位信息舍去,在高位补0,将所得的结果再赋值给变量。本题中8的二进制为00001000,右移一位得到00000100,所以是4。
7.以下叙述中不正确的是( )。(D)
A. 在不同的函数中可以使用相同的名字的变量
B. 函数中的形式参数是局部变量
C. 在一个函数内定义的变量只在本函数范围内有效
D. 在一个函数内的复合语句中定义的变量在本函数范围内有效
解析:此题考查的是变量的作用范围。选项D)中,在一个函数的复合语句中定义的变量是局部变量,只在定义此变量的复合语句内有效,并不是在整个函数体内都有效。
8.对序线性表(23,29,34,55,60,70,78)用二分法查找值为60的元素时,需要比较次数为( )。(C)
A. 1
B. 2
C. 3
D. 4
解析:根据二分法查找法需要两次:
①首先将60与表中间的元素55进行比较,由于60大于55,所以在线性表的后半部分查找。
②第二次比较的元素是后半部分的中间元素,将60与表中间的元素70进行比较,由于60小于70,所以在线性表的前半部分查找。
③第三次比较的元素是前半部分的中间元素,即60,这时两者相等,即查找成功。
9.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是( )。(C)
A. 1:1联系
B. m:1联系
C. 1:m联系
D. m:n联系
解析:两个实体集间的联系实际上是实体集间的函数关系,主要有一对一联系(1:1)、一对多联系(1:m)、多对一联系(m:1)、多对多联系(m:n)。对于每一个实体部门,都有多名职员,则其对应的联系为一对多联系(1:m),答案选C。
10.若有定义:int a-7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是( )。(A )
A. 2.500000
B. 2.750000
C. 3.5
D. 0
解析:此题考查的是变量的类型转换。表达式中(int)(x+y)把x+y=(7.2)的值强制转化成整型即得到7,那么a%3*(int)(x+y)%2的值为整型常量1,所以a%3*(int)(x+y)%2/4的值为0;因为变量x是浮点型变量,所以表达式x+a%3*(int)(x+y)%2/4的结果也是浮点型,得到2.500 000。
11.有以下程序
#include<stdio.h>
main()
{int k=5,n=0;
while(k>0)
{switch(k)
{default:break;
case1:n+=k:
case2:
case3:n+=k:
}
k–;}
printf(\\(D)
A. 0
B. 4
C. 6
D. 7
解析:因为没有break语句,当k=2的时候,会顺序执行两条语句,k=l的时候,会顺序执行3条语句。
12.有以下程序段
intj;float y;char name[50];
scanf(\\(B)
A. 55566.0
B. 566.0
C. 7777.0
D. 566777.0
解析:因为在输入格式控制符中指定变量j的输入格式控制符为“%2d”.即变量j所占的宽度为2,所以变量j只接收输入数据的前两位,从第3位开始直到空格之间的输入整数都会被保存到变量y中。因为y为浮点型数据.所以输出结果为选项B)。
13.下列说法不正确的是( )。(D)
A. int*ptr;//指针指向整形数据
B. char*ptr;//指针的类型是字符型指针
C. int**ptr;//指针的类型是双重指针
D. int(*ptr)[3];//是一个指针数组,数组共有三个元素,而三个元素是int型指针
解析:int(*ptr)[3]是一个数组指针,指针指向一个有3个int型变量的数组。
14.下列叙述中错误的是( )。(C)
A. 算法的时间复杂度与算法所处理数据的存储结构有直接关系
B. 算法的空间复杂度与算法所处理数据的存储结构有直接关系
本文档预览:3600字符,共15732字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载