2020年度全国计算机等级考试二级C语言真题模拟库_第1页
2020年度全国计算机等级考试二级C语言真题模拟库_第2页
2020年度全国计算机等级考试二级C语言真题模拟库_第3页
免费预览已结束,剩余30页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、全国计算机等级考试二级 C 语言真题库之 选 择 题 17全国计算机等级考试等级考试真题库之选择题 (17)1. 下列叙述中正确的是A) 一个算法的空间复杂度大,则其时间复杂 度 也必定大B) 一个算法的空间复杂度大,则其时间复杂 度 必定小C) 一个算法的时间复杂度大,则其空间复杂 度 必定小D) 算法的时间复杂度与空间复杂度没有直接 关系参考答案: D 【解析】算法的空间复杂度是指算法在执行过 程 中所需要的内存空间,算法的时间复杂度, 是指 执行算法所需要的计算工作量,两者之间 并没有 直接关系,答案为 D。2. 下列叙述中正确的是A) 循环队列中的元素个数随队头指针与队尾 指针的变化而

2、动态变化B) 循环队列中的元素个数随队头指针的变化而动态变化0 循环队列中的元素个数随队尾指针的变化 而动态变化D)以上说法都不对参考答案: A【解析】在循环队列中,用队尾指针 rear 指向 队 列中的队尾元素 ,用排头指针 front 指向排头 元素 的前一个位置。因此,从排头指针 front 指 向的后 一个位置直到队尾指针 rear 指向的位置 之间所 有的元素均为队列中的元素。因此循环 队列中的 元素个数与队头指针和队尾指针的变 化而变化, A 正确3. 一棵二叉树中共有 80 个叶子结点与 70 个度为1 的结点,则该二叉树中的总结点数为A)219B)229C)230D)231参考

3、答案:B解析】二叉树中,度为 0 的节点数等于度为2 的节点数加 1, 即 n2=nO-L 叶子节点即度为 0, 则 n2=79 ,总结点数为 nO+n l+n2=80+70+79=229, 案为 B 。4. 对长度为 10 的线性表进行冒泡排序,最坏情况 下需要比较的次数为A)9B)10C)45D)90参考答案: C【解析】冒泡法是在扫描过程中逐次比较相邻 两 个元素的大小,最坏的情况是每次比较都要 将相 邻的两个元素互换,需要互换的次数为 9+8+7+6+5+4+3+2+1=45, 选 C 。5. 构成计算机软件的是A) 源代码B) 程序和数据C) 程序和文档D) 程序、数据及相关文档 参

4、考答案: D【解析】软件指的是计算机系统中与硬件相 互 依赖的另一部分,包括程序、数据和有关的 文档 , 选 D。6. 软件生命周期可分为定义阶段、开发阶段和 维 护阶段,下面不属于开发阶段任务的是 A ) 测试B ) 设计C) 可行性研究D) 实现参考答案: C【解析】开发阶段包括分析、设计和实施两类 任 务。其中分析、设计包括需求分析、总体设 计和 详细设计 3 个阶段,实施则包括编码和测 试两个阶段,C不属于开发阶段。7. 下面不能作为结构化方法软件需求分析工具 的是A) 系统结构图B) 数据字典 (DD)0 数据流程图 ( DFD 图)D)判定表参考答案: A【解析】结构化方法软件需求

5、分析工具主要有 数 据流图、数据字典、判定树和判定表。8. 在关系模型中,每一个二维表称为一个A ) 关系B ) 属性0 元组D)主码(键)参考答案: A【解析】关系模型采用二维表来表示,即每个 二 维表称为一个关系。9. 若实体 A 和 B 是一对多的联系,实体 B 和 C 是一对 一的联系,则实体 A 和 C 的联系是 A ) 一对一B ) 一对多C ) 多对一D ) 多对多参考答案: B【解析】 A 和 B 为一对多的联系,则对于 A 中 的每 一个实体, B 中有多个实体与之联系,而 B 与 C 为一对一联系,则对于 B 中的每一个实 体, C 中 之多有一个实体与之联系,则可推出 对

6、于 A 中的 每一个实体, C 中有多个实体与联 系,因此为一对多联系10.有三个关系R, S和T如下:ABCa12b21c31R则由关系R和S得到关系1E 口3ST的操作是QABCa12b21c31d32TA)选择B)投影C)交D)并参考答案: D【解析】关系 T 中的兀素与关系 R 和关系 S 中不同元素的总和,因此为并操作。11. 以下叙述中正确的是A) C 语言程序所调用的函数必须放在 main 函 数 的前面B) C 语言程序总是从最前面的函数开始执行C) C 语言程序中 main 函数必须放在程序的开 始 位置D) C 语言程序总是从 main 函数开始执行 参考答案: D【解析】

