首页 百科知识 选择题(每小题分,共分)

选择题(每小题分,共分)

时间:2024-12-11 百科知识 版权反馈
【摘要】:本题中B选项是科学计数法表示的浮点数实例,C选项是浮点数实例,D选项是字符串实例。[解析]C语言中,逗号运算符可以把两个以上的表达式连接成一个表达式。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式的值作为整个逗号表达式的值。A选项由于1.0为浮点数,计算结果自动转换为浮点数,故A选项正确。

全国计算机等级考试二级C语言真题题库2 2015年9月

(总分43, 做题时间120分钟)

一、选择题(每小题1分,共40分)

A 数据结构中的数据元素不能是另一数据结构

B 数据结构中的数据元素可以是另一数据结构

C 空数据结构可以是线性结构也可以是非线性结构

D 非空数据结构可以没有根节点



答案:A

[解析]数据元素是一个含义很广泛的概念,它是数据的“基本单位”,在计算机中通常作为一个整体进行考虑和处理。数据元素可以是一个数据也可以是被抽象出的具有一定结构的数据集合,所以数据结构中的数据元素可以是另一数据结构。满足有且只有一个根节点并且每—个节点最多有一个前件,也最多有一个后件的非空的数据结构被认为是线性结构,不满足上述条件的结构为非线性结构。空数据结构可以是线性结构也可以是非线性结构。非空数据结构可以没有根节点,如非性线结构“图”就没有根节点。故选A选项。

A 执行算法时所使用的额外空间固定(即不随算法所处理的数据空间大小的变化而变化)

B 执行算法时所使用的额外空间随算法所处理的数据空间大小的变化而变化

C 执行算法时不使用额外空间

D 执行算法时不使用任何存储空间



答案:A

[解析]算法的空间复杂度是指执行这个算法所需要的内存空间,包括输人数据所占的存储空间、程序本身所占的存储空间、算法执行过程中所需要的额外空间。如果额外空间量相对于问题规模(即输人数据所占的存储空间)来说是常数,即额外空间量不随问题规模的变化而变化,则称该算法是原地工作的。故选A选项。

A m-1

B m

C 1

D 0



答案:A

[解析]循环队列长度为m,由初始状态为front=rear=m,可知此时循环队列为空。入队运算时,首先队尾指针进1(即 rear+1),然后在rear指针指向的位置插入新元素。特别的,当队尾指针rear=m+1时,置rear=1。退队运算时,排头指针进1(即front+1),然后删除front指针指向的位置上的元素,当排头指针front=m+1时,置front=1。从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素。如果rear-front>0,则队列中的元素个数为rear-front个;如果rear-front<0,则队列中的元素个数为rear-front+m。该题中m-1<m,即rear-front<0,则该循环队列中的元素个数为(m-1)-m+m=m-1。故选A选项。

A 15

B 16

C 17

D 不存在这样的树



答案:C

[解析]树是一种简单的非线性结构,直观地来看,树是以分支关系定义的层次结构。在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。由于只有度为3的节点和叶子节点,可知最后一层都为叶子节点,倒数第二层一部分节点度为3,一部分为叶子节点,其余的节点的度均为3,计算度为3的节点总数(33-1-1)/2<8<(34-1-1)/2可知,树共有4层,前两层有度为3的节点(33-1-1)/2=4个,第三层有33=9个节点,其中4个是度为3的节点,5个是叶子节点,所以该树中的叶子节点数为4×3+5=17。故选C选项。

A 29

B 30

C 249

D 251



答案:A

[解析]在树结构中,一个节点所拥有的后件个数称为该节点的度,所有节点中最大的度称为树的度。对任何一棵二叉树,度为0的节点总是比度为2的节点多一个。二叉树节点总数为530,度为2的节点有250个,则度为0的节点有251个,那么度为1的节点个数为530-250-251=29。故选A选项。

A 前序序列

B 中序序列

C 后序序列

D 以上说法均可以



答案:B

[解析]二叉树遍历可以分为3种:前序遍历(访问根节点在访问左子树和访问右子树之前)、中序遍历(访问根节点在访问左子树和访问右子树两者之间)、后序遍历(访问根节点在访问左于树和访问右子树之后)。由于节点值均大于其左子树上的所有节点值,且小于右子树上的所有节点值,那么只要遍历时访问根节点在访问左于树和右子树之间,遍历序列有序,即中序序列有序。故选B选项。

A -103

B 10E3

C 10.3

D “0103”



答案:A

[解析]整数类实例包括:十进制常量用0~9表示,不能以0开头;八进制常量用0~7表示,必须用0开头;十六进制常量用0~9和A~F(a~f)表示,必须以0x或0X开头。本题中B选项是科学计数法表示的浮点数实例,C选项是浮点数实例,D选项是字符串实例。故选A选项。

