[计算机类试卷]国家二级(C语言)机试模拟试卷112及答案与解析.doc

上传人:testyield361 文档编号:502847 上传时间:2018-11-29 格式:DOC 页数:30 大小:72.50KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)机试模拟试卷112及答案与解析.doc_第1页
第1页 / 共30页
[计算机类试卷]国家二级(C语言)机试模拟试卷112及答案与解析.doc_第2页
第2页 / 共30页
[计算机类试卷]国家二级(C语言)机试模拟试卷112及答案与解析.doc_第3页
第3页 / 共30页
[计算机类试卷]国家二级(C语言)机试模拟试卷112及答案与解析.doc_第4页
第4页 / 共30页
[计算机类试卷]国家二级(C语言)机试模拟试卷112及答案与解析.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、国家二级( C语言)机试模拟试卷 112及答案与解析 一、选择题 1 某二叉树的中序序列为 DCBAEFG,后序序列为 DCBGFEA,则该二叉树的深度(根结点在第 1层 )为 ( )。 ( A) 5 ( B) 4 ( C) 3 ( D) 2 2 设有定义: structint n; float x; s2, m2: 10, 2 8, 0, 0 0;则以下赋值语句中正确的是 ( )。 ( A) s0=m1; ( B) s=m; ( C) s n=m n; ( D) s2 x=m2 x; 3 关于 C语言标识符,以下叙述错误的是 ( )。 ( A)标识符可全部由数字组成 ( B)标识符可全部由下

2、划线组成 ( C)标识符可全部由小写字母组成 ( D)标识符可全部由大写字母组成 4 以下程序段中的变量已定义为 int类型,则 sum=pad=5; pad=sum+, pad+, +pad; printf(“ d n“, pad); 程序段的输出结果是 ( )。 ( A) 6 ( B) 4 ( C) 5 ( D) 7 5 设循环队列为 Q(1: m),其初始状态为 front=rear=m。经过一系列入队与退队运算后, front=20, rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为 ( )。 ( A) 5 ( B) 6 ( C) m 5 ( D) m 6

3、 6 以下选项中,合法的 C语言常量是 ( )。 ( A) 1 234 ( B) C+ ( C) “ 2 0 ( D) 2Kb 7 以下选项中,不能对主函数中变量 i和 j的值进行交换的程序是 ( )。 ( A) #include void swap(int*p, int*q) int*t; *t=*p; *p=*q; *q=*t; main() int i=10, j=20, *a=&i, *b=&j; swap(a, b); printf(“i= d j= d n“, i, j); ( B) #include void swap(int*P, int*q) int t; t=*p; *p:

4、 *q; *q=t; main() int i=10, j=20, *a=&i, *b=&j; swap(a, b); printf(“i= d j= d n“, i, j); ( C) #include #include void swap(int*p, int*q) int*t; t=(int*)malloc(sizeof(int); *t=*p; *p=*q; *q=*t; free(t); main() int i=10, j=20; swap(&i, &j); printf(“i= dj= d n“, i, j); ( D) #include void swap(int*p, int

5、*q) int t; t=*P; *p=*q; *q=t; main() int i=10, j=20, *x=&i, *y=&j; swap(x, y); printf(“i= dj= d n“, i, j); 8 C语言中,最基本的数据类型包括 ( )。 ( A)整型、实型、逻辑型 ( B)整型、字符型、数组 ( C)整型、实型、字符型 ( D)整型、实型、结构体 9 下列叙述中错误的是 ( )。 ( A)算法的时间复杂度与算法所处理数据的存储结构有直接关系 ( B)算法的空间复杂度与算法所处理数据的存储结构有直接关系 ( C)算法的时间复杂度与空间复杂度有直接关系 ( D)算法的时间复杂

