1、国家二级( C语言)笔试模拟试卷 257 及答案与解析 1 软件需求分析阶段的工作,可以分为 4个方面:需求获取、需求分析、编写需求规格说明书以及 ( )。 ( A)阶段性报告 ( B)需求评审 ( C)总结 ( D)都不正确 2 下列叙述中正确的是 ( )。 ( A)在面向对象的程序设计中,各个对象之间具有密切的关系 ( B)在面向对象的程序设计中,各个对象都是公用的 ( C)在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小 ( D)上述 3种说法都不对 3 以下不是面向对象思想中的主要特征的是 ( A)多态 ( B)继承 ( C)封装 ( D)垃圾回收 4 数据库技术的根本目标是
2、要解决数据的 ( A)存储问题 ( B)共享问题 ( C)安全问题 ( D)保护问题 5 数据库、数据库系统和数据库管理系统之间的关系是 ( A)数据库包括数据库系统和数据库管理系统 ( B)数据库系统包括数据库和数据库管理系统 ( C)数据库管理系统包括数据库和数据库系统 ( D)三者没有明显的包含关系 6 若待排序序列中元素非常多,而且它们的排列是完全 无序的,那么最好选用下列排序方法中的 _。 ( A)冒泡排序 ( B)简单选择排序 ( C)直接插入排序 ( D)快速排序 7 下列关于栈的描述中错误的是 ( A)栈是先进后出的线性表 ( B)栈只能顺序存储 ( C)栈具有记忆作用 ( D
3、)对栈的插入与删除操作中,不需要改变栈底指针 8 耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 _。 ( A)提高耦合性降低内聚性有利于提高模块的独立性 ( B)降低耦合性提高内聚性有利于提高模块的独立性 ( C)耦合性是指 个模 块内部各个元素间彼此结合的紧密程度 ( D)内聚性是指模块间互相连接的紧密程度 9 下列对于软件测试的描述中正确的是 _。 ( A)软件测试的目的是证明程序是否正确 ( B)软件测试的目的是使程序运行结果正确 ( C)软件测试的目的是尽可能多地发现程序中的错误 ( D)软件测试的目的是使程序符合结构化原则 10 数据库 DB、数据库系统 DBS、数
4、据库管理系统 DBMS之间的关系是 _。 ( A) DB包含 DBS和 DBMS ( B) DBMS包含 DB和 DBS ( C) DBS包含 DB和 DBMS ( D)没有任何关系 11 下列程序的输出结果是 ( )。 main() int a=1,b=2; printf(“%d,%dn“,-a,+b); ( A) 1,2 ( B) 1,3 ( C) 0,2 ( D) 0,3 12 下列说法正确的是 ( A) int(*def)10; -def指向一个指针,该指针指向 10个整型变量构成的数组 ( B) int*(*gh10); -gh指向一个指针,该指针指向 10个整型变量构成的数 组 (
5、 C) jnt*(*gh10); -gh是一个指针,指向由 10个指向整型变量的指针构成的数组 ( D) A, C均正确 13 若变量已正确定义,有以下程序段 i=0; do printf(“%d, “, i); while(i+); printf(“%dn“, i); 其输出结果是 ( A) 0, 0 ( B) 0, 1 ( C) 1, 1 ( D)程序进入无限循环 14 对下列二叉树进行前序遍历的结果为 ( )。 ( A) ABCDEFGH ( B) ABDGEHCF ( C) GDBEHACF ( D) GDHEBFCA 15 当变量 c的值不为 2、 4、 6时 ,值也为 “真 “的表
6、达式是 ( A) (c=2)|(c=4)|(c=6) ( B) (c=2 printf(“%d,”,S(k+j);printf(“%d n”,S(k-j); 程序运行后的输出结果是 ( A) 98,18 ( B) 39,11 ( C) 98,11 ( D) 39,18 17 有以下程序 #include main() int a=12,c; c=(a2!1 34 根据下列的定义,能打印出字母 P的语句是 ( )。 struct stu char name10; int age; ; struct sm s10=“John“,11, “Pau1“,12, “Mary“,11, “adam“,12
7、 ; ( A) printf(“%c“,s3.name); ( B) printf(“%c“,s3.name1); ( C) printf(“%c“,s2.name1); ( D) printf(“%c“,s1.name0); 35 有以下程序 main() int x=0,y=0,i; for (i=1;+i) if (i%2=0) x+;continue; if (i%5=0) y+;break; printf (“ %d,%d“,x,y); 程序的输出结果是 ( A) 2,1 ( B) 2,2 ( C) 2,5 ( D) 5,2 36 有以下程序: main() int i,s=0; f
8、or(i=1;i 10;i+=2) s+=i+1; ptintf(“%dn“,s); 程序执行后的输出结果是 ( )。 ( A)自然数 1 9的累加和 ( B)自然数 1 10的累加和 ( C)自然数 1 9中奇数之和 ( D)自然数 1 10中偶数之和 37 若有以下说明和语句 int c4)5,(*p)5; p=c; 能够正确引用 c数组元素的是 ( A) p+1 ( B) *(p+3) ( C) *(P+1)+3 ( D) *(p0+2) 38 有以下程序 int a=3; main() int s=0; int a=5; s+=a+; 8+=a+;printf(“%dn”, s); 程
9、序运行后的输出结果是 ( A) 8 ( B) 10 ( C) 7 ( D) 11 39 若有以下说明: int a10=1,2,3,4,5,6,7,8,9,10, *p=a; 则值为 6的表达式是 _。 ( A) *p+6 ( B) *(p+6) ( C) *p+=5 ( D) p+5 40 以下程序的输出结果是 ( ) int x 05; char z a; printf(“%dn“, (x switch(n+) default:printf(“error“);break; case a: printf(“good“);break; case c: printf(“morning“); ca
10、se d: printf(“class“); 48 当 m=1, n=2, a=3, b=2, c=4时,执行 d=(m=a!=B) printf(“%d,%d“,POWER(i+),i); 51 以下程序的输出结果是 ( )。 #include stdlib.h main() char*s1,*s2,m; s1=s2=(char*)malloc(sizeof(char); *s1=15; *s2=20; m=*s1+*s2: printf(“%dn“,m); 52 以下程序运行后的输出结果是【 】。 #include stdio.h #define S(x) 4 * x * x + 1 ma
11、in( ) int i=6,j=8; prinff(“% d n“ , S( i + j) ); 53 以下程序运行后的输出结果是【 】。 #include stdio, h #include stating, h void fun(char * s,int p,int k) int i; for(i=p;i k-1;i+) si =si+2; main( ) char s = “abedefg“; fun(s,3 ,strlen(s) ); puts(s); 54 下列程序的运行结果为【 】。 #include math h #include stdio h main() int s=1;
12、float n=1, pi=0; double t=1; while(fabs(t) =2e-6) pi+=t; n+=2; s=-s; t=s/n; pi*=4; printf(“pi=% 6fn“, pi); 55 阅读下面程序,则执行后的输出结果是【 】。 #include“stdio.h“ main() int x, y, z; x=1; y=2; z=3; if(x y)if(x z)printf(“%d“, x); else printf(“%d“, y); printf(“%dn“, z); 国家二级( C语言)笔试模拟 试卷 257 答案与解析 1 【正确答案】 B 【试题解析
13、】 需求分析是软件定义时期的最后一个阶段。可以概括为 4个方面: 需求获取; 需求分析; 编写需求规格说明书; 需求评审。 2 【正确答案】 C 【试题解析】 面向对象的程序设计是用对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息宋实现对象之间的相互联系。 3 【正确答案】 D 【试题解析】 面向对象思想中的三个主要特征是 :封装性、继承性和多态性。 4 【正确答案】 B 【试题解析】 由于数据的集 成性使得数据可被多个应用程序共享 ,特别是在网络发达的今天 ,数据库与网络的结合扩大了数据库的应用范围 ,所以数据库技术的根本问题是解决数据的共享问题。 5 【正确答案】 B
14、【试题解析】 数据库系统 (Database System,简称 DBS),包括数据库 (Database,简称DB)和数据库管理系统 (Database Management System,简称 DBMS)。 6 【正确答案】 D 7 【正确答案】 B 【试题解析】 栈 (stack)是限定只在一端进行插入与删除的线性表,这一 端称为栈顶 (top),另一端称为栈底 (bottom)。栈是按照 “先进后出 ”或 “后进先出 ”的原则组织数据的。栈具有记忆作用。 8 【正确答案】 B 【试题解析】 (1)内聚性:内聚性是 个模块内部各个元素间彼此结合的紧密程度的度量。 (2)耦合性;耦合性是模
15、块间互相连接的紧密程度的度量。因此选项 c、D是错误的。在程序结构中,各模块的内聚性越强,则耦合性越弱。 般较优秀的软件设计,应尽量做到内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,因此选项 A是错误的;应该降低耦合 性提高内聚性,所以选项 B是正确的。 9 【正确答案】 C 【试题解析】 关于软件测试的目的, Grenford J Myers在 The Art of Software Testing 一书中给出了深刻的阐述,整体来说,软件测试的目的就是尽可能多地发现程序中错误。 10 【正确答案】 C 【试题解析】 数据库系统由如下几部分组成:数据库、数据
16、库管理系统、数据库管理员、系统平台 (硬件平台和软件平台 )。 11 【正确答案】 D 【试题解析】 本题主要考查自加 (+)、自减 (-)运算符 的使用。 “+i, -i”在使用i之前,先使 i的值加 1或者减 1,然后再使用 i此时的值参与运算; “i+, i-”是在使用 i参与表达式运算之后,再使 i的值加 1或者减 1。本题中 -a和 +b 是先执行 a减 1和 b 加 1操作,再输出表达式的值。 12 【正确答案】 D 【试题解析】 int*(*gh10); -曲是一个指针,指向由 10个指向整型变量的指针构成的数组, int(*def)10; -def 指向一个指针,该指针指向 1
17、0个整型变量构成的数组。 13 【正确答案】 B 【试题解析 】 对于 dowhile 循环,程序先执行一次循环体,再判断循环是否继续。本题先输出一次 i的值 “0, ”,再接着判断表达式 i+的值,其值为 0,所以循环结束。此时变量 i的值经过自加已经变为 1,程序再次输出 i的值 “1”。 14 【正确答案】 B 15 【正确答案】 B 【试题解析】 满足表达式 (c=2S(k-j)=(k-j)*(k-j)*2=3*3*2=18。 17 【正确答案】 A 【试题解析】 本题考查位元算中的左移运算 ,将一个数的各二进制位全部左移若干位。 A的二进制数为 “00001100”,小括号的优先级最
18、高 ,a2 为二进制数“00110000”,然后在左移 1位 ,为二进制数 “01100000”,其十进制数为 96。 18 【正确答案】 D 【试题解析】 本题考查语句的基本构成。选项 A)中 j=5后面少了一个分号;选项 B)中少了 “”;选项 C)不是一个完整的函数定义格式,一个完整的函数定义格式还包括一对花括号;选项 D)正确,是一个空语句。 19 【正确答案】 D 20 【正确答案】 A 21 【正确答案】 A 【试题解析】 for循环执行了 3次,第一次时 i的值为 0,执行其后的 switch 语句,没有匹配的 case, 执行 default语句后的 printf 语句,输出为
19、 0;第二次循环时 i的值为 1,执行其后的 switch 语句,与第一个 case分支匹配,执行其后的printf 语句,输出 1,由于没有遇到 break 语句,所以一直向下执行,又输出了两个 1,第三次循环时 i值为 2,执行其后的 switch 语句,同理输出两个 2。 22 【正确答案】 D 【试题解析】 strcat(p1,P2)将字符串 abcABC放到了 *pl 所指向的存储单元中;strcpy在本题将 abcABC复制到 str+2所指向的存储单元中,即覆盖原 str数组 中的字符 z及其后的所有字符,故 str的值为 “xyabcABC”。 23 【正确答案】 B 【试题解
20、析】 本题中, “!”表示逻辑非运算符, “! ”表示不等于运算符,逻辑非运算符比不等于运算符的优先级高。 24 【正确答案】 D 【试题解析】 本题首先判断 a b,当 a b时结果等于 a,否则等于 “dc?d:b”,因为 a b,所以直接输出 a的值,注:这里 “a:d c?d:b”是用来干扰考生的。 25 【正确答案】 D 【试题解析】 字符串常量是用一对双括号括起来的一串字符。它用字符数 组来存放,不能用一对大括号对括起来。 26 【正确答案】 D 【试题解析】 a “ABCD“书写错误,因为 “ ”左边不能出现常量;数组名 s是代表 s数组首地址的地址常量,而不是变量;字符串只有在
21、定义时维数可以省略。 27 【正确答案】 B 【试题解析】 因为变量的初始值分别为 k=5,n=0,所以程序第 1次进入循环时,执行 default语句,输出 0, k减 1;这时 n=0,k=4,程序进行第 2次循环,执行case 4:这个分支,结果是 n=2,k=3,打印出 2;这时 n=2,k=-3,程序进行第 3次循环,执行 case 3:这个分支,结果是 n=3,k=2,打印出 3;这时 n=3,k=2,程序然后进行第 4次循环,执行 case 2: case 4:这个分支,结果是 n=5,k=1,打印出5,这时因为 n=5不满足 n 5的循环条件,因此退出循环,程序运行结束。所以在
22、屏幕上打印 28 【正确答案】 C 【试题解析】 这是一个转换程序:低字节相互转换,高字节不变。 “abe”的 ab和 “123”的 12相互转化。 29 【正确答案】 C 【试题解析】 strcat(s1,s2)是把 s2字符串连接到 s1字符串末尾, strcpy(s1,s2)是把 s2字符串复制给 s1字符串,要保证 s1能容纳下连接或复制后的字符串。 30 【正确答案】 A 【试题解析】 循环的作用是求行下标从 1到 2列下标从 0到 i的元素之和,即s=a10+a11+a11+a20+a21+a22=3+4+5+6+0=18。 31 【正确答案】 B 32 【正确答案】 C 33 【
23、正确答案】 D 【试题解析】 C语言中数组下标是从 0开始的 ,所以二维数组 a23的第一 维下标取值为 0、 1;第二维的下标取值为 0、 1、 2,因而选项 A)、 B)、 C)都是错误的 ,选项 D)表示数组元素 a00。 34 【正确答案】 D 【试题解析】 本题主要考查按结构数组元素方式引用结构成员。字母 P为 “Paul”的第一个字母,是结构体 s1的 name成员的第一个元素的值,即 s1.name0的值。 35 【正确答案】 A 【试题解析】 本题考查了 continue和 break 语句在循环语句中的作用。 break 语句的作用是结束本层循环 ,而 continue语句的
24、作用是结束 本次循环直接进入到下次循环。 36 【正确答案】 D 【试题解析】 本题中, i赋初值为 1,并对其每次进行加 2操作,即 i每次均为1 10之间的奇数, s+=i+1,即 s=s+i+1,相当于 s等于原来的 s每次加上 1 10之间的偶数,直到 i lO不成立;当 i=1时, s=0+1+1=2;当 i=3时, s=2+3+1=2+4;当 i=5时, s=2+4+5+1=2+4+6;当 i=7时, s=2+4+6+7+1=2+4+6+8;当 i=9时,s=2+4+6+8+9+1=2+4+6+8+10;当 i=11时, i 10不成立, 结束循环。所以, 4个选项中选项 D符合题
25、意。 37 【正确答案】 D 【试题解析】 本题中定义了一个二维数组 c和一个指针数组 p并初始化让它指向 c,显然此时 p 中的各元素为地址,选项 A中 p+1,此时其中的 1代表的长度是整个二维数组 c的长度,故 p+1将让 p 指向 c数组后面的元素,故不能引用 c数组中的成员,选项 D中 p0指的是指针数组中的第一个元素的地址即 c的首地址,此时的 1的长度代表的是数组 C中一行的长度,故 p0+2代表的是第三行的首地址,而 *(po+2)将代表第三行的第一个元素的地址。 38 【正确答案】 A 【试题解析】 本题中定义一个全局变量 a和一个局部变量 a。局部变量和全局变量的不同在于,
26、局部变量的存储单元都是在进入这些局部变量所在的函数体 (或复合语句 )时生成,退出其所在的函数体 (或复合语句 )时消失,而全局变量是在函数外部任意位置上定义的变量,它的作用域从变量定义的位置开始,到整个源文件结束为止。若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽,在该函数内,起作用的将是局部变量,与同名的全局变量不发生任何关系。 在程序中首先定义了变量 s并赋值为 0,接着在嵌套的 复合语句 中定义了变量 a并赋初值为 5,接着执行语句 s+=a+;在这条语句中 a 加 1,但表达式 a+还是原来的值,故 s=s+5, s为 5,程序执行到外层,此时 内定义的变量 a
27、不再有效,此时的变量 a为 之前定义的且初值为 3,接着执行 后面的语句 s+=a+;相当于执行语句 s=s+(a+ +);即 s=5+3,最后值为 8,所以最后输出的 s值为 8。 39 【正确答案】 C 【试题解析】 选项 A, *p+6,其值等于 1+6=7;选项 B, *(p+6),其值等于a6=7;选项 C, *p+=5,其值等于 *p=*p+5=1+5=6;选项 D, p+5是个地址值。 40 【正确答案】 B 41 【正确答案】 A 42 【正确答案】 存储结构 【试题解析】 数据结构是指相互之间存在一种或多种特定关系的数据 元素的集合,即数据的组织形式。它分为数据的逻辑结构和数
28、据的存储结构。 43 【正确答案】 选择 【试题解析】 关系数据库的专门关系运算包括选择、投影和连接 3种,其中选择不改变关系表中的属性个数但能减少元组个数。 44 【正确答案】 完善性 【试题解析】 软件维护活动包括以下几类: 改正性维护、适应性维护、完替性维护和预防性维护。完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。 45 【正确答案】 n-1 【试题解析】 在长度为 n 的顺序线性表中删除一个元素 ,后面的元素要依次前移 ,最坏情况下也就是删除第一个元素 ,后面的 n-1个元素都需要移动。
29、46 【正确答案】 结构化分析方法 【试题解析】 结构化分析方法主要用于系统分析阶段;结构化设计方法主要用于系统设计阶段;结构化程序设 计方法主要用于编码阶段。可行性研究属于系统分析阶段,因此,可行性研究阶段采用的是结构化分析方法。 47 【正确答案】 morningclass 【试题解析】 本题考查了两个知识点: “+, -”运算后缀形式是先使用变量原来的值,使用完后再使其增 1或减 1; 在 switch 语句中,当 n=c时,执行 “case c”,输出 morning;因为此句中没有 break语句,因此接着执行 “case d:”,输出class,最终输出结果为 morningcla
30、ss。 48 【正确答案】 1 【 试题解析】 “sizeof“、 “%”、 “ ”、 “ ”、 “*=”,运算符的优先级顺序为: “*=”“ ”“ ”“%”“sizeof” ; 位运算的优先级顺序为:“ ”“ ”“ ”“&”“” 。 (b=2) (c=4)不成立,逻辑为假,所以n=0; (a=3)!=(b=2)成立,逻辑为真,所以 m=1。 48 【试题解析】 指针 P指向数组 a的首地址,执行语句 p+;后 p指向数组 a的第 2个元素的地址,即 a1的地址,因此 *p a1 4。 49 【正确答案】 静态测试 50 【正确答案】 1,1 【试题解析】 POWER(i+)中先引用 i 的值
31、 1,再将 i的值加 1,POWER(i+)=1*1=1。 51 【正确答案】 40 【试题解析】 malloc()函数的作用是开辟一个长度为 sizeof(char)的内存区, s1、s2为指向字符型数据的指针变量,执行 “s1=s2=(char*)malloc(sizeof(chat); ”语句后, s1、 s2指向同一个存储空间,此时 m=*s1+*s2=20+20=40。 52 【正确答案】 81 【试题解析】 带参数的宏定义是按 #define命令行中指定的字符串从左到右进行替换。本题替换后得到: 4*i+j*i+j+1,代入 i, j的值得 81。 53 【正确答案】 abcfg 【试题解析】 fun 函数中 for循环语句的作用是将 s所指的字符串中从第 5个字符到第 7个字符依次向前移动两个位置。输出结果为 abcfg。 54 【正确答案】 3.141592 55 【正确答案】 3 【试题解析】 C语言的语法规定: else子句总是与前面最近的不带 else的 if 相结合。因为 x不大于 y,所以执行 printf(“%dn“, z);语句。