A 软件包括程序、数据和文档

B 软件包括程序和数据

C 软件包括算法和数据结构

D 软件包括算法和程序



答案:A

[解析]计算机软件由两部分组成:一是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。故选A选项。

A 软件的定义和开发阶段

B 软件的需求分析、设计与实现阶段

C 软件的开发阶段

D 软件产品从提出、实现、使用维护到停止使用退役的过程



答案:D

[解析]通常把软件产品从提出、实现、使用、维护到停止使用、退役的过程称为软件生命周期。A、B、C选项均为生命周期的一部分。故选D选项。

A 数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能

B 数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件

C 数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少

D 数据库系统独立性较差,而文件系统独立性较好



答案:A

[解析]数据管理技术的发展经历了3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。三者各自的特点如下表所示。

数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能。数据库系统和文件系统的区别不仅在于管理的文件类型与数据量的多少,数据库系统具有高度的物理独立性和一定的逻辑独立性,而文件系统独立性较好。故本题答案为A选项。

A 程序模块化可以提高程序运行的效率

B 程序模块化可以提高程序编制的效率

C 程序模块化可以提高程序代码复用率

D 程序模块化可以提高调试程序的效率



答案:A

[解析]模块化程序的优点:(1)易于维护和复用,可以提高程序编制的效率;(2)易于分工合作;(3)易于模块化调试测试。模块化程序的副作用:(1)可能会降低程序运行效率;(2)设计的前期工作需要多花费时间。可知B,C,D选项正确。答案为A选项。

A &3

B #3

C _3

D -3



答案:C

[解析]C语言合法标识名的命名规则是:(1)标识符由字母、数字和下划线组成;(2)第一个字符不能是数字只能是字母或下划线。A选项的第一个字符为&,非法;B选项,第一个字符为#,非法;D选项,第一个字符为-,非法。答案为C选项。

a=11;b=3;c=0;

printf(”%d\n”,c=(a/b,a%b));

A 2

B 0

C 3

D 1



答案:A

[解析]C语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式的值作为整个逗号表达式的值。因此变量c的值为a%b即11%3=2。故答案为A选项。

A ’C-STR’

B 2014.1

C ”\1.0

D 2EK



答案:B

[解析]所谓常量是指在程序运行的过程中,其值不能被改变的量。在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。A选项是字符串,但使用单引号,错误;C、D选项,为实型常量中指数形式,但指数形式e(E)之前必须是数字,之后必须为整数,错误。故答案为B选项。

A 1.0/x/y/z

B 1/x*y*z

C 1/(x*y*z)

D 1/x/y/(double)z



答案:A

[解析]代数表达式1/(x•y•z)是小数,转为C语言的表达式必须是小数。A选项由于1.0为浮点数,计算结果自动转换为浮点数,故A选项正确。B、C、D选项的表达式均为0。答案为A选项。

B 12

C 1234



答案:A

[解析]scanf()函数从标准输入输出中读入两个字符’1’、’2’分别赋给变量a、b,遇到回车自动结束,但回车符已经存入缓冲区,函数getchar()将从中接受了回车符,故c被赋值为回车符,第二个getchar()读人字符’3’,因此a=’1’,b=’2’,c=<CR>,d=’3’。故答案为A选项。

A 2,2,3,4,4,4,

B 2,3,4,

C 2,2,3,4,

D 2,3,3,4,5,6,



答案:C

