全国计算机二级C选择题题库第36套资料Word格式文档下载.docx
《全国计算机二级C选择题题库第36套资料Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C选择题题库第36套资料Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
B)简单插入排序
C)冒泡排序
D)以上说法均不正确
冒泡排序只交换相邻元素,但不是每次移动都产生新的逆序。
简单插入排序的元素移动不会产生新的逆序。
快速排序每一次交换移动都会产生新的逆序,因为当不会有新的逆序产生时,本轮比较结束。
故选择A选项。
6、下面对软件工程描述正确的是
A)软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法
B)软件工程的三要素是方法、工具和进程
C)软件工程是用于软件的定义、开发和维护的方法
D)软件工程是为了解决软件生产率问题
软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。
C选项叙述不全面。
软件工程包含3个要素:
方法、工具和过程。
B选项错误。
软件工程的目标是:
在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品,追求这些目标有助于提高软件产品的质量和开发效率,减少维护的困难。
D选项错误。
软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术及管理方法。
故本题选A选项。
7、耦合性和内聚性是对模块独立性度量的两个标准。
下列叙述中正确的是
A)内聚性是指模块间互相连接的紧密程度
B)提高耦合性降低内聚性有利于提高模块的独立性
C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D)降低耦合性提高内聚性有利于提高模块的独立性
模块的独立程度可以由两个定性标准度量,一个是耦合性,用来衡量不同模块彼此间互相依赖(连接)的紧密程度。
另一个是内聚性,用来衡量一个模块内部各个元素彼此结合的紧密程度。
一般来说,要求模块之间的耦合尽可能弱,即模块尽可能独立,且要求模块的内聚程度尽可能高。
故选D选项。
8、下列关于数据库系统的叙述中正确的是
A)数据库系统中数据的一致性是指数据类型一致
B)数据库系统避免了一切冗余
C)数据库系统减少了数据冗余
D)数据库系统比文件系统能管理更多的数据
C
数据管理技术的发展经历了3个阶段:
人工管理阶段、文件系统阶段和数据库系统阶段。
数据库系统共享性大,冗余度小,但只是减少了冗余,并不是避免一切冗余。
数据的一致性是指在系统中同一数据在不同位置的出现应保持相同的值,而不是数据类型的一致。
数据库系统比文件系统有更强的管理控制能力,而不是管理更多的数据。
故本题选C选项。
9、一名演员可以出演多部电影,则实体演员和电影之间的联系是
A)多对多
B)一对一
C)多对一
D)一对多
实体集之间通过联系来建立联接关系分为三类:
一对一联系(1:
1)、一对多联系(1:
m)、多对多联系(m:
n)。
由于一名演员可以出演多部电影,而一部电影必定有多个演员参演,则实体演员和电影之间的联系属于多对多。
10、
A)表S中所有学生都选修了的课程的课号
B)全部课程的课号
C)成绩不小于80的学生的学号
D)所选人数较多的课程的课号
表示针对属性进行的投影运算,"
/"
表示除运算,可以近似地看作笛卡尔积的逆运算。
表达式表示,首先在关系模式SC中选择属性"
学号"
与"
课号"
,结果如下左图。
其次在这个关系模式中对关系模式S进行除运算,结果如下右图。
则关系式结果表示S中所有学生(S1、S2)都选修了的课程的课号(C1、C2)。
πS#,C#(SC)/S的运算结果
πS#,C#(SC)的运算结果
11、有以下程序
#include<
stdio.h>
main()
{inta=2,b=3,c=4;
a*=16+(b++)-(++c);
printf("
%d\n"
a);
}
程序运行后的输出结果是
A)15
B)30
C)28
D)14
1、后置自增运算:
k++表示先运算,后自加。
2、前置自增运算:
++k表示先自加,后运算。
++单目运算符的优先级高于赋值运算符。
a*=16+(b++)-(++c);
可转化为:
a=a*(16+b-(c+1));
b=b+1;
代入值计算可得值a=28。
答案为C选项。
12、以下叙述正确的是
A)通过分解成简单子任务,可以完成任何复杂任务
B)每个结构化程序都要包含全部三种基本结构
C)C语言程序的所有自定义函数只能写在同一个源文件中
D)C语言程序允许使用多个main函数,只要它们的函数体各不相同即可
算法的三种基本结构:
循环、顺序、条件。
有的简单的程序只包含其中的若干个,因此B选项错误,C语言程序的自定义函数可以放在多个.c文件中,只要包含其引用的头文件即可链接到,因此选项C错误。
C语言程序有且只有一个main函数,因此D选项错误。
故答案为A选项。
13、以下选项中,合法的C语言实数是
A)E4.8
B)4.3e0.2
C).4e0
D)0.29E
C语言"
标准化指数形式"
:
其数值部分是一个小数,小数点前的数字是零,小数点后的第一位数字不是零。
一个实数可以有多种指数表示形式,但只有一种属于标准化指数形式。
在C语言中e后面的指数必须是整数。
因此只有C选项正确。
14、设a,b,c已定义为整型变量,以下选项中不正确的赋值表达式是
A)a=3=(b=2)=1;
B)a=(b=0)*c+1;
C)a=(b=0)*c+1;
D)a=10%(b=c=2.0);
根据()和=运算符的优先级,运算过程为b=2,b=1,之后3=1为非法赋值运算。
,,C语言规定常量只能做为右值,不能做左值,,因此选项A的表达式错误。
15、若变量已正确定义并赋初值,以下合法的赋值语句是
A)k=(m==n);
B)k=-m-n
C)k=int(m+n);
D)k=m*n=1;
m,n的变量类型未知,但题目中已定义和赋值。
选项B的-m-n对于整型与浮点数类型可以这样操作,但若变量为字符类型,则错误。
选项C,编译类型错误,强制转化使用错误。
选项D,m*n是常量,只能用作表达式的右值,不能作为左值。
16、以下关于逻辑运算符两侧运算对象的叙述中正确的是
A)只能是整数0或1
B)只能是整数0或非0整数
C)可以是结构体类型的数据
D)可以是任意合法的表达式
与运算符(&
&
)和或运算符(||)均为双目运算符,具有左结合性。
非运算符(!
)为单目运算符,具有右结合性。
只要是合法的表达式,都可以作为逻辑运算表达的运算表达式。
因此可知选项A,B,C错误。
答案为D选项。
17、以下选项中错误的是
A)printf("
%s\n"
'
s'
);
B)printf("
%d%c\n"
'
C)printf("
%c\n"
-32);
D)printf("
65);
%d可以作为输出字符和整型类型的格式,%c作为输出字符类型的格式,%s作为输出字符串类型的格式,选项A,'s'是字符,不能用%s格式来输出。
18、若有定义:
charch;
当执行以下循环时从键盘输入abcde<
回车>
,将输出*的个数是
while((ch=getchar())=='
e'
)printf("
*"
A)4
B)0
C)5
D)1
while((ch=getchar())=='e'),输入abcde,接收到的第一个字符是a,while循环的条件为0,跳出循环结束。
因此printf没有执行过。
因此,没有打印任何字符出来。
故答案为B选项。
19、有以下程序
{intx=10,y=11,z=12;
if(y<
z)
x=y;
y=z;
z=x;
x=%dy=%dz=%d\n"
x,y,z);
A)x=11y=12z=11
B)x=10y=10z=10
C)x=11y=11z=10
D)x=10y=10z=12
if条件为真,执行x=y;
此时x=11;
y=11;
z=12
再执行y=z;
z=x;
此时y=12;
z=11;
最后x=11;
y=12;
20、对于if(表达式)语句,以下叙述正确的是
A)"
表达式"
不能是变量
B)"
的值只能是整数值
C)"
可以是常量
D)"
中不可以出现字符型变量的比较
C语言没有规定if(表达式)中的"
的形式,可以是任意合法表达式。
故答案为C选项。
21、有以下程序
main()
{charch='
1'
;
while(ch<
'
9'
)
{
%d"
ch-'
0'
ch++;
}
A)12345678
B)01234567
C)0
将字符转为数字,并输出打印的格式为%d,while循环从1-8,因此打印的结果是12345678。
22、以下与表达式(!
x==0)的逻辑值不等价的选项是
A)x==1
B)x
C)x!
=0
D)x>
0||x<
!
与==运算,!
的优先级高于==,即等价于(!
x)==0。
如果x
0,则表达式为真,否则表达式为假,因此可以验证选项,只有选项A不符合。
23、以下叙述正确的是
A)表达式9-'
的值是数值9
B)表达式'
A'
+32的值是字母A的ASCII码
C)表达式'
a'
-32的值是字母a的ASCII码
D)表达式9+'
的值是字符9的ASCII码
表达式9-'0'的值是数值9-48=-39,故选项A错误,
表达式'A'+32的值是字母a的ASCII码,故选项B错误,
表达式'a'-32的值是字母A的ASCII码,故选项C错误。
故答案为D选项。
24、有以下程序
#include<
intfun(intx,inty)
{if(x!
=y)return((x+y)/2);
elsereturn(x);
main()
{inta=4,b=5,c=6;
printf("
%d\n"
fun(2*a,fun(b,c)));
A)3
B)6
C)8
D)12
fun函数的功能是获取二个数的平均数,注意平均数是整型数,小数会被截断。
fun(2*4,fun(5,6))→fun(8,5)→6,因此答案为C选项。
25、有以下程序
intf(intx,inty)
{return((y-x)*x);
{inta=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
d);
A)8
B)10
C)9
D)7
f(a,b)=f(3,4)=(4-3)*3=3;
f(a,c)=f(3,5)=(5-3)*3=6;
f(3,6)=(6-3)*3=9;
因此,d=f(f(a,b),f(a,c))=9,答案为C选项。
26、有以下程序
voidfun(inta[],intn,intflag)
{inti=0,j,t;
for(i=0;
i<
n-1;
i++)
for(j=i+1;
j<
n;
j++)
if(flag)
{if(a[i]<
a[j])
{t=a[i];
a[i]=a[j];
a[j]=t;
else
{if(a[i]>
{intc[10]={7,9,10,8,3,5,1,6,2,4},i;
fun(c,4,1);
fun(c+4,6,0);
i<
10;
i++)printf("
%d,"
c[i]);
\n"
A)7,8,9,10,6,5,4,3,2,1,
B)10,9,8,7,6,5,4,3,2,1,
C)10,9,8,7,1,2,3,4,5,6,
D)1,2,3,4,5,6,7,8,9,10,
fun()函数作用冒泡法排序,flag控制升序(0)或者降序
(1)。
n为参与排序的个数。
a为数组的起始地址。
因此,fun(a,4,1),数组的前四个降序排序,fun(a+4,6,0)从数组的第四项,后六个升序排序。
故结果为10,9,8,7,1,2,3,4,5,6。
27、有以下程序
intm1(intx,inty)
{if(x<
=y)return2*x+1;
elsereturny;
intm2(intx,inty)
=y)return2*y+1;
elsereturnx;
{inti,t1=10,t2=0;
for(i=1;
=4;
{t1=m1(i,t1);
t2=m2(i,t2);
t1=%dt2=%d\n"
t1,t2);
A)t1=9t2=4
B)t1=4t2=9
C)t1=9t2=9
D)t1=1t2=4
函数m1(x,y),若x<
y,返回2*x+1,否则返回y,函数m2(x,y),若x<
=y,返回2*y+1,否则返回x,for循环对t1=m1(i,t1),执行4次,可知答案为9,t2=m2(i,t2),执行4次,可知答案为4,因此答案为A选项。
28、有以下程序
voidf1(char*a,charb){charc;
c=*a;
*a=b;
b=c;
voidf2(chara,charb){charc;
c=a;
a=b;
voidf3(char*a,char*b){charc;
*a=*b;
*b=c;
{chart1,t2;
t1='
t2='
B'
f3(&
t1,&
t2);
putchar(t1);
putchar(t2);
f2(t1,t2);
f1(&
t1,t2);
A)ABBABB
B)BAABBB
C)BABABA
D)BABAAB
f1(*a,b),*a地址传递,b值传递,将b值传给*a,则f1(&
t1,t2)调用后输出t1、t2为BB。
f2(a,b)值传递,传入的只是a,b的拷贝,不实现交换,则f2(t1,t2)调用后输出t1、t2为AB。
f3(*a,*b)为地址传递,可以实现a,b值的交换,则f3(&
t2)调用后输出t1、t2为BA。
因此结果为BAABBB。
29、以下叙述正确的是
A)charc1,*c2,*c3[10];
是合法的变量定义语句
B)数组说明符的一对方括号中不能使用表达式
C)数组元素下标可以是非整数
D)若有定义chararray[4];
则语句printf("
%c"
array["
3"
]);
是合法的
C语言规定定义数组时,数组的长度必须是整型常量,数组说明符的一对方括号中表达式只要是常量即合法,因此选项B错误。
C语言规定,数组元素下标必须是非负整数,因此选项C错误。
选项Dchararray[4]数组的长度为4,array["
],其中"
常量字符串,与C语言规定数组的下标必须是非负整数不符,故答案为A选项。
30、有以下程序
{inta[3][3]={{1,3,5,},
{7,9,11,},
{13,15,17}};
int(*p)[3]=a,i,j,n=0;
for(i=0;
3;
i++)
for(j=0;
j<
2;
j++)
n+=*(*(p+i)+j);
n);
A)54
B)60
C)36
D)48
for循环的作用是求数组各行前二列的数字之和。
*(*(p+i)+j)→p[i][j]
1+3+7+9+13+15=48,因此答案为D选项。
31、设有定义:
charp[]={'
2'
3'
},*q=p;
以下不能计算出一个char型数据所占字节数的表达式是
A)sizeof(*q)
B)sizeof(char)
C)sizeof(p)
D)sizeof(p[0])
变量p,q均是指针,因此sizeof(p)=4,而*p,*q,p[0]的类型都是char,因此长度为1,故A、D选项均正确。
选项B,直接计算char的字节数也正确,故答案为C选项。
32、有以下程序
fun(intx,inty)
{staticintm=0,i=2;
i+=m+1;
m=i+x+y;
returnm;
{intj=1,m=1,k;
k=fun(j,m);
k);
执行后的输出结果是
A)5,11
B)5,5
C)11,11
D)11,5
static静态变量只在声明时初始化一次。
因此m,n只是在第一个调用fun函数时初始化,第二次保持原来的只不变,不在进行初始化。
因此第一次,可计算i=3,m=3+1+1=5,故打印为5,第二次i=4+5,m=9+1+1=11,故打印11。
33、有以下程序
intf(intx[],intn)
{if(n>
1)
returnx[n-1]+f(x,n-1)*10;
returnx[0];
{intz[3]={1,2,3},y;
y=f(z,3);
y);
A)321
B)123
C)1
D)3
f函数的作用是将int型数组构造成一个整型数。
f函数采用递归的方式来实现,位数是递增的。
有题设可知结果为123,因此输出结果为B选项。
34、有以下程序
string.h>
{charss[10]="
12345"