全国计算机二级C选择题题库套文档格式.docx
- 文档编号:17290006
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:22
- 大小:28.17KB
全国计算机二级C选择题题库套文档格式.docx
《全国计算机二级C选择题题库套文档格式.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C选择题题库套文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。
由于只有度为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选项。
5、某二叉树共有530个结点,其中度为2的结点有250个,则度为1的结点数为
A)29
B)30
C)249
D)251
对任何一棵二叉树,度为0的结点总是比度为2的结点多一个。
二叉树结点总数为530,度为2的结点有250个,则度为0的结点有251个,那么度为1的结点个数为530-250-251=29。
6、若某二叉树中的所有结点值均大于其左子树上的所有结点值,且小于右子树上的所有结点值,则该二叉树遍历序列中有序的是
A)前序序列
B)中序序列
C)后序序列
D)以上说法均可以
B
二叉树遍历可以分为3种:
前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。
由于结点值均大于其左子树上的所有结点值,且小于右子树上的所有结点值,那么只要遍历时访问根结点在访问左子树和右子树之间,遍历序列有序,即中序序列有序。
故选B选项。
7、将C语言的整数设为整数类I,则下面属于类I实例的是
A)-103
B)10E3
C)10.3
D)"
0103"
整数类实例包括:
十进制常量用0~9表示,不能以0开头;
八进制常量用0~7表示,必须用0开头;
十六进制常量用0~9和A~F(a~f)表示,必须以0x或0X开头。
本题中B选项是科学计数法表示的浮点数实例,C选项是浮点数实例,D选项是字符串实例。
8、下列叙述中正确的是
A)软件是程序、数据和文档
B)软件是程序和数据
C)软件是算法和数据结构
D)软件是算法和程序
计算机软件由两部分组成:
一是机器可执行的程序和数据;
二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。
9、软件生命周期是指
A)软件的定义和开发阶段
B)软件的需求分析、设计与实现阶段
C)软件的开发阶段
D)软件产品从提出、实现、使用维护到停止使用退役的过程
D
通常把软件产品从提出、实现、使用、维护到停止使用、退役的过程称为软件生命周期。
选项A、B、C选项均为生命周期的一部分。
故选D选项。
10、下列叙述中正确的是
A)数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能
B)数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件
C)数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少
D)数据库系统独立性较差,而文件系统独立性较好
数据管理技术的发展经历了3个阶段:
人工管理阶段、文件系统阶段和数据库系统阶段。
三者各自的特点如下表所示。
特点
人工管理阶段
文件系统阶段
数据库系统阶段
管理者
人
文件系统
数据库管理系统
面向对象
某个应用程序
现实世界
共享程度
无共享,冗余度大
共享性差,冗余度大
共享性大,冗余度小
独立性
不独立,完全依赖于程序
独立性差
具有高度的物理独立性和一定的逻辑独立性
结构化
无结构
记录内有结构,整体无结构
整体结构化,用数据模型描述
控制能力
由应用程序控制
由DBMS提供数据安全性、完整性、并发控制和恢复
数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能。
数据库系统和文件系统的区别不仅在于管理的文件类型与数据量的多少。
数据库系统具有高度的物理独立性和一定的逻辑独立性,而文件系统独立性较好。
故本题选A选项。
11、关于程序模块化,以下叙述错误的是
A)程序模块化可以提高程序运行的效率
B)程序模块化可以提高程序编制的效率
C)程序模块化可以提高程序代码复用率
D)程序模块化可以提高调试程序的效率
模块化程序的优点:
1、易于维护和复用,可以提高程序编制的效率,2、易于分工合作,3、易于模块化调试测试。
模块化程序的副作用:
1、可能会降低程序运行效率,2、设计的前期工作需要多花费时间。
可知选项B,C,D正确。
12、以下是正确C语言标识符的
A)&
3
B)#3
C)_3
D)-3
C语言合法标识名的命名规则是:
(1)标识符由字母、数字和下划线组成,
(2)第一个字符不能是数字只能是字母或下划线。
选项A的第一个字符为&
,非法,选项B,第一个字符为#,非法,选项D,第一个字符为-,非法。
答案为选项C。
13、若有定义:
inta,b,c;
以下程序段的输出结果是
a=11;
b=3;
c=0;
printf("
%d\n"
c=(a/b,a%b));
A)2
B)0
C)3
D)1
C语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。
逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。
也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。
因此c的值为a%b即11%3=2,故答案为A选项。
14、以下选项中合法的C语言常量是
A)'
C-STR'
B)2014.1
C)"
\1.0
D)2EK
所谓常量是指在程序运行的过程中,其值不能被改变的量。
在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。
选项A是字符串,但使用单引号,错误,选项C,D,为实型常量中指数形式,但指数形式e(E)之前必须是数字,之后必须为整数,错误。
故答案为B选项。
15、设有定义:
intx,y,z;
,且各变量已赋正整数值,则以下能正确表示代数式"
"
的C语言表达式是()。
A)1.0/x/y/z
B)1/x*y*z
C)1/(x*y*z)
D)1/x/y/(double)z
代数表达式1/
是小数,转为c语言的表达式必须是小数A选项由于1.0为浮点数,计算结果自动转换为浮点数,故A正确。
选项B,C,D的表达式均为0,因此只有选项A正确。
答案为A选项。
16、有以下程序
#include<
stdio.h>
main()
{chara,b,c,d;
scanf("
%c%c"
&
a,&
b);
c=getchar();
d=getchar();
%c%c%c%c\n"
a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第1列开始,<
CR>
代表回车,注意:
回车也是一个字符)
12<
34<
则输出结果是
A)12
3
B)12
C)1234
D)12
34
scanf()函数从标准输入输出中读入两个字符'1''2'分别赋给变量a、b,遇到回车自动结束,但回车符已经存入缓冲区,函数getchar()将从中接受这个字符,故c赋值为回车符,然后第二个getchar()读入字符'3',因此a='1',b='2',c=<
,d='3',故答案为A选项。
17、有以下程序
#include<
main()
{inta,b;
for(a=0;
a<
3;
a++)
{scanf("
%d"
&
switch(b)
{default:
%d,"
b+1);
continue;
case1:
b+1);
case2:
}
执行时输入:
123<
回车>
,则输出结果是
A)2,2,3,4,4,4,
B)2,3,4,
C)2,2,3,4,
D)2,3,3,4,5,6,
continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。
switch…case如果没有break会导致多个分支重叠。
因此,输入1,2,3,则1执行case1:
case2:
后结束。
2则执行case2:
3则执行default:
得到的结果是2,2,3,4。
故答案为C选项。
18、有以下程序
math.h>
main()
{doublex,y,z;
%lf%lf"
x,&
y);
z=x/y;
while
(1)
if(fabs(z)>
1.0)
{x=y;
y=x;
z=x/y;
elsebreak;
y=%f\n"
y);
3.62.4<
A)2.400000
B)1.500000
C)1.600000
D)2.000000
题目中程序执行过程中关键语句的结果为:
z=1.5,if条件成立,x=2.4,y=2.4,z=1.0,下一次循环if条件不成立跳出循环,按照格式打印y值为2.400000。
故答案为A选项。
19、有以下程序
{inti;
charc;
%c"
c);
for(i=0;
i<
5;
i++)
{
if(i>
c)continue;
i);
0<
后,则输出结果是
A)5
B)0,0,0,0,0,
C)0,1,2,3,4,
D)0,1,
scanf("
c),输入的字符,题目中输入了0,是字符,对应于
ASCII码为48,因此for循环,i的范围从0~5,均小于48,
if条件不成立,直接执行下一条语句,因此执行printf,因此得到的结果是0,1,2,3,4。
20、以下程序拟实现计算sum=1+1/2+1/3+…+1/50。
doublesum;
sum=1.0;
i=1;
do
{i++;
sum+=1/i;
while(i<
50);
sum=%lf\n"
sum);
程序运行后,不能得到正确结果,出现问题的语句是
A)sum+=1/i;
B)while(i<
50);
C)sum=1.0;
D)i++;
选项A,sum+=1/i;
i为整型,因此1/i是整型类型,当1/i有小数时,会被截断。
因此1/i结果始终为0,导致结果出错。
,应该改为sum+=1.0/i。
因此答案为A选项。
21、若有定义语句:
doublea,*p=&
a;
以下叙述中错误的是
A)定义语句中的*号是一个间址运算符
B)定义语句中的*号是一个说明符
C)定义语句中的p只能存放double类型变量的地址
D)定义语句中*p=&
a把变量a的地址作为初值赋给指针变量p
指针运算符(通常称为间接引用运算符:
indirectionoperator或复引用运算符:
dereferencingoperator),它返回其操作数(即一个指针)所指向的对象的值。
定义语句中的*号不是一个间址运算符,而是定义指针变量的说明符,因此,A项错误,B项正确,原则上说p可以放double兼容性的变量地址,C项正确,根据指针的赋值运算,可知D项正确。
22、关于函数返回值,以下叙述正确的是
A)函数可以返回整个结构体,即使结构体中有数组
B)函数只能返回基本数据类型的数值或指针
C)函数不可以返回一个数组
D)函数不能没有返回值
函数返回值可以整型、实型、字符型、指针和结构类型,也可以没有返回值。
因此选项A正确,可以返回数组指针,因此可知选项B,C,D错误。
23、有以下程序
intfun(int*b,intn)
{inti,r=1;
for(i=0;
=n;
i++)r=r*b[i];
returnr;
{intx,a[]={2,3,4,5,6,7,8,9};
x=fun(a,3);
x);
程序运行后的输出结果是
A)24
B)720
C)120
D)6
fun(),求数组指定返回的元素的积。
fun(a,3),求的是数组a[0]~a[3]的积。
因此结果为2*3*4*5=120,故答案为C选项。
24、若有语句:
inta[3][4],(*p)[4];
p=a;
,则以下选项中叙述错误的是
A)系统将开辟一个名为p的二维数组,p[0][0]中的值即为a[0][0]中的值
B)p+1代表a[1][0]的地址
C)p中将存放a数组的首地址
D)p+2代表a数组最后一行的首地址
(*p)[4]定义了一个数组指针。
p可以指向类似于arry[][4]的数组,题设中,p不是一个二维数组,只是可以指向这类二维数组,因此选项A错误。
p+1代表了第一行第一个元素的地址,p=a指向数组a的首地址,则B、C选项正确,同理可知选项D也正确。
25、有以下程序
voidchange(char*array,intlen)
{for(len--;
len>
=0;
len--)
array[len]+=1;
chararray[5]="
ABCD"
;
change(array,4);
4;
%c,"
array[i]);
A)B,C,D,E,
B)A,B,C,D,
C)C,D,E,F,
D)B,D,F,H,
函数change()的作用将从数组尾部将数组内的元素值加1。
数组的初始值为ABCD,因此经change()后,得到的值为BCDE。
26、
设有以下程序段
floata[8]={1.0,2.0};
intb[1]={0};
charc[]={"
A"
"
B"
};
chard=="
1"
以下叙述正确的是
A)只有变量c的定义是合法的
B)只有变量a,b,c的定义是完全合法的
C)所有变量的定义都是完全合法的
D)只有变量a,b的定义是完全合法的
floata[8]={1.0,2.0};
定义了一个包含8个float型元素的数组,并初始化了数组的前2项,其他项是随机数。
intb[1]={0},定义了只有一个int型元素的数组,并初始化为0。
charc[]={"
定义一个char型数组,大小有初始化元素决定,但初始化值是字符串,类型不兼容,编译出错。
chard="
定义一个char型变量,但是初始化赋值字符串,类型不兼容,编译出错。
因此只有a,b定义和初始化正确。
故答案为D选项。
27、有以下程序
{inta[4],p,x,i;
for(i=3;
i>
0;
i--)a[i-1]=i*2-1;
x);
i=0;
while(a[i]<
x)i++;
p=i;
p;
i--)a[i]=a[i-1];
a[p]=x;
i<
i++)printf("
%3d"
a[i]);
\n"
);
2<
A)1234
B)5431
C)1235
D)3214
第一个for循环初始化数组a,分别为1,3,5,随机数,形成了基本有序的序列,再将输入的数字插入到数组a,使他们形成有序序列。
因此可以分析出,打印的结果为1,2,3,5。
28、有以下程序
intfun(inta[],intn,intx)
{int*p=a;
while(p<
a+n&
&
*p!
=x)p++;
if(p<
a+n)returnp-a;
elsereturn-1;
{inta[10]={1,2,3,4,5,6,7,8,9,10};
fun(a,10,10));
A)9
B)-1
C)10
while(p<
p=a;
n=10,x=10;
while循环条件成立,直到p=a+9,结束循环,执行下一条语句,if条件成立,返回p-a,此时执行p-a=a+9-a=9;
因此,输出9。
故答案为A选项。
29、有以下程序
{charw[20],a[5][10]={"
abcde"
fghij"
klmno"
pqrst"
uvwxy"
inti;
for(i=0;
i++)
w[i]=a[i][i];
w[5]='
\0'
printf("
%s\n"
w);
A)ejoty
B)afkpu
C)agmsy
D)eimqu
数组a是二维数组,数组w存放二维数组a行列值相同位置的元素,由a[5][10]可得w[0]~w[4]的元素分别是agmsy,因此打印结果为agmsy。
30、语句printf("
strlen("
\t\"
\\\n\'
\065\08AB"
));
的输出结果是
A)6
B)7
C)8
D)9
字符串"
中共有13个字符,而strlen()函数从字符串第一个字符开始扫描,直到碰到第一个结束符'
为止,然后返回计数器值(长度不包含"
\0"
)。
故输出结果为6。
31、有以下程序
string.h>
voidfun(char*s,intm1,intm2)
{chart,*p;
p=s+m1;
s=s+m2;
while(s<
p)
{t=*s;
*s=*p;
*p=t;
s++;
p--;
intn=6;
fun(ss,0,n-1);
fun(ss,9,n);
fun(ss,0,9);
ss);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国计算机 二级 选择题 题库