7、 C 语言所调用的函数能够放在调用它 的 函数前,也能够放在调用它的函数后,因此 A 错误。 C 语言程序总是从 main 函数开始执 行,因此 B 错误 o main 函数的位置能够放在开 始 , 也能够放在中 间,也能够放在最后,因此 C 错误。12. C 语言程序中,运算对象必须是整型数的运算 符是A) &&B) /C) %D) *参考答案: C解析】取余运算是二目运算符,且要求运 算对 象必须为整数,因此选 C。13 . 有以下程序#include <stdio.h> main()int sum, pad, pAd; sum = pad = 5;pAd =

8、+sum, pAd+, +pad; printf(n”, pad );程序的输出结果是A) 5B) 6D) 8参考答案: B【解析】 C 语言区分大小写 , pad 与 pAd 是两个 不同 的变量。首先将 5 赋值给两个变量 , 由于赋 值运算 符的优先级高于逗号运算符,因此计算 pAd=+sum, 此时 pAd%6,sum 也为 6, 然后计算 pAd+,pAd 的值变为 7,+pad,pad 的值变为 6, 因 此 选择 B 。14 . 有以下程序#include <stdio.h> main()int a=3; a+=a-=a*a;printf( " n”,a);

9、程序的输出结果是A) 0B) 9D) -12 参考答案: D【解析】首先计算 a*a 结果为 9, 执行 a=a.9,a 的 值为? 6, 然后执行 a+=a, 即 a=a+a=-6+(-6),H 此值为 ? 12O15.sizeof( double ) 是A)一个整型表示式B)一个双精度型表示式C)一个不合法的表示式D)一种函数调用参考答案: A【解析】 sizeof 是 C 语言中的一个操作符 (operator), 不是函数调用 , 简单的说其作用就是 返回一个对象或者类型所占的内存字节数。因 此 选择 A 。16 . 有以下程序#include <stdio.h> main

10、() (int a=2, c=5;printf( "a=%d /b=%dn" / a,c); 程序的输出结果是A)a=2,b=5B)a=%2,b=%5C)a=%d,b=%dD)a=%d,b=%d参考答案: C【解析】 C 语言中用” %”打印输出字符“” ,因 此 %4输出为d两个普通字符,而 不是格式控制符” d ”的含义,因此打印结 果为 C。17.若有定义语句:char a='82'则变量 aA)说明不合法B)包含 1 个字符C)包含 2 个字符D)包含 3 个字符参考答案: A【解析】定义语句: char a='82' 定义字符变量

11、a, 可是赋初值时却给赋值字符常量,因此 A 选项 正确。18 . 有以下程序#include <stdio.h> main()(char cl='A', c2='Y'printf( "%d, %dn", cl,c2 );程序的输出结果是A) 输出格式不合法,输出出错信息B) 65,89C) 65,90D) A,Y参考答案: B【解析】本题重点考察字符变量的相关知识。分 别给字符型变量 a 和 b 分别赋值为 A 和 Y, 即 A 和 Y 的 ASSCII 码,因此输出结果为 65,89,因 此 B 选项 正确。19.若变量已正确

12、定义for( x=0,y=0; ( y!=99 && x<4 ); x+ )则以上 for 循环A) 执行 3 次B) 执行 4 次0 执行无限次D) 执行次数不定参考答案: B【解析】本题重点考察 for 语句的循环次数, for(x=0,y=0;(y!=99&&x<4);x+), y!=99&&x<4即循环条件当 y 不等于 99 以及 x<4 时,执行循环语 句, 当有一个条件不成立时,均结束循环,因 此循环4次,B选项正确。20.对于while(!E)s;,若要执行循环体s,则E的 取值应为:A)E 等于 1B)E

13、 不等于 0C)E 不等于 1D)E 等于 0参考答案:【解析】 while 语句的一般形式为: while (表示 式) 语句;其中表示式是循环条件,语句为循 环体。 while 语句的语义是:计算表示式的值, 当值为 真(非 0)时,执行循环体语句。该题中 如要执行 语句S,贝!E应为真,因此E应等于0, D 选项正确。21. 有以下程序 #include <stdio.h> main()int x;for( x=3; x<6; x+ )printf( (x%2 ) ? ("*%d") :("#%d"),x);printf(&quo