6、度与算法程序执行的具体时间是不一致的 10 以下能正确输出字符 a的语句是 ( )。 ( A) printf(“ s“, “a“); ( B) printf(“ s“, a); ( C) printf(“ c“, “a“); ( D) printf(“ d“, a); 11 字符数组 a和 b中存储了两个字符串,判断字符串 a和 b是否相等,应当使用的是 ( )。 ( A) if(strcmp(a, b)=0) ( B) if(strcpy(a, b) ( C) if(a=b) ( D) if(a=b) 12 设有定义: int x=11, y=12, z=0;,以下表达式值不等于 12的是

7、( )。 ( A) (z, x, y) ( B) (z=x, y) ( C) z=(x, y) ( D) z=(x=y) 13 下列叙述中正确的是 ( )。 ( A)存储空间连续的数据结构一定是线性结构 ( B)存储空间不连续的数据结构一定是非线性结构 ( C)没有根结点的非空数据结构一定是线性结构 ( D)具有两个根结点的数据结构一定是非线性结构 14 以下选项中,合法的实数是 ( )。 ( A) 4 5E2 ( B) E1 3 ( C) 7 11E ( D) 1 2E1 2 15 以下选项中叙述正确的是 ( )。 ( A)函数体必须由 开始 ( B) C程序必须由 main语句开始 ( C

8、) C程序中的注释可以嵌套 ( D) C程序中的注释必须在一行完成 16 在源程序的开始处加上 “#include”进行文件引用的原因,以下叙述正确的是 ( )。 ( A) stdio h文件中包含标准输入输出函数的函数说明,通过引用此文件以便能正确使用 printf、 scanf等函数 ( B)将 stdio h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行 ( C)将 stdio h中标准输入输出函数的源程序插入到引用处,以便进行编译链接 ( D)将 stdio h中标准输 入输出函数的二进制代码插入到引用处,以便进行编译链接 17 下面属于白盒测试方法的是 ( )。 (

9、A)边界值分析法 ( B)基本路径测试 ( C)等价类划分法 ( D)错误推测法 18 有以下程序 (其中的 strstr()函数头部格式为: char*strstr(char*p1, char*p2)确定p2字符串是否在 p1中出现,并返回 p2第一次出现的字符串首地址 ): #include #include char*a=“you“: char*b=“Welcome you to Beijing! “; main() char*p; p=strstr(b, a)+strlen(a)+1; printf(“ s n“, p); 程序的运行结果是 ( )。 ( A) to Beijing!

10、( B) you to Beijing! ( C) Welcome you to Beijing! ( D) Beijing! 19 有以下程序: #include void change(int*array, int len) for(; len =0; len-) arraylen-=1; main() int i, array5=2, 2; change(array, 4); for(i=0; i 5; i+) printf(“ d, “, arrayi); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 1, 1, 1, 1, 1, ( B) 1, 0, 1,

11、1, 1, ( C) 1, 1, 1, 1, 1, ( D) 1, 1, 1, 1, 1, 20 有以下程序: #include main() int i, data; $canf(“ d“, &data); for(i=0; i 5; i+) if(i data)continue; printf(“ d, “, i); printf(“ n“); 程序运行时,从键盘 输入: 3后,程序输出结果为 ( )。 ( A) 3, 4, ( B) 1, 2, 3, 4, ( C) 0, 1, 2, 3, 4, 5, ( D) 0, 1, 2, 21 设序列长度为 n,在最坏情况下,时间复杂度为 0(l

12、og2n)的算法是 ( )。 ( A)二分法查找 ( B)顺序查找 ( C)分块查找 ( D)哈希查找 22 有以下程序: #include main() int x; scanf(“ d“, &x); if(x 10)printf(“1“); else if(x 20)printf(“2“); else if(x 30)printf(“3“); 若运行时输入: 35,则输出结果是 ( )。 ( A) 123 ( B) 2 ( C) 3 ( D) 1 23 以下非法的字符常量是 ( )。 ( A) n ( B) 101 ( C) x21 ( D) 0 24 有以下程序: #include #d

