国家二级(C语言)机试模拟试卷425
选择题
1.以下选项中不合法的标识符是( )。(A)
A. &a
B. FOR
C. print
D. _00
解析:C语占中标识符由字母、下划线、数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。因为C语言中区分大小写,所以B选项中的“FOR”可以作为标识符来用。A选项中含有非法字符&,所以选择A。
2.以下各项中,能正确表述算式sin(2πr+30°)的C语言表达式是( )。(C)
A. sin(2*π*r+30)
B. sin(2*3.14*r+30)
C. sin(2*3.14*r+3.14*30/180.0)
D. sin(2*3.14*r+30*3.14/360.0)
解析:考查算术表达式的写法,选项C中没有,π,需要用数值3.14代替,sin函数的参数为弧度,角度30转成弧度应为3.14*30/180。故应选C。
3.有如下程序
#include
int * sum(int data)
{
static int init = 0;
init += data;
return &init;
}
main()
{
int i, *p;
for (i=1; i<=4; i++) sum(i);
p = sum(0);
printf(\\(A)
A. 10
B. 0
C. 1
D. 15
解析:静态变量在定义时的初始化只运行一次,并且其值在程序运行过程中一直存在,所以函数sum()的作用是用静态变量init累加所有的调用sum()函数时传入的参数值。for循环中传入的参数为1,2,3,4,每次的计算结果为1,3,6,10。再次调用函数sun(0)时返回值为10,答案选A)。
4.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是( )。(C)
A. D(n)
B. D(n2)
C. D(log2n)
D. D(nlog2n)
解析:当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为n的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次。
5.对下列二叉树进行前序遍历的结果为( )。
(B)
A. ABCDEFGH
B. ABDGEHCF
C. GDBEHACF
D. GDHEBFCA
解析:遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:
①前序,访问根→按前序遍历左子树→按前序遍历右子树。
②中序,按中序遍历左子树→访问根→按中序遍历右子树。
③后序,按后序遍历左子树→按后序遍历右子树→访问根。
所以对该二叉树的中序遍历结果为ABDGEHCF。
6.为了使模块尽可能独立,要求( )。(B)
A. 内聚程度要尽量高,耦合程度要尽量强
B. 内聚程度要尽量高,耦合程度要尽量弱
C. 内聚程度要尽量低,耦合程度要尽量弱
D. 内聚程度要尽量低,耦合程度要尽量强
解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
7.在面向对象方法中,不属于“对象”基本特点的是( )。(A)
A. 一致性
B. 分类性
C. 多态性
D. 标识唯一性
解析:对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性。所以选择A。
8.下列选项中不属于软件生命周期开发阶段任务的是( )。(C)
A. 软件测试
B. 概要设计
C. 软件维护
D. Y#细设计
解析:软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其中开发阶段包括概要设计、详细设计、实现和测试。
9.有以下程序:
#include<stdio.h>
main()
{unsigned char a=2,b=4,c=5,d;
d=a|b;d&=c;printf(\\(B)
A. 3
B. 4
C. 5
D. 6
解析:&按位与,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。按位或。两个相应的二进制位中只要有一个为1,该位的结果值为1。2的二进制为00000010,4的二进制为00000100,所以做或运算结果为00000110,该数与5即00000101做与操作结果为00000100,即4。
10.数据库应用系统中的核心问题是( )。(A)
A. 数据库设计
B. 数据库系统设计
C. 数据库维护
D. 数据库管理员培训
解析:数据库应用系统中的核心问题是数据库的设计。
11.有以下程序
#include<stdio.h>
void main()
{
char s[]={\\(A)
A. 0
B. 2
C. 3
D. 5
解析:这段程序的功能求出字符串s中字符的ASCII码小于小写字符a并且大于小写字符z的字符的个数。因为小写字符z的ASCII码大于小写字符a的ASCII码,所以满足a的ASCII码并且大于z的的ASCII码的字符是不存在的,所以输出0。
12.若有以下定义,则对数组元素的正确引用是( )。
int a[5],*p=a;(D)
A. *&a[5]
B. (*a)+2
C. *p+4
D. *(a+2)
解析:本题考查通过指针引用数组元素。选项A、C没有这种引用形式;选项B,(*a)+2与*a+2相同,表示第一个元素的值加2;选项D,*(a+2)引用数组的第3个元素。
13.若已包括头文件<stdio.h>和<string.h>,运行下面程序的输出结果是( )。
char s1[10]=\\(A)
A. 08967
B. 0894567
C. 089567
D. 089567
解析:本题考查字符串复制函数和字符串连接函数:字符串复制函数strcpy(s1,s2)是把s2的字符串复制给s1,执行后s1=089;字符串连接函数strcat(s1,s2),功能是把s2字符串连接到s1字符串的末尾,执行后s1=08967。
14.有以下程序
本文档预览:3600字符,共14312字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载