14、t;n");程序的输出结果是A) *3#4*5B) #3*4#5C) *3*4#5D) *3#4#5参考答案:A【解析】条件运算符组成条件表示式的一般 形 式为:表示式1?表示式2 :表示式3其求值规则为:如果表示式1的值为真,则以表 示式2的值作为条件表示式的值,否则以表示式 2的值作为整个条件表示式的值。本题中语句 printf(x%2)?(“*%d “):("#%d"),x含义为变量 x 对2求余,如果结果为真,贝!|按照” *%d”格式输 出,否则按照#%d输出。因此A选项正确。22 .有以下程序#in elude <stdio.h>mai n

15、()(int a, b;for( a=l,b=l; a<=100; a+ )( if(b>=20) break;if(b % 3=1) b=b+3; continue; b=b-5;printf(" n” ,a);程序的输出结果是A) 10B) 9C) 8D) 7参考答案: B【解析】首先注意 for 循环的控制条件 当 b>=20 或者 a>100 则跳出 for 循环也即 b<20 且 a<=100 时执行 for 循环;第一次进入循环 a=l,b=l 均满足 循环条件,但 b%3=l 条件满足,故执行 b=b+3, 得到 b=4, 注意有 c

16、ontinue, 因此后面语句 不执行,直接跳转到a+这个语句,因此第一次循环完之 后a=2,b=4 ;进入第二轮循环,b%3=l也是满足 的,故再次b=b+3,此轮循环执行之后a=3,b=7,进 入下一轮。此后和前面循环同理,都是b%3=l满足,因为每次都是加3,而之后又去模3,且都跳过for后面语句直接执行a+,因此,一直循环 到b=22跳出for循环。此时a为8.综合起来就 是,每次循环b增加3, a增加1,且当b>22时跳 出循环,结束程序。因此b从1增加到22,有(22- 1) RF,因此a=l+7=8.因此B选项正确。23 .有以下程序#in elude <stdio.

17、h>void fun( int x, i nt y, i nt *c, i nt *d )(*c = x+y; *d = x-y; main()(in t a=4, b=3, c=0, d=0;fun ( a, b, &c, &d ); printf( "%d %dn" , c, d );A) 0 0B) 4 3C) 3 4D) 7 1参考答案:D【解析】主函数中首先初始化整型变量 a、b、 c、d分别为4、3、0、0o调用函数fun,将实参 传递 给形参。在fun函数内,*c=7、*d=lo返回 主函 数,最后输出7和1。因此D选项正确。24 .有以

18、下程序#in elude <stdio.h> void fun( int *p, i nt *q ) int tt = *p; *p = *q;*q=t;*q = *p;mai n()(int a=0, b=9;fun ( &a, &b );prin tf( "%d %dn" , a,b );程序的输出结果是A) 9 0B) 0 0C) 9 9D) 0 9参考答案:C【解析】主函数中定义整型变量a、b,分别赋值0和9。将a和b的地址传递给指针变量p和q, 函数fun中将a和b的值互换后,又将a的值赋 给b。返 回主函数,最后输出9和9。因此C 选

19、项正确。25 .有以下程序#in elude <stdio.h>mai n() in t a = 2,4,6,8,10 , x, *p, y=l;P = & al;for( x=0; x<3; x+ ) y += *(p+x);prin tf( "%dn",y);A) 13B) 19C) 11D) 15参考答案:B【解析】本题经过语句"P=&al"将指针变量p 指向了存储单元al,即使得p0的值为4, y的初 始值为1,然后经过3次for循环,使得y的值分 别加±30> pl和p2,那么y=l+4+6+8

20、,因此输出 的丫的值为19。26 .有以下程序#in elude <stdio.h> main ()int i,x33 = 123,4,5,6,7,8,9;for( i=0; i<3; i+ )printf( "%d ", xi2-i);prin tf( "n");A) 150B) 357C) 147D) 369参考答案: B程序首先初始化二维数组 x33, 然后经过 3 次 for 循环,输出 x02 、和 x20 的值,即 3、 5、7o 因此 B 选项正确。27.设有某函数的说明为int* func(int a10, int n)

21、;则下列叙述中,正确的是A) 形参 a 对应的实参只能是数组名B) 说明中的 a10 写成 2或*2 效果完全一样C) func 的函数体中不能对 a 进行移动指针 (如 a+) 的操作D) 只有指向 10 个整数内存单元的指针 , 才能 作 为实参传给 a参考答案: B本题重点考察返回指针值的函数相关知识,返回 指针值的函数,一般定义形式为:类型名 * 函数名(参数列表 )o func 函数被定义为指针型函 数,它的形 #int a10 和 int n, 分别指一维数组 a0 和整型变量 n 。28 . 有以下程序#include <stdio.h> char fun( char

