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

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

1、国家二级 C语言机试(选择题)模拟试卷 30及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)一个算法的空间复杂度大,则其时间复杂度也必定大 ( B)一个算法的空间复杂度大,则其时间复杂度必定小 ( C)一个算法的时间复杂度大,则其空间复杂度必定小 ( D)算法的时间复杂度与空间复杂度没有直接关系 2 下列叙述中正确的是 ( A) 循环队列中的元素个数随队头指针与队尾指针的变化而动态变化 ( B)循环队列中的元素个数随队头指针的变化而动态变化 ( C)循环队列中的元素个数随队尾指针的变化而动态 变化 ( D)以上说法都不对 3 一棵二叉树中共有 80个叶子结点与 70个度为 1的结点,

2、则该二叉树中的总结点数为 ( A) 219 ( B) 229 ( C) 230 ( D) 231 4 对长度为 10的线性表进行冒泡排序,最坏情况下需要比较的次数为 ( A) 9 ( B) 10 ( C) 45 ( D) 90 5 构成计算机软件的是 ( A)源代码 ( B)程序和数据 ( C)程序和文档 ( D)程序、数据及相关文档 6 软件生命周期可分为定义阶段、开发阶段和维护阶段,下面不属于开发阶段任务的是 ( A)测 试 ( B)设计 ( C)可行性研究 ( D)实现 7 下面不能作为结构化方法软件需求分析工具的是 ( A)系统结构图 ( B)数据字典 (DD) ( C)数据流程图 (

3、DFD图 ) ( D)判定表 8 在关系模型中,每一个二维表称为一个 ( A)关系 ( B)属性 ( C)元组 ( D)主码(键) 9 若实体 A和 B是一对多的联系,实体 B和 C是一对一的联系,则实体 A和 C的联系是 ( A)一对一 ( B)一对多 ( C)多对一 ( D)多对多 10 有三个关系 R、 S和 T如下: 则由关系 R和 S得到关系 T的操作是 ( A)选择 ( B)投影 ( C)交 ( D)并 11 以下叙述中正确的是 ( A) C语言程序所调用的函数必须放在 main函数的前面 ( B) C语言程序总是从最前面的函数开始执行 ( C) C语言程序中 main函数必须放在

4、程序的开始位置 ( D) C语言程序总是从 main函数开始执行 12 C语言程序中,运算对象必须是整型数的运算符是 ( A) sum = pad = 5; pAd = +sum, pAd+, +pad; printf(“%dn“, pad ); 程序的输出结果是 ( A) 5 ( B) 6 ( C) 7 ( D) 8 14 有以下程序 #include main() int a=3; a+=a-=a*a; printf( “%dn“, a ); 程序的输出结果是 ( A) 0 ( B) 9 ( C) 3 ( D) -12 15 sizeof( double )是 ( A)一个整型表达式 (

5、B)一个双精度型表达式 ( C)一个不合法的表达式 ( D)一种函数调用 16 有以下程序 #include main() int a=2, c=5; printf( “a=%d,b=%dn“, a,c ); 程序的输出结果是 ( A) a=2,b=5 ( B) a=%2,b=%5 ( C) a=%d,b=%d ( D) a=%d,b=%d 17 若有定义语句: char a=82; 则变量 a ( A)说明不合法 ( B)包含 1个字符 ( C)包含 2个字符 ( D)包含 3个字符 18 有以下程序 #include main() char c1=A, c2=Y; printf( “%d,