[解析]continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。在switch…case语句中,如果没有break会导致多个分支重叠。因此,输人1,2,3,则执行case 1:printf("%d",b+1);case 2:printf("%d,",b+1);continue;后结束。2则执行case 2:printf(”%d,",b+1);continue;3则执行default:printf("%d,",b+1);continue;得到的结果是2,2,3,4。故答案为C选项。

A 2.400000

B 1.500000

C 1.600000

D 2.000000



答案:A

[解析]题目中程序执行过程中关键语句z=x/y的结果为:z=1.5,if条件成立,得x=2.4,y=2.4,z=1.0,下一次循环if条件不成立跳出循环,按照格式打印y值为2.400000。故答案为A选项。

A 5,

B 0,0,0,0,0,

C 0,1,2,3,4,

D 0,1,



答案:C

[解析]scanf(”%c”,&c),输入的字符,题目中输入了0,字符0对应于ASCII码为48,因此for循环中,i的范围从0~5,均小于48,if条件不成立,直接执行下一条语句printf,因此得到的结果是0,1,2,3,4。故答案为C选项。

A sum += 1/i;

B while(i<50);

C sum=1.0;

D i++;



答案:A

[解析]选项A中,sum+=1/i;i为整型,因此1/i是整型类型,当1/i有小数时,小数部分会被截断。因此1/i结果始终为0,导致结果出错,应改为sum+=1.0/i。因此答案为A选项。

A 定义语句中的*号是一个间址运算符

B 定义语句中的*号是一个说明符

C 定义语句中的p只能存放double类型变量的地址

D 定义语句中*p=&a把变量a的地址作为初值赋给指针变量p



答案:A

[解析]指针运算符(通常称为间接引用运算符:indirection operator或复引用运算符:dereferencing operator)返回其操作数(即一个指针)所指向的对象的值。定义语句中的*号不是一个间址运算符,而是定义指针变量的说明符,因此,A项错误,B选项正确,原则上说变量p可以放double兼容性的变量地址,C选项正确,根据指针的赋值运算,可知D选项正确。故答案为A选项。

A 函数可以返回整个结构体,即使结构体中有数组

B 函数只能返回基本数据类型的数值或指针

C 函数不可以返回一个数组

D 函数不能没有返回值


答案:A

[解析]函数返回值可以为整型、实型、字符型、指针和结构类型,也可以没有返回值,因此A选项正确,可以返回数组指针,因此可知B、C、D选项错误。放答案为A选项。

A 24

B 720

C 120

D 6



答案:C

[解析]函数fun()求数组指定返回的元素的积。函数fun(a,3)求的是数组a[0]~a[3]的积。因此结果为2*3*4*5=120,故答案为C选项。

A 系统将开辟一个名为p的二维数组,p[0][0]中的值即为a[0][0]中的值

B p+1代表a[1][0]的地址

C p中将存放a数组的首地址

D p+2代表a数组最后一行的首地址



答案:A

[解析](*p)[4]定义了一个数组指针。p可以指向类似于arry[][4]的数组,题设中,p不是一个二维数组,只是可以指向这类二维数组,因此A选项错误。p+1代表了第一行第一个元素的地址,p=a指向数组a的首地址,则B、C选项正确,同理可知D选项也正确。故答案为A选项。

A B,C,D,E,

B A,B,C,D,

C C,D,E,F,

D B,D,F,H,



答案:A

[解析]函数change()的作用是从数组尾部将数组内的元素值加1。数组的初始值为ABCD,因此经change()后,得到的值为BCDE。故答案为A选项。

A 只有变量c的定义是合法的

B 只有变量a,b、c的定义是完全合法的

C 所有变量的定义都是完全合法的

D 只有变量a,b的定义是完全合法的



答案:D

[解析]float a[8]={1.0,2.0};定义了一个包含8个float型元素的数组,并初始化了数组的前2项,其他项是随机数。int b[1]={0},定义了只有一个int型元素的数组,并初始化为0。char c[]={"A","B"};定义一个char型数组,大小有初始化元素决定,但初始化值是字符串,类型不兼容,编译出错。char d="1",;定义一个char型变量,但是初始化赋值字符串,类型不兼容,编译出错。因此只有数组a,b的定义和初始化正确。故答案为D选项。

A 1234

B 5431

C 1235

D 3214



答案:C

[解析]第一个for循环初始化数组a,分别为1,3,5,随机数,形成了基本有序的序列,再将输入的数字插入到数组a,使它们形成有序序列。因此可以分析出,打印的结果为1,2,3,5。故答案为C选项。

A 9

B -1

C 10

D 0



答案:A

[解析]while(p<a+n&&*p!=x)p++;当p=a;n=10,x=10;时while循环条件成立,直到p=a+9,结束循环,执行下一条语句,if条件成立,返回p-a,此时执行p-a=a+9-a=9;因此,输出9。故答案为A选项。

A ejoty

B afkpu

C agmsy

D eimqu



答案:C

[解析]数组a是二维数组,数组w存放二维数组a行列值相同的位置上的元素,由a[5][10]可得w[0]~w[4]的元素分别是agmsy,因此打印结果为agmsy。故答案为C选项。

A 6

B 7

C 8

D 9



答案:A

[解析]字符串"\t\"\\\n\'\065\08AB"中共有13个字符,而strlen()函数从字符串第一个字符开始扫描,直到碰到第一个结束符'\0'为止,然后返回计数器值(长度不包含"\0")。故输出结果为6。答案为A选项。

A 012345

B 876543210

C 876543

D 012345678



答案:A

[解析]fun(*ss,m1,m2)的作用是,如果m1>m2交换数组元素ss[m1],ss[m2]。因此,fun(ss,0,5)后ss的0,1,2,3,4,5,6,7,8,\0。fun(ss,9,6)后ss的0,1,2,3,4,5,\0,8,7,6。fun(ss,0,9)后ss的0,1,2,3,4,5,\0,8,7,6。因此打印结果012345。故答案为A选项。

A 1,2,1,2,2,4

B 1,2,6,6,7,8

C 1,2,2,4,2,4

D 1,2,6,6,2,4



答案:A

[解析]全局变量与函数体内局部变量同名时,局部变量会覆盖全局变量,因此在sub1()函数内,全局变量m,n是不可见的,在函数sub1()内对m,n操作的是局部变量,对全局变量不产生影响。但在sub2()函数内,由于没有和全局变量重名,因此在此函数内,m,n是可见的。因此,第一个printf()打印的是全局变量m,n,故打印的是1,2;第二个printf(),调用sub1()。没有修改全局变量m,n,故打印的是1,2;第三个printf(),之前调用了sub2(),修改了全局变量m,n,因此,打印的是2,4。故答案为A选项。

A -263

B 2

C 0

D -26



答案:D

[解析]isspace(c)检查参数c是否为空格字符。若参数c为空格字符,则返回TRUE,否则返回NULL(0)。Isdigit(c)函数检查参数c是否为阿拉伯数字0到9。返回值若为阿拉伯数字,则返回TRUE,否则返回NULL(0)。fun()函数的第一个for循环判断字符串是否为负号。第二个for循环获取符号后面的数字字符,并将它们转化为整数。若遇到了非数字的字符则跳出,最后返回数组的结果。因此,可知首先获取负号,紧接着获取数值26,遇到了字符a,跳出返回-26,因此打印的结果是-26。故答案为D选项。

A data2=(2,6);

B data2=data1;

C data2.real=data1.real;

D data2.real=data1.unreal;



答案:A

[解析]结构体变量建议在定义的时候进行初始化。结构体常见的几种初始化方法如下:

计算机内核喜欢用第一种,使用第一种和第二种时,成员初始化顺序可变。因此,可以判断A选项错误。答案为A选项。

A 11,11

B 29,29

C 26,29

D 121,121



答案:B

[解析]#define命令是C语言中的一个宏定义命令,标识符一般使用大写,为了区分其他标识符,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。S(k+j+2)=k+j+2*k+j+2/k+j+2,经计算可得29,S(j+k+2)=j+k+2*k+j+2/j+k+2,经计算可得29。因此输出为29,29。答案为B选项。

A int *a[10];

B int(*a)[10];

C int a[10];

D int(*a[10])();



答案:A

[解析]C语言允许由用户自己定义类型说明符,也就是说允许由用户为数据类型取”别名”。类型定义符typedef即可用来完成此功能,可以完全代替原来的类型说明符。因此,变量a的类型为int *a[10]。typedef int*T[10],由于[]运算符优先级高于*,可以看成typedef int[10] *T,替换T可得int[10] *a=>int *a[10],因此,答案为A选项。

A 6,5,4,3,2,1,

B 1,2,3,4,5,6,

C 1,1,1,1,1,1

D 6,6,6,6,6,6,



答案:A

[解析]fopen("data.dat","w+");w+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失,若文件不存在则建立该文件。rewind(fp);使文件fp的位置指针指向文件开始。fprintf(fp,"%d\n",a[5-i]);将a[i]输出到fp指向的文件中。fscanf(fp,"%d",&k);将fp读入到变量k中,第一个for循环将数组中元素倒着输入到fp指向的文件中。rewind();则指向文件开始,因此打印的是数组a的倒叙。故打印结果为6,5,4,3,2,1。答案为A选项。

A 有运行错误

B 输出11.10

C 输出12.10

D 输出21.10



答案:A

[解析]calloc(n,sizeof(type))在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针,如果分配不成功,返回NULL。s在函数fun()内申请了内存空间,但是在调用fun()函数后会释放掉,最后q指向NULL,因此运行时打印出错。答案为A选项。

A fget(fp,ch);

B fputc(ch,fp);

C fprintf(fp,”%c”,ch);

D fwrite(&ch,sizeof(ch),1,fp);



答案:A

[解析]函数fgetc()从文件读入一个字符到指定变量。函数fputc()将指定字符写入fp文件中,函数fprintf(),fwrite()均是写入文件操作函数。因此B,C,D选项错误。答案为A选项。

A yellow:3

B yellow:2

C white:2

D white:3



答案:B

[解析]结构体定义时初始化,list[0]={"white",2},list[1]={"yellow",3},(list+1)->color=list[1].color="yellow",list->dim=list[0].dim=2,因此,打印的结果是yellow:2。故答案为B选项。


免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