22、 *c)(if ( *c<='Z' && *c>='A')*c-= 'A'-'a'return *c;main()(char s81, *p=s;gets( s);while( *p)(*p =fun( p);putchar( *p);P+; printf( "n");若运行时从键盘上输入 OPEN THE DOOR V回 车,程序的输出结果是A)OPETHDOONEhRB)OPENEdOORC)ope nthedoorD)Open TheDoor参考答C【解析】字符串输入函数get

23、s的功能是从标准 输入设备键盘上输入一个字符串。首先使指针 变量p指向字符串的首字母,while循环语句中 对字符串的每个字符进行fun函数操作。fun函 数的功能 是,将字符串中的大写字母变小写字 母。将处理结果返回主函数,主函数经过 putchar()字符输出函数进行输出。因此 C选项 正确。29.设有定义语句:char *aa2=( "abed"/ ,ABCD"A) aaO存放了字符串“abed”的首地址B) aa数组的两个元素只能存放含有4个字符 的一维数组的首地址C) aa数组的值分别是字符串"abed"和”ABCDD) aa是指针变

24、量,它指向含有两个元素的字 符型数组参考答案:A【解析】本题中定义了一个指针数组,数组中 存放的是字符指针,aa数组的两个元素分别包 含了 5个字符,因此能够存放5个字符的一维数组的首 地址,因此B选项错误。aa数组的值 是指向那两 个字符串的字符指针,而不是那两 个字符串,因 此C选项错误。aa本身是一个指 向两个字符指针的指针,因此D选项错误。30 .有以下程序#in elude <stdio.h>int fun( char *s )(char *p=s;while (*p !=O ) p+;return (p-s);mai n()(printf( "%dn"

25、;, fun( "goodbey!" ); 程序的输出结果是A) 0B) 6C) 7D) 8参考答案:C解析】本题主要考查了函数定义及调用,以及 while循环语句,执行fun函数后,首先是找到 最后一个字符的地址,然后减去第一个地址得 到的 就是这个字符串的长度,因此本题答案为 8.31 .有以下程序#in clude <stdio.h> int fun( int n) ( int a;if( n=1) retur n 1; a = n + fun( n-1); retur n(a);(printf(" %n” , fun( 5 ); 程序的输出结果

26、是A) 9B) 14C) 10D) 15参考答案:D【解析】考查函数的递归调用,只需要一步一步 递归调用fun函数即可,执行fun (5 ) = 5+ (4+(3+ (2+ fun (1) =15,因此答案为D选项。32 .有以下程序#in elude <stdio.h>int d=l;void fun( int p)(int d=5;d += p+;prin tf("%d ", d);mai n()int a=3; fun( a); d += a+;printf( % n" ,d);程序的输出结果是A) 8 4B) 9 6C) 9 4D) 8 5参考

27、答案:A【解析】本题主要考查局部变量和全局变量的 区另I,题目中函数之外定义的d为全局变量, 函数fun内定义的d为局部变量,因此执行fun 函数后,打印出8,执行完d+= a+;后d变为4,因 此答案为A。33 .有以下程序#inelude <stdio.h>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<2; i+ ) k = fun(a+);printf( "%dn",k);程序的输出结果是A) 4B) 0

28、 0 1D) 2参考答案:B【解析】题目中fun函数被执行了两次,两次 执行后,都是返回了函数内部的b值,因此答案 为0,即B选项正确。34 .有以下程序#in elude <stdio.h>main () char c2H5=” 69勺48254” ,*p2;int i, j, s=0;for( i=0; i<2; i+ ) pi=ci;for( i=0; i<2; i+ )for(j=0; pij>0 && pij<='9'j+=2)s = 10*s + pij - 'O'printf( "%dn" ,s);程序的输出结果是A) 693825B) 69825C) 63825D) 6385参考答案:D【解析】本题的意图在于将C中两个字符串的 偶 数位置的数字组成一个新数,找到的四个数 字分别为6、3、8、5,组成的数为6385,因此答 案为D选项。35 .有以下程序#in elude <stdio.h>#define SQR(X) X*X main()in t a=10, k=2, m=l;a /= SQR(k+m)/SQR(k+m); printf(" % n” ,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论