6、 %dn“, c1,c2 ); 程序的输出结果是 ( A)输出格式不合法,输出出错信息 ( B) 65,89 ( C) 65,90 ( D) A,Y 19 若变量已正确定义 for( x=0,y=0; ( y!=99 for( x=3; x 6; x+ ) printf( (x%2 ) ? (“*%d“) :(“#%d“),x); printf(“n“); 程序的输出结果是 ( A) *3#4*5 ( B) #3*4#5 ( C) *3*4#5 ( D) *3#4#5 22 有以下程序 #include main() int a, b; for( a=1,b=1; a =100; a+ ) i

7、f(b=20) break; if(b % 3=1) b=b+3; continue; b=b-5; printf(“%dn“,a); 程序的输出结果是 ( A) 10 ( B) 9 ( C) 8 ( D) 7 23 有以下程序 #include void fun( int x, int y, int *c, int *d ) *c = x+y;*d = x-y; main() int a=4, b=3, c=0, d=0; fun ( a, b, printf( “%d %dn“ , c, d ); 程序的输出结果是 ( A) 0 0 ( B) 4 3 ( C) 3 4 ( D) 7 1 2

8、4 有以下程序 #include void fun( int *p, int *q ) int t; t = *p;*p = *q;*q=t; *q = *p; main() int a=0, b=9; fun ( printf( “%d %dn“ , a,b ); 程序的输出结果是 ( A) 9 0 ( B) 0 0 ( C) 9 9 ( D) 0 9 25 有以下程序 #include main() int a = 2,4,6,8,10 , x, *p, y=1; p = for( x=0; x 3; x+ ) y += *(p+x); printf( “%dn“,y ); 程序的输出结果

9、是 ( A) 13 ( B) 19 ( C) 11 ( D) 15 26 有以下程序 #include main() int i, x33 = 1,2,3,4,5,6,7,8,9 ; for( i=0; i 3; i+ ) printf( “%d “, xi2-i ); printf( “n“ ); 程序的输出结果是 ( A) 1、 5、 0 ( B) 3、 5、 7 ( C) 1、 4、 7 ( D) 3、 6、 9 27 设有某函数的说明为 int* func(int a10, int n); 则下列叙述中,正确的是 ( A)形参 a对应的实参只能是数组名 ( B)说明中的 a10写成 a

10、或 *a效果完全一样 ( C) func的函数体中不能对 a进行移动指针(如 a+)的操作 ( D)只有指向 10个整数内存单元的指针,才能作为实参传给 a 28 有以下程序 #include char fun( char *c ) if ( *c =Z return *c; main() char s81, *p=s; gets( s ); while( *p ) *p =fun( p ); putchar( *p ); p+; printf( “n“); 若运行时从键盘上输入 OPEN THE DOOR,程序的输出结果是 ( A) OPEN THE DOOR ( B) oPEN tHE d

11、OOR ( C) open the door ( D) Open The Door 29 设有定义语句: char *aa2= “abcd“,“ABCD“; 则以下叙述正确的是 ( A) aa0存放了字符串 “abcd“的首地址 ( B) aa数组的两个元素只能存放含有 4个字符的一维数组的首地址 ( C) aa数组的值分别是字符串 “abcd“和 “ABCD“ ( D) aa是指针变量,它指向含有两个元素的字符型数组 30 有以下程序 #include int fun( char *s ) char *p=s; while (*p !=0 ) p+; return ( p-s ); main

12、() printf( “%dn“, fun( “goodbey!“ ) ); 程序的输出结果是 ( A) 0 ( B) 6 ( C) 7 ( D) 8 31 有以下程序 #include int fun( int n ) int a; if( n=1 ) return 1; a = n + fun( n-1 ); return ( a ); main() printf( “%dn“, fun( 5 ) ); 程序的输 出结果是 ( A) 9 ( B) 14 ( C) 10 ( D) 15 32 有以下程序 #include int d=1; void fun( int p ) int d=5;

13、 d += p+; printf(“%d “, d ); main() int a=3; fun( a ); d += a+; printf(“%dn“,d); 程序的输出结果是 ( A) 8 4 ( B) 9 6 ( C) 9 4 ( D) 8 5 33 有以下程序 #include int fun(intA) int b=0; static int c=3; a =( c+,b+); return ( a ); main() int a = 2, i, k; for( i=0; i main() char c25= “6934“, “8254“ ,*p2 ; int i, j, s=0;

14、for( i=0; i 2; i+ ) pi=ci; for( i=0; i 2; i+ ) for( j=0; pij 0 j+=2 ) s = 10*s + pij - 0; printf( “%dn“ ,s ); 程序的输出结果是 ( A) 693825 ( B) 69825 ( C) 63825 ( D) 6385 35 有以下程序 #include #define SQR(X) X*X main() int a=10, k=2, m=1; a /= SQR(k+m)/SQR(k+m); printf(“%dn“,a); 程序的输出结果是 ( A) 0 ( B) 1 ( C) 9 (

15、D) 10 36 有以下程序 #include main() char x=2, y=2, z; z=( y 1 ) printf( “%dn“,z ); 程序的输出结果 是 ( A) 1 ( B) 0 ( C) 4 ( D) 8 37 有以下程序 #include struct S int a;int b; ; main() struct S a, *p= a.a=99; printf( “%dn“ , _ ); 程序要求输出结构体中成员 a的数据,以下不能填入横线处的内容是 ( A) a.a ( B) *p.a ( C) p- a ( D) (*p).a 38 有以下程序 #include

16、 #include void fun( double *p1,double *p2,double *s) s = (double *)calloc( 1,sizeof(double) ); *s = *p1 + *( p2+1 ); main() double a2 = 1.1, 2.2 , b2 = 10.0, 20.0 , *s=a; fun( a, b, s ); printf( “%5.2fn“, *s); 程序的输出结果是 ( A) 21.10 ( B) 11.10 ( C) 12.10 ( D) 1.10 39 若已建立以下链表结构,指针 p、 s分别指向如图所示结点 则不能将 s

17、所指结点插入到链表末尾的语句组是 ( A) p=p- next; s - next=p; p- next=s; ( B) s - next=0; p=p- next; p- next=s; ( C) p=p- next; s - next=p- next; p- next=s; ( D) p=(*p).next; (*s ).next=(*p).next; (*p).next=s; 40 若 fp已定义为指向某文件的指针,且没有读到该文件的末尾,则 C语言函数feof(fp)的函数返回值是 ( A) EOF ( B)非 0 ( C) -1 ( D) 0 国家二级 C语言机试(选择题)模拟试卷

18、30答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 算法的空间复杂度是指算法在执行过程中所需要的内存空间,算法的时间复杂度,是指执行算法所需要的计算工作量,两者之间并没有直接关系,答案为 D。 2 【正确答案】 A 【试题解析】 在循环队列中,用队尾指 针 rear指向队列中的队尾元素,用排头指针 front指向排头元素的前一个位置。因此,从排头指针 front指向的后一个位置直到队尾指针 rear指向的位置之间所有的元素均为队列中的元素。所以循环队列中的元素个数与队头指针和队尾指针的变化而变化, A正确。 3 【正确答案】 B 【试题解析】 二叉树中,度为 0的节点数等于度为 2

19、的节点数加 1,即 n2=n0-1,叶子节点即度为 0,则 n2=79,总结点数为 n0+n1+n2=80+70+79=229,答案为B。 4 【正确答案】 C 【试题解析】 冒泡法 是在扫描过程中逐次比较相邻两个元素的大小,最坏的情况是每次比较都要将相邻的两个元素互换,需要互换的次数为9+8+7+6+5+4+3+2+1=45,选 C。 5 【正确答案】 D 【试题解析】 软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档,选 D。 6 【正确答案】 C 【试题解析】 开发阶段包括分析、设计和实施两类任务。其中分析、设计包括需求分析、总体设计和详细设计 3个阶段,实施则

20、包括编码和测试两个阶段, C不属于开发阶段。 7 【正确答案】 A 【试题 解析】 结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。 8 【正确答案】 A 【试题解析】 关系模型采用二维表来表示,即每个二维表称为一个关系。 9 【正确答案】 B 【试题解析】 A和 B为一对多的联系,则对于 A中的每一个实体, B中有多个实体与之联系,而 B与 C为一对一联系,则对于 B中的每一个实体, C中之多有一个实体与之联系,则可推出对于 A中的每一个实体, C中有多个实体与联系,所以为一对多联系。 10 【正确答案】 D 【试题解析】 关系 T中的元素与关系 R和 关系 S中不同元素

21、的总和,因此为并操作。 11 【正确答案】 D 【试题解析】 C语言所调用的函数可以放在调用它的函数前 ,也可以放在调用它的函数后 ,所以 A错误 ?C语言程序总是从 main函数开始执行 ,所以 B错误 ?main函数的位置可以放在开始 ,也可以放在中间 ,也可以放在最后 ,所以 C错误 ? 12 【正确答案】 C 【试题解析】 %取余运算是二目运算符 ,且要求运算对象必须为整数 ,所以选 C。 13 【正确答案】 B 【试题解析】 C语言区分大小写 ,pad与 pAd是两个不同的变量,首先将 5赋值给两个变量 ,由于赋值运算符的优先级高于逗号运算符 ,所以计算 pAd=+sum,此时pAd

22、为 6,sum也为 6,然后计算 pAd+,pAd的值变为 7,+pad,pad的值变为 6,所以选择 B。 14 【正确答案】 D 【试题解析】 首先计算 a*a结果为 9,执行 a=a-9,a的值为 -6,然后执行 a+=a,即a=a+a=-6+(-6),所以值为 -12。 15 【正确答案】 A 【试题解析】 sizeof是 C语言中的一个操作符 (operator),不是函数调用 ,简单的说其作用就是返回一个对象或 者类型所占的内存字节数,所以选择 A。 16 【正确答案】 C 【试题解析】 C语言中用 “%“打印输出字符 “%“,所以 %d,输出为 %d两个普通字符 ,而不是格式控制

23、符 “%d“的含义 ,所以打印结果为 C。 17 【正确答案】 A 【试题解析】 定义语句: char a=82;定义字符变量 a,但是赋初值时却给赋值字符常量,因此 A选项正确。 18 【正确答案】 B 【试题解析】 本题重点考察字符变量的相关知识。分别给字符型变量 a和 b分别赋值为 A和 Y,即 A和 Y的 ASSCII码,因此输出结果为 65,89,因此 B选项正确。 19 【正确答案】 B 【试题解析】 本题重点考察 for语句的循环次数,for(x=0,y=0;(y!=99后 d变为 4,所以答案为 A。 33 【正确答案】 B 【试题解析】 题目中 fun函数被执行了两次,两次执

24、行后,都是返回了函数内部的 b值,所以答案为 0,即 B选项正确。 34 【正确答案】 D 【试题解析】 本题的意图在于将 c中两个字符串的偶数位置的数字组成一个新数,找到的四个数字分别 为 6、 3、 8、 5,组成的数为 6385,所以答案为 D选项。 35 【正确答案】 B 【试题解析】 本题考查宏定义,宏定义只是做个简单的替换,执行SQR(k+m)/SQR(k+m)=k+m*k+m/ k+m*k+m=15/2, a/= SQR(k+m)/SQR(k+m)的结果为 1,选项 B正确。 36 【正确答案】 B 【试题解析】 本题考查位运算 1为 1,二者与一下为0,所以 B选项正确。 37

25、 【正确答案】 B 【试题解析】 本题考查结构体变量的引用, 题目中要求输出结构体中成员 a的数据, p为指针, *p为结构体变量,那么 *p.a可以表示为结构体中成员 a的数据。 38 【正确答案】 D 【试题解析】 本题考查把数组名作为函数参数,执行 fun函数后, s的值并没有发生变化,仍然是指向 a,所以输出结果为 1.10,选项 D正确。 39 【正确答案】 A 【试题解析】 本题考查向链表中插入节点, A选项语句错误,不能够实现在链表末尾插入。 40 【正确答案】 D 【试题解析】 本题考查文件的定位, feof函数的用法是从输入流读取数据,如果到达 文件末尾(遇文件结束符), eof函数值为非零值,否则为 0,所以选项 D正确。

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

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

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