1、国家二级( C语言)笔试模拟试卷 149及答案与解析 1 软件生命周期中花费费用最多的阶段是 ( A)详细设计 ( B)软件编码 ( C)软件测试 ( D)软件维护 2 检查软件产品是否符合需求定义的过程称为 ( A)确认测试 ( B)集成测试 ( C)验证测试 ( D)验收测试 3 以下不是面向对象思想中的主要特征的是 ( A)多态 ( B)继承 ( C)封装 ( D)垃圾回收 4 在设计程序时,应采纳的原则之一是 ( A)不限制 goto语句的使用 ( B)减少或取消注解行 ( C)程序越短越 好 ( D)程序结构应有助于读者理解 5 软件设计包括软件的结构、数据接口和过程设计,其中软件的
2、过程设计是指 ( A)模块间的关系 ( B)系统结构部件转换成软件的过程描述 ( C)软件层次结构 ( D)软件开发过程 6 数据结构中,与所使用的计算机无关的是数据的 ( A)存储结构 ( B)物理结构 ( C)逻辑结构 ( D)物理和存储结构 7 假设线性表的长度为 n,则在最坏情况下,冒泡排序需要的比较次数为 ( A) log2n ( B) n2 ( C) O(n1.5) ( D) n(n-1)/2 8 树是结点的集合,它的根结点数目是 ( A)有且只有 1 ( B) 1或多于 1 ( C) 0或 1 ( D)至少 2 9 数据库系统的核心是 ( A)数据库 ( B)数据库管理系统 (
3、C)模拟模型 ( D)软件工程 10 数据库、数据库系统和数据库管理系统之间的关系是 ( A)数据库包括数据库系统和数据库管理系统 ( B)数据库系统包括数据库和数据库管理系统 ( C)数据库管理系统包括数据库和数据库系统 ( D)三者没有明显的包含关系 11 C语言可执行程序的开始执行点是 ( )。 ( A)包含文 件中的第一个函数 ( B)程序中第一个函数 ( C)程序中的 main()函数 ( D)程序中第一条语句 12 可以在 C语言程序中用做用户标识符的一组标识符是 ( )。 ( A) void ( B) aa 123 abc BBN cas ( C) as+b3 ( D) 6f -
4、123 Do If SIG 13 下列正确的实型常量是 ( )。 ( A) E3.4 ( B) -12345 ( C) 2.2eO.8 ( D) 4 14 下列表达式中,可以正确表示 或 的关系是 ( )。 ( A) (x 1)10(x 0) ( B) x 1x 0 ( C) x 1 ORx 0 ( D) X 1 ( B) scan(“%d,%d, %d“, ( C) scan(“%do/od%d“, ( D) scanf(“i %d,j %d,k %d“, 17 下列程序的输出结果是 ( )。 main() intp8 11,12,13,14,15,16,17,18,i 0,j 0; whi
5、le(i+ 7) if(pi%2)j+ pi; printf(“%dXn“,j); ( A) 42 ( B) 45 ( C) 56 ( D) 60 18 若有下列定义 (设 int类型变量占 2个字节 ): int i 8,j 9; 则下列语句: printf(“i %u,j %xn“.i,j); 输出的结果是 ( )。 ( A) i 8,j 9 ( B) 8.9 ( C) 89 ( D) i 8,i 8 19 设有定义: intk 1,m 2;noat f 7;则下列选项中错误的表达式是 ( )。 ( A) k k k ( B) -k+ ( C) k%int(f) ( D) k f m 20
6、 若执行下列程序时从键盘上输入 2,则输出结果是 ( )。 #inclUde stdio.h main() int a; scanf(“%d“, if(a+ 3) printf(“%dn“,A); else printf(“%dn“,a-); ( A) 1 ( B) 3 ( C) 2 ( D) 4 21 已定义下列函数: int fun(int*p) return *p;) fun函数返回值是 ( )。 ( A)不确定的值 ( B)一个整数 ( C)形参 p中存放的值 ( D)形参 p的地址值 22 下列程序的输出结果是 ( )。 #include stdio.h main() iut a 2
7、,b 3,p; p f(a,b) ; printf(“%d“,p); intf(a,b) int c; if(a b) c 1; e1Seif(a b) c 0; else(3 -1; return(c) ; ( A) -1 ( B) 0 ( C) 1 ( D) 2 23 有下列程序: fun (int x,int y) static int m 0,i 2; i+ m+1;m i+x+y;return m; main() int j 1,m 1,k; k fun0,m);printf(“%d,“k); k fun0,m);printf(“%dn“,k); 执行后的输出结果是 ( )。 ( A
8、) 5,5 ( B) 5,11 ( C) 11,11 ( D) 11,5 24 下列循环体的执行次数是 ( )。 #include stdio.h main() int i,j; for(i 0,j 1;i j+1;i+ 1,j-) printf(“%dn“,j); ( A) 3 ( B) 2 ( C) 1 ( D) 0 25 设变量 x和 y均已正确定义并赋值。下列 if语句中,在编译时将产生错误信息的是 ( A) ifx+); ( B) it(x y ( C) if(x 0)x- ( D) if(y 0); else y+; else x+; 26 下列字符数组初始化语句中,不正确的是 (
9、 )。 ( A) charc goodmorning; ( B) char,c20 “goodmoming“; ( C) charc a,b,c,d; ( D) charc “goodmoming“; 27 下列程序的输出结果是 ( )。 #include stdio.h voidp(int*x) printf(“%d“,+*x); voidmain() int y 3; p( ( A) 3 ( B) 4 ( C) 2 ( D) 5 28 下列程序的运行结果为 ( )。 #include stdio.h voidabc(char*str) int a,b,i,j; for(i j 0;stri
10、! 0;i+) if(stri! a) strj+ strj; strj 0; void main() char Str “abcdef; abc(str); printf(“str %s“,str); ( A) str bcdef ( B) str abcdef ( C) str a ( D) str ab 29 变量 m的值为 8,m的地址为 1010,若欲使 p为指向 m的指针变量,则下列赋值正确的是 ( )。 ( A) ( B) int(*q)0; ( C) int*q; ( D) int*q(); 31 下列二维数组初始化语句中,不正确的是 ( )。 ( A) intb2 1,2,3
11、,4,5,6,7; ( B) intb35 0,0,0; ( C) intb4 1,2,3,4,5,6; ( D) intb32 (1,2),(3,4),(5,6); 32 include stdio.h void sort(inta,int n) int i,j,t; for(i 0;i n-1;i+) for(j i+1; n;j+) if(ai aj) t ai;ai aj;aj t; main() int a10 1,2,3,4,5,6,7,8,9,10,i; sort( for(i 0;i 10;i+)printf(“%d,“,ai); 程序运行后的输出结果是 ( )。 ( A) 1
12、,2,3,4,5,6,7,8,9,10, ( B) 10,9,8,7,6,5,4,3,2,1, ( C) 1,8,7,6,5,4,3,2,9,10, ( D) 1,2,10,9,8,7,6,5,4,3, 33 下列判断正确的是 ( )。 ( A) char a “ABCD“;等价于 char*a;*a “ABCD“; ( B) char str10 ABCD“;等价于 char str10; str “ABCD“; ( C) char*s “ABCD“;等价于 char s;*s “ABCD“; ( D) char c5 “ABCD“,d5 “ABCD“;等价于 char c5 d5 “ABC
13、D“; 34 下列语句中,在字符串 s1和 s2相等时显示 “they are Equal“的是 ( )。 ( A) if(*s1 *s2) ( B) if(!strcmp(s1,s2) puts(“they are Equal“); puts(“they are Equal“); ( C) if(s1 s2) ( D) if(strcmp(s1,s2) Puts(“they are Equal“); puts(“they are Equal“); 35 下列叙述中错误的是 ( )。 ( A)在 C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值 ( B)在 C语言中,在调用函数时,实
14、参和对应形参在类型上只需赋值兼容 ( C)在 C语言中,外部变量的隐含类型是自动存储类别 ( D)在 C语言中,函数形参的存储类型是自动 (auto)类型的变量 36 下列程 序的输出结果是 ( )。 #include stdio.h #defineF(x)2.84+x #definew(y)printf(“%d“,(int(y) #defineP(y)w(y)pmchar(n main() int x 2; P(F(5)*x); ( A) 12 ( B) 13 ( C) 14 ( D) 16 37 若有下列说明和语句,则对结构体变量 st中成员 i的引用方式不正确的是( )。 Struct
15、stu inti; intname; st,*#p; p ( A) st.i ( B) *p.i ( C) (*p).i ( D) p- i 38 下列说法错误的是 ( )。 ( A)下列结构体定义时,占据了 5个字节的空间 struct student int num; int age; char sex; ( B)结构体的成员名可以与程序中的变量名相同 ( C)对结构体中的成员可以单独使用,它的作用相当于普通变量 ( D)结构体可以嵌套定义 39 若 x 10010111,则表达式 (3+(int)(x) if(x y) if(y 0)z+0; else Z+ 1; primf(“%dn“
16、,z); 49 在循环中, continue语句与 break语句的区别是: _语句只是结束本次循环,然后进行循环的条件判定。 50 若有定义: int a44 1,2,3,4,0,4,6,8,10, 1,3,5,7,则初始化后,a22得到的初值是 _。 51 下列语句的输出结果是 _。 char S20 “aaaa“,*sp s; puts(strcat(sp,“AAAAA“); 52 下列程序的运行结果是 _。 #define POWER(x)(x)*(x) main() int i 1; primtf(“%d,%d“,POWER(i+),i); 53 下列程序的输出结果是 _。 main
17、() int i,sum; for(i 1;i 7;i+) sum+ i; primf(“%d“,sum); 54 设有下列的程序段: char str “Hello“; char*ptr; ptr str; 执行上面的程序段后, *(ptr+5)的值为 _。 55 下列程序的输出结果是 _。 #include stdio.h fun() static int a 0; a+ 3;printf(“%d“,a) ; main() int cc; for(CC 1;cc 5;CC+)fun(); printf(“n); 国家二级( C语言)笔试模拟试卷 149答案与解析 1 【正确答案】 D 【试
18、题解析】 软件生命周期分为软件定义、软件开发及软件运行维护 3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。 2 【正确答案】 A 【试题解析 】 确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。 3 【正确答案】 D 【试题解析】 面向对象思想中的三个主要特征是:封装性、继承性和多态性。 4 【正确答案】 D 【试题解析】 滥用 goto语句将使程序流程无规律
19、,可读性差,因此 A)不选;注解行有利于对程序的理解,不应减少或取消, B)也不选;程序的长短要依照实际情况而论,而不是越短越好, C)也不选。 5 【正确答案】 B 【试题解析】 软件设 计包括软件结构设计、数据设计、接口设计和过程设计。其中,结构设计是定义软件系统各主要部件之间的关系;数据设计将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。 6 【正确答案】 C 【试题解析】 数据结构概念一般包括数据的逻辑结构、存储结构及数据上的运算集合等。数据的逻辑结构只抽象地反映数据元素之间的逻
20、辑关系,而不管它在计算机中的存储形式。 7 【正确答案】 D 【试题解析】 假设线 性表的长度为 n,则在最坏情况下,冒泡排序要经过 n/2遍的从前往后的扫描和 n/2遍的从后往前的扫描,需要的比较次数为 n(n-1)/2。 8 【正确答案】 C 【试题解析】 树是 N(N0)个结点的有限集合,当 N=0时称为空树,对于空树没有根结点,即根结点的个数为 0,对于非空树有且只有一个根结点,所以树的根结点数目为 0或 1。 9 【正确答案】 B 【试题解析】 数据库管理系统 (Database Management System,简称 DBMS)是数据库的机构,它是一种系统软件,负责数据库中的 数
21、据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。 10 【正确答案】 B 【试题解析】 数据库系统 (Database System,简称 DBS)包括数据库 (Database,简称 DB)和数据库管理系统 (Database Management System,简称 DBMS)。 11 【正确答案】 C 【试题解析】 每个 C程序有且只有一个主函数 main(),且程序必须从 main函数开始执行,并在 main()函数中结束。 12 【正确答案】 B 【试题解析】 C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。
22、 13 【正确答案】 B 【试题解析】 实型常量有两种书写形式: 小数形式,它由符号、整数部分、小数点及小数部分组成; 指数形式,由十进制小数形式加上指数部分组成,其形式为十进制小数 e指数或十进制小数 E指数。注: e或 E后面的指数必须是整数,并且在 e或 E的前面必须有数字。本题中,选项 A)中 E的前面没有数字,因此错误。选项 C)中 0.8不是整数,因此错误。选项 D)中 4是整型常量而不是实型常量。 14 【正确答案】 A 【试题解析】 题中要求 x的取值是小于等于 0或者大于等于 1,这说明表达式是或的关系,所以在写成 C语言表达式应是逻辑或的关系,逻辑或运算符是 “。 15 【
23、正确答案】 A 【试题解析】 本题考查 “%“运算符的使用。运算符 “%“要求两个运算对象都为整型,其结果是整数除法的余数。本题中表达式 ao% (b%2)等价于 aa%o(b%2) 5%(7%2) 5%1 0。 16 【正确答案】 B 【试题解析】 函数 scan()的调用形式是: scanf(格式字符串,输入项地址表 )。其中, “格式字符串 ”是要输入的变量的格式符: “输入项地址表 ”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。 17 【正确答案】 B 【试题解析】 在 C语言中,数组的下标默认为 0,因此数组
24、 p的下标范围为:0 7。程序循环过程为:第 1次循环 i 0,执行循环,并且 i自加,得 i 1,因此pi为 p1 12,12%2 0,不执行后面的语句:接着进行第 2次循环,此时 i 1,小于 7执行循环,并且 i自加,得 i 2,因此 pi为 p2 13,13%2 1,执行后面的语句;这样一直到退出循环。最后, i的值为 i 13+15+17 45。 18 【正确答案】 A 【试题解析】 本题考查函数 printf()的格式。 “%x”表示以十六进制输出整型数据; “%u”表示以十进制无符号型输出整型数据。 printf函数中格式说明符之前插入的任何字符都原样输出。 19 【正确答案】
25、C 【试题解析】 在 C语言中,求余运算符 “%”两边的运算对象都应为整型数据,所以需要对变量 f进行强制类型转换,正确的写法为 k%(int)f。在 C语言中, 逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是: !(逻辑 “非 ”)、算术运算符、关系运算符、 i 7;i+)决定了循环次数为 6次,每次执行的操作是 sum+ i,但由于 sum没有初始化,并不知道 sum的初值是多少,所以结果无定值。 54 【正确答案】 0 【试题解析】 本题涉及字符数组和指针的两个知识点: 在 C语言中,字符型数组在存放字符串时会自动在末尾加上字符串结束标识符 0,所以题中数组 str有 6个元素。 ptr指向数组 str的首地址, ptr+5是指向 str15, *(ptr+5)是引用str5的值,即, 0。 55 【正确答案】 3 6 9 12 【试题解 析】 本题考查最基本的 for循环: for(cc 1;cc 5;cc+)规定循环次数为 4次,每次 a+ 3即每次 a的值增 3,但因为 fun函数中变量 a为 static类型,所以每次调用完子函数之后,变量 a所做的改变都要保存。