13、efine S(x)x*x main() int k=5, j=2; printf(“ d, d n“, S(k+j+2), S(j+k+2); 程序的运行结果是 ( )。 ( A) 21, 18 ( B) 81, 81 ( C) 21, 21 ( D) 18, 18 25 一名雇员就职于一家公司,一个公司有多名雇员,则实体公司和实体雇员之间的联系是 ( )。 ( A) 1: 1联系 ( B) 1: m联系 ( C) m: 1联系 ( D) m: n联系 26 将 E-R图转换为关系模式时, E-R图中的实体和联系都可以表示为 ( )。 ( A)属性 ( B)键 ( C)关系 ( D)域 27

14、 以下针对全局变量的叙述错误的是 ( )。 ( A)全局变量的作用域是从定义位置开始至源文件结束 ( B)全局变量是在函数外部任意位置上定义的变量 ( C)用 extern说明符可以限制全局变量的作用域 ( D)全局变量的生存期贯穿于整个程序的运行期间 28 有以下程序: #include main() char*S=“120119110“; int n0, n1, n2, nn, i; n0=n1=n2=nn=i=0: do switch(si+) default: nn+; case0: n0+: case1: n1+: case2: n2+: while(si); printf(“n0=

15、 d, n1= d, n2= d, nn= d n“, n0, n1, n2, nn); 程序的运行结果是 ( )。 ( A) n0=3, n1=8, n2=9, nn=1 ( B) n0=2, n1=5, n2=1, nn=1 ( C) n0=2, n1=7, n2=10, nn=1 ( D) n0=4, n1=8, n2=9, nn=1 29 在最坏情况下 ( )。 ( A)快速排序的时间复杂度比冒泡排序的时间复杂度要小 ( B)快速排序的时间复杂度比希尔排序的时间复杂度要小 ( C)希尔排序的时间复杂度比直接插入排序的时间复杂度要小 ( D)快速排序的时间复杂度与希尔排序的时间复杂度是一

16、样的 30 有以下程序: #include main() int x=0x13: if(x=0x18)printf(“T“); printf(“F“); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) TF ( B) T ( C) F ( D) TFT 31 以下关于宏的叙述错误的是 ( )。 ( A)宏替换不具有计算功能 ( B)宏是一种预处理指令 ( C)宏名必须用大写字母构成 ( D)宏替换不占用运行时间 32 有以下程序: #include int fun(char*s) char*p: s; while(*p+! = 0); return(p-s); main

17、() char*p=“01234“; printf(“ d n“, fun(p); 程序的运行结果是 ( )。 ( A) 6 ( B) 5 ( C) 4 ( D) 3 33 计算机软件包括 ( )。 ( A)算法和数据 ( B)程序和数据 ( C)程序和文档 ( D)程序、数据及相关义档 34 有以下 程序: #include main() int i, array5=3, 5, 10, 4; for(i=O; i 5; i+) printf(“ d, “, arrayi&3); printf(“ n“); 程序运行后的输出结果是 ( )。 ( A) 3, 1, 2, 0, 0, ( B) 3

18、, 5, 10, 4, 0, ( C) 3, 3, 3, 3, 0, ( D) 3, 2, 2, 2, 0, 35 以下叙述正确的是 ( )。 ( A) do-while语句构成的循环,当 while语句中的表达式值为 0时结束循环 ( B) do-while语句和 while-do构成的循环功能相同 ( C) while-do语句构成的循环,当 while语句中的表达式值为非 0时结束循环 ( D) do-while语句构成的循环,必须用 break语句退出循环 36 关于地址和指针,以下说法正确的是 ( )。 ( A)通过强制类型转换可以将一种类型的指针变量赋值给另一种类型的指针变量 (

19、B)可以取一个常数的地址赋值给同类型的指针变量 ( C)可以取一个表达式 的地址赋值给同类型的指针变量 ( D)可以取一个指针变量的地址赋值给基类型相同的指针变量 37 下面描述不属于软件特点的是 ( )。 ( A)软件是一种逻辑实体,具有抽象性 ( B)软件在使用中不存在磨损、老化问题 ( C)软件复杂性高 ( D)软件使用不涉及知识产权 38 以下程序的功能是:通过调用 calc函数,把所求得的两数之和值放入变量 add中,并在主函数中输出。 #include void calc(float x, float y, float*sum) _=x+y; main() float x, y,

20、add; scanf(“ f “, &x, &y); calc(x, y, &add); pfintf(“x+y= f n“, add); calc函数中下划线处应填入的是 ( )。 ( A) *sum ( B) sum ( C) &sum ( D) add 39 有以下程序: #include main() char c; for(; (c=getchar()! =#; )putchar(+c); 执行时如输入为: abcdefg#,则输出结果是 ( )。 ( A) abcdefg ( B) bcdefgh$ ( C) bcdefgh$ ( D) bcdefgh 40 有以下程序: #inc

21、lude void fun(int*x, int s, int e) int i, j, t; for(i=s, j=e; i j; i+, j-) t=*(x+i); *(x+i)=*c(x+j); *(x+j)=t; main() int m=0, 1, 2, 3, 4, 5, 6, 7, 8, 9, k; fun(m, 0, 3); fun(m+4, 0, 5); fun(m, 0, 9); for(k=0; k 10; k+) pfinff(“ d“, mk); 程序的运行结果是 ( )。 ( A) 4567890123 ( B) 3210987654 ( C) 9876543210

22、( D) 0987651234 二、程序填空题 41 N个有序整数数列已放在一维数组中,给定下列程序中,函数 fun()的功能是:利用折半查找法查找整数 m在数组中的位置。若找到,则返回其下标值;反之,则返回 “Not be found! ”。 折半查找法的基本算法是:每次查找前先确定数组中待确定的范围: low和high(low high),然后把 m与中间位置 (mid)中元素的值进行比较。如果 m的值大于中间位置元素中的值,则下一次的查找范围放在中间位置之后的元素中;反之,下次查找范围落在中间位置之前的元素中。直到 low high,查找结束。 注意: 请勿改动主函数 main和其他函数

23、中的任何内容,仅在函数 fun的横线上填入所编写的若干表达式或语句。 【试题源程序】 #include #define N 10 int fun(int a, int m) int low=0, high=N 1, mid; while(low =high) mid=【 1】 ; if(m amid) high: 【 2】 ; else if(m amid) low=mid+1: else return(mid); 【 3】 ( 1); main() int i, aN= 3, 4, 7, 9, 13, 24, 67, 89, 100, 180, k, m; printf(“a数组中的数据如下

24、: “); for(i=0; i N; i+) printf(“ d“, ai); printf(“Enter m: “); scanf(“ d“, &m); k=fun(a, m); if(k =0) printf(“m= d, index= d n“, m, k); else printf(“Not be found n“); 三、程序修改题 42 下列给定程序中函数 fun的功能是:将 m(1m10)个字符串连接起来,组成一个新串,放入 pt所指存储区中。例如:把三个串 “abe”、 “CD”、 “EF”连接起来,结果是 “abcCDEF”。请改正程序中的错误,使它能得出正确的结果。 注

25、意: 不要改动 main函数,不得增行或删行,也不得更改程序的结构! 【试题源程序】 #include #include void fun(char str10, int m, char*pt) *found* Int k, q, i; for(k=0; k m; k+) q=strlen(strk); for(i=0; i q; i+) *found* pti=strk, i; pt+=q; pt0=0; main() int m, h; char s1010, p120; printf(“Please enter m: “); seanf(“ d“, &m); gets(s0); prin

26、tf(“Please enter d string: “, m); for(h=0; h m; h+)gets(sh); fun(s, m, p); printf(“The result is: s“, p); 四、程序设 计题 43 下列给定程序中,是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数 fun的作用是求出单向链表结点 (不包括头结点 )数据域中的最大值,并且作为函数值返回。请改正程序指定部位的错误,使它能得到正确结果。 注意: 不要改动 main函数,不得增行或删行,也不得更改程序的结构。 【试题源程序】 #include #include typedef st

27、ruct aa, int data; struct aa*next: NODE; fun(NODE*h) int max= 1: NODE*p; *found* p=h; while(p) if(P- data max) max=p- data: *found* p=h- next: return max; outresult(int s, FILE*pf) fprintf(pf, “ nThe max in link: d n“, s); NODE*creatlink(int n, int m) NODE*h, *p, *s, *q; int i, x; h=p=(NODE*)malloc(

28、sizeof(NODE); h- data=9999: for(i=1; i =n; i+) S=(NODE*)malloc(sizeof(NODE); S- data=rand() m; s- next=p- next; P- next=s; p=p- next; P- next=NULL: return h; outlink(NODE*h, FILE*pf) NODE*P; P=h- next: fprintf(pf, “ nTHE LIST: n nHEAD“); while(P) fprintf(pf, “- d“, P- data); p=p- next; fprintf(pf, “

29、 n“); main() NODE*head; int m; head=creatlink(12, 100); outlink(head, stdout); m=fun(head); printf(“ nTHE RESULT: n“); outresult(m, stdout); 国家二级( C语言)机试模拟试卷 112答案与解析 一、选择题 1 【正确答案】 B 【试题解析】 二叉树的后序序列为 DCBG FEA, 则 A为根结点。中序序列为DCBAEFG,则 DCB为左子树结点, EFG为右子树结点。同理 B为 C父结点, C为 D父结点。根据分析,可画出左子树,同理 E为 F父结点, F

30、为 G父结点。根据分析,可画出右子树,故二叉树深度为 4层。 2 【正确答案】 A 【试题解析】 定义了结构体类型数组 s,长度为 2,结构体类型数组 m,长度为2,并对数组 m进行了初始化。同类型的结构体可以直接用变量名实现赋值, A项正确;数组名为数组首地址,地址常量之间不可以相互赋值, B项错误;数组名为地址常量不是结构体变量,不能引用成员, C项错误; s2与 m2数组越界, D项错误。 3 【正确答案】 A 【试题解析】 C语言标识符只能由字母、数字、下划线组成,且标识符的第一个字符只能是字母或下划线。 4 【正确答案】 D 【试题解析】 赋值运算符的优先级高于逗号运算符,因此语句

31、“pad=sum+,pad+, +pad”的执行顺序为 pad=sum+, pad=5; pad+, pad=6; +pad,pad=7,输出 7。 5 【正确答案】 D 【试题解析】 循环队列的长度为: (rear-front+m) m=m 5。 查找长度为 m 5的队列的最小值,最坏情况下需要从头至尾比较 m 6次。 6 【正确答案】 A 【试题解析】 C语言中的常量: 整型常量,用不带小数点的数字表示; 实型常量,用带小数点的数字表示; 字符型常量,用带有单引号的一个字符表示; 字符串常量,用一对双引号括起来的一串字符。 1 234为实型常量, A项正确; C+不合法,若改成 “C+“则

32、为字符串常量, B项错误; “ 2 0不合法,不是任何类型常量, C项错误; 2Kb不合法,若加上双引号 “2Kb“为字符串常量, D项错误。 7 【正确答案】 A 【试题解析】 A项,定义了一个临时指针 t,实现两个指针地址的交换,传入的参数是两个指针的副本,故交换了副本地址,对 a、 b无影响; B项,调用函数传入的是 i与 j地址,函数体内交换的是地址内元素,临时变量 t为整型变量,能实现 i与 j值交换; C项,调用函数传入的是 i与 j地址,函数体内交换的是地址内元素,临时 变量 t为整型指针,且已正确开辟内存,能实现 i与 j值交换; D项与B项相同,能实现 i与 j值交换。 8

33、【正确答案】 C 【试题解析】 C语言中,最基本的数据类型包括整型、实型、字符型。 9 【 正确答案】 C 【试题解析】 算法的时间复杂度是指执行算法所需要的计算工作量。数据的存储结构直接决定数据输入,因此会影响算法所执行的基本运算次数, A项正确;算法的空间复杂度是指执行这个算法所需要的内存空间,其中包括输入数据所占的存储空间, B项正确;算法的时间复杂度与空间复杂度没有直接关系, C项错误;算法程序执行的具体时间受到所使用的计算机、程序设计语言以及算法实现过程中的许多细节影响,而算法的时间复杂度与这些因素无关,所以算法的时间复杂度与算法程序执行的具体时间是不一致的, D项正确。 10 【正

34、确 答案】 A 【试题解析】 “格式控制串 ”用来指定每个输出项的输出格式, s对应字符串, c对应字符。双引号里面的内容为字符串 “a“,单引号里面的内容为字符a。 11 【正确答案】 A 【试题解析】 C语言中,判断字符串是否相等,使用字符串比较函数 strcmp(),不能使用相等操作符 “=”。 strcmp(s1, s2)函数比较 s1和 s2所指字符串的大小时,若串 s1串 s2,函数值大于 0(正数 );若串 s1=串 s2,函数值等于 0;若串 s1串 s2,函数值小于 0(负数 )。 12 【正确答案】 D 【试题解析】 逗号表达式的计算过程是从左到右逐个求每个表达式的值,取最

35、右边一个子表达式的值作为该逗号表达式的值。赋值运算结合性为由右向左结合,赋值运算符左边为变量,右边为变量或常量,且左右两边数据类型相同才能实现赋值。逻辑表达式成立则返回 1,不成立返回 0。 A项逗号表达式 (z, x, y)取 y值为 12; B项逗号表达式 x, y取 y值为表达式值,然后赋值给 z=12,表达式值为12; C项逗号表达式 (x, y)取 y值为表达式值,然后赋值给 z=12,表达式值为12; D项逻辑表达式 x=y不成立,则 z=0,表达式值为 0。 13 【正确答案】 D 【试题解析】 A项错误,数据结构线性与否与存储空间是否连续没有直接关系,如二叉树可以用一片连续的空

36、间来存储,但二叉树为非线性结构; B项错误,线性表的链式存储结构可以用不连续的空间来存储,但线性表为线性结构; C项错误,没有根结点的非空数据结构一定不是线性结构; D项正确,线性结构有且只有一个根结点,具有两个根结点的结构一定是非线性结构。 14 【正确答案】 A 【试题解析】 实型常量用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。十进制 小数形式由数字和小数组成,必须有小数点,且小数点的位置不受限制。指数形式由十进制数加阶码标志 “e”或 “E”以及阶码 (只能为整数,可以带符号 )组成。 4 5E2为指数形式实数, A项正确; E1 3阶码标志前缺少十进制数,

37、并且阶数不是整数, B项错误; 7 11 E缺少阶数, C项错误; 1 2E1 2阶数不是整数, D项错误。 15 【正确答案】 A 【试题解析】 函数体是函数首部下面的花括号内的部分,所以函数体必须由 开始, A项正确; C程序总是从 main函数开始执行的,不是 main语句, B项错误;函数可以嵌套, 注释不能嵌套, C项错误; C程序中允许两种注释,以开头的单行注释;以 *开始,以 *结束的块式注释, D项错误。 16 【正确答案】 A 【试题解析】 “stdio h”文件中包含标准输入输出函数的函数说明,预处理指令#include是指程序可以在该文件中找到 printf, scanf

38、等标准输入输出函数。 17 【正确答案】 B 【试题解析】 白盒测试根据程序的内部逻辑来设计测试用例,检查程序中的逻辑通路是否都按预定的要求正确地工作。白盒测试的主要技术有逻辑覆盖测试、基本 路径测试等。常用的黑盒测试方法和技术有:等价类划分法、边界值分析法、错误推测法和因果图等。 18 【正确答案】 A 【试题解析】 调用 strstr函数,返回值为 a指向的字符串在 b指向的字符串中第一次出现的位置,并将此地址赋给指针 p。 strlen()函数求字符串的实际长度 (不包含结束标志 )。 strstr函数返回的地址下标值为 9,加上 a长度 3,再加 1,指针 P指向的地址下标值为 13,

39、输出 “to Beijing! ”。 19 【正确答案】 A 【试题解析】 在 main()函数中,首先给一维数组 array赋初值 2, 2, 0, 0, 0,再调用 change函数,对 array数组中的每一个数进行减 1处理,最后使用 for循环语句输出数组元素的值。 20 【正确答案】 A 【试题解析】 continue语句的作用是结束本次循环,即不再执行循环体中continue语句之后的语句,而是立即转入下次循环对循环条件的判断与执行。本题执行过程为:输入 3,则 data: 3;执行 for循环, i=0, if条件成立,结束本次循环,不输出 i值,执行下一次循环;直到 i =3

40、, if条件不成立,依次输出 i值3、 4,直到 i=5退出 for循环。 21 【正确答案】 A 【试题解析】 对长度为 n的线性表排序,最坏情况下,二分法查找时间复杂度为O(log2n);顺序查找时间复杂度为 O(n);分块查找时间复杂度与分块规则有关;哈希查找时间复杂度为 O(1)。 22 【正确答案】 D 【试题解析】 程序执行过程为:输入 35, scanf函数从键盘读人 35赋值给 x,对 if条件进行判断, 35 10,条件成立,输出 1,不再执行下面的 else if语句,程序结束,输出结果为 1。 23 【正确答案】 A 【试题解析】 C语 言允许使用一些以特殊形式出现的字符

41、常量,使用 n来表示换行, n实际上是一个字符,它的 ASCII码值为 10,不存在 n用法。 24 【正确答案】 A 【试题解析】 带参数的宏的替换过程是,用宏调用提供的实参字符串直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。 S(k+j+2)被置换成k+j+2*k+j+2,计算时先计算 2*k,结果为 21; S(j+k+2)被置换成 j+k+2*j+k+2,计算时先计算 2*j,结果为 18。程序的运行结果是 21, 18。 25 【正确答案】 B 【试题解析】 实体集之间的联系分为 3类:一对一联系 (1: 1)、一对多联系 (1:m)、多对多联系 (m: n)。题目中一名

42、雇员就职于一家公司,一个公司有多名雇员,公司与雇员之间的联系为一对多 (1: m)联系。 26 【正确答案】 C 【试题解析】 采用 E-R方法得到的全局概念模型是对信息世界的描述,为了适合关系数据库系统的处理,必须将 E-R图转换成关系模式。 E-R图是由实体、属性和联系组成,而关系模式中只有一种元素 关系。 27 【正确答案】 C 【试题解析】 在不同编译单位内用 extern说明符来扩展全局变量的作用域,extern可以将全局变量作用域扩展到其他文件,而不是限制全局变量的作用域。 28 【正确答案】 A 【试题解析】 case语句中没有 break语句,如果匹配 case0,则变量 n0

43、、 n1、n2的值都会加一。因此,变量 no统计的是字符串 s中非 1非 2的字符个数,n0=3;变量 n1统计的是字符串 s中非 2的字符个数, n1=8;变量 n2统计的是字符串 s中所有字符的个数, n2=9;变量 nn统计的是字符串 s中非 0非 1非 2的字符的个数, nn=1。 29 【正确答案】 C 【试题解析】 快速排序与冒泡排序的时间复杂度均为 O(n2), A项错误;快速排序比希尔排序的时间复杂度要大 (O(n2) 0(n1 5), B项错误;希尔排序的时间复杂度比直接插入排序的时间复杂度要小 (O(n1 5)2), C项正确;快速排序比希尔排序的时间复杂度大 (O(n2)

44、O(n1 5), D项错误。 30 【正确答案】 A 【试题解析】 x=0x18为赋值表达式,十六进制数 0x18非 0,故 x非 0, if条件成立输出 T,之后再输出 F与回车符。程序运行后的输出结果是 TF。 31 【正确答案】 C 【试题解析】 宏名习惯采用大写字母,以便与一般变量区别,但是并没有规定一定要用大写字母。 32 【正确答案】 A 【试题解析】 函数 fun中, while循环退出时,指针 p指向字符串结束标志的下一个地址,并返回 p-s的差值,即返回字符串 s的长度 (不包含 O)加一,因此程序输出结果为 6。 33 【正确答案】 D 【试题解析】 计算机软件由两部分组成

45、: 机器可执行的程序和数据; 机器不可执行的,与软件开发、运行、维护、使用等有关的文档。 34 【正确答案】 A 【试题解 析】 在对数组进行初始化时,如果在声明数组时给出了长度,但没有给所有的元素赋予初始值,那么 C语言将自动对余下的元素赋初值 0,则array=3, 5, 10, 4, 0。按位与运算 “&”,当参加运算的两个二进制数的对应位都为 1,则该位的结果为 1,否则为 0。将数组元素与 3=11B按位与,即 3&3=3,5&3=1, 10&3=2, 4&3=0, 0&3=0。 for循环输出与运算结果: 3, 1, 2, 0, 0。 35 【正确答案】 A 【试题解析】 B项错误

46、, do-while语句先执行循环体,再判断循环条件语句,while-do循环先判断循环条件语句,再执行循环体; C项错误, do-while语句构成的循环, while语句中的表达式值为 0时结束循环; D项错误, do-while语句除了可以使用 break语句退出循环外,还可以使用循环条件语句,当不满足循环条件时退出循环。 36 【正确答案】 A 【试题解析】 常数的地址存储在内存的常量区,常量区存储的都是常量,值都是不可修改的,所以直接取常量的地址赋给指针变量没有任何意义, C语言也不允许这样做,编译会出错, B项错误;表达式的值存储在临时变量中,内存中存在专门用来存储临 时变量的区域

47、,对这块地址进行操作也是没有意义的, C语言不允许这样做,编译会出错, C项错误;可以取一个指针变量的地址,但是指针变量的地址属于指针,只能赋值给指针类型的指针变量, D项错误。 37 【正确答案】 D 【试题解析】 软件具有以下特点: 软件是一种逻辑实体,具有抽象性; 软件没有明显的制作过程; 软件在使用期间不存在磨损、老化问题; 软件对硬件和环境具有依赖性; 软件复杂性高,成本昂贵; 软件开发涉及诸多的社会因素,如知识产权等。 38 【正确答案】 A 【试题解析】 程序的执行过 程为:从键盘读入两个。 float类型数据,分别赋给x、 y,调用函数 calc将两数之和放入指针 sum指向的地址,正确的引用形式为(*sum),所以横线处填写 *sum。 39 【正确答案】 D 【试题解析】 for循环每次将函数 getchar()的输入值赋给变量 c,如果不等于#,则执行 putchar(+c),即将当前变量 c的 ASCII码加 1后,再输出改变后的变量 c的值。当变量 c的值等于 #,则终止循环,所以输出应该是 bcdefgh。 40 【正确答案】 A 【试题解析】 程序的执行过 程为:定义数组 m,并为其赋初值,数组长度为10。调用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1