计算机二级C语言考试上机操作题及答案Word格式.docx
《计算机二级C语言考试上机操作题及答案Word格式.docx》由会员分享,可在线阅读,更多相关《计算机二级C语言考试上机操作题及答案Word格式.docx(8页珍藏版)》请在冰豆网上搜索。
B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题
D.不强调模拟现实世界中的算法而强调概念
7.对如下二叉树实行后序遍历的结果为()。
A.ABCDEF
B.DBEAFC
C.ABDECF
D.DEBFCA
8.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()。
A.模块间的关系
B.系统结构部件转换成软件的过程描述
C.软件层次结构
D.软件开发过程
9.两个或两个以上模块之间关联的紧密水准称为()。
A.耦合度
B.内聚度
C.复杂度
D.数据传输特性
10.下列描述错误的是()。
A.继承分为多重继承和单继承
B.对象之间的通信靠传递消息来实现
C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征
D.类是具有共同属性、共同方法的对象的集合
11.数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。
A.DB包含DBS和DBMS
B.DBMS包含DB和DBS
C.DBS包含DB和DBMS
D.没有任何关系
12.下列合法的声明语句是()。
A.int_abc=50;
B.doubleint=3+5e2.5;
C.longdo=1L:
D.float3_asd=3e-3;
13.设x、Y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。
A.x&
&
Y
B.xnext=r->
next;
p--:
>
next=r;
rm:
next=q;
B.q-:
q->
next=r->
r->
C.q-:
p->
D.q-:
26.有下列程序:
main()
{inti,j,x=0;
for(i=0,i=20)&
(i*i1;
i++)f*=i;
D.f=1;
for(i=n;
i>
=2;
i--)f*=i;
38.下述程序执行的输出结果是()。
#include
{chara[2][4];
,
strcpy(a。
"
are"
);
strcpy(a[1],"
you"
a[o][3]=’&
’;
printf("
%s\n"
,a);
)
A.are&
you
B.you
C.are
D.&
39.设x=011050,则x=x&
01252的值是()。
A.0000001000101000
B.1111110100011001
C.0000001011100010
D.1100000000101000
40.在“文件包含,,预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,寻找被包含文件的方式是()。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
C.仅仅搜索源程序所在目录
D.仅仅搜索当前目录
参考答案及专家详解
一、选择题
1.D。
【解析】算法的空间复杂度,是指执行这个算法所需的存储空间。
算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间、算法执行过程中所需要的额外空间。
2.D。
【解析】数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式,一种数据结构能够根据需要采用不同的存储结构,用的存储结构有顺序和链式结构。
用不同的存储结构,其处理的效率是不同的。
3.D。
【解析】所谓的交换排序方法是指借助数据元素之间的互相交实行排序的一种方法,包括冒泡排序和快速排序,冒泡排序通过相邻元素的交换,逐步将线性表变成有序是一种最简单的交换排序方法。
4.C。
【解析】结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用G0T0语句。
其他三项为结构化程序设计的原则。
5.D。
【解析】文件系统所管理的数据文件基本上是分散、相互独立的。
相对于数据库系统,以此为基础的数据处理存有3个缺点:
数据冗余大、数据的不一致性、程序与数据的依赖性强。
6.C。
【解析】面向对象的设计方法的基本原理是:
使用现实世界的概念抽象地思考问题从而自然地解决问题。
它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。
7.D。
【解析】所谓的后序遍历是指,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、右树时,仍然先遍历左子树,然后遍历右子树,最后访问根点。
所以,后序遍历二叉树的过程也是一个递归过程。
8.B。
【解析】软件的过程设计是指系统结构部件转换成软件的过程描述。
9.A。
【解析】模块的独立性是指每个模块保证完成系统要求的独立功能,并且与其他模块的联系少且接口简单。
衡量软件的模块独立性有内聚性和耦合性两个定性度量标准。
耦合性是模块间互相连接紧密水准的度量。
一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提升模块内的内聚性,以利于提升模块的独立性。
10.C。
【解析】对象的封装性是指从外面看只能看到对象的外部特性,而对象的内部,其处理水平的实行和内部状态对外是不可见的,是隐蔽的。
11.C。
【解析】数据库系统由如下5个部分组成:
数据库(DB)、数据库管理系统(DBMS)、数据库管理员(人员)、系统平台之一——硬件平台(硬件)、系统平台之二——软件平台(软件)。
其中DB(DataBase)即数据库,是统一管理的相关数据的集合DBMS即数据库管理系统,是位于用户与操作系统之间的一层数据管理软件,为用户或应用完程序提供访问DB的方法。
由以上可知,选C为准确答案。
12.A。
【解析】标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。
B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。
C选项d0是C语言的一个关键字。
D选项标识符只能以字母或下划线开始。
13.D。
【解析】本题考查逻辑运算符的使用。
当“&
”的两个运算对象都是逻辑l时,表达式返回值才是1;
“‖”的两个运算对象至少有一个是逻辑1时,表达式返回值也是l,x 14.C。
【解析】第l个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;
第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。
本题考查printf函数的格式。
①“%x”和“%o”分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或o);
②printf函数中格式说明符之前插入的任何字符都原样输出;
③格式说明与输出项的个数也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。
15.C。
【解析】函数fun(intx,inty)的功能是返回x+Y的值。
在主函数中,变量a,b,c的初始值分别为1,2,3。
所以逗号表达式“a++,b++,a+b”的值等于5,表达式c++的值为3,调用于函数的表达式为“fun(5,3);
”,其返回值等于8。
16.D。
【解析】在x=2,y=x+3/2中,3/2=1,2+1=3,所以表达式的值为3,因为X,y为double型变量,故选择D选项。
17.A。
【解析】当X为1时,执行casel,a自加等于l,因为casel后没有break,接着执行case2,此时a的值为2,b自加为1,故选择A选项。
18.D。
【解析】本题考查自增运算符“++”、逻辑与运算符“&
”和逻辑或运算符“‖”。
自增运算符“++”出现在变量之前,表示先使用变量的值加1,再使用变量的值实行运算;
出现在变量之后,表示先使用变量的值实行运算,再使用变量的值加l。
当逻辑与运算符“&
”两边的运算对象都为真时,逻辑表达式的值才为真;
当逻辑或运算符“‖”只要一个值为1,值就为l。
根据运算符的优先级,题中应先计算内层括号中的值。
++j是先自加后运算,所以运算时j的值等于3,所以表达式++j=3成立,即表达式的值为l;
1与任何数都为实行或(11)运算,结果都为1,所以k一3的表达式i++是先运算后自加,所以运算时i为1,所以i++=1成立,自加1后i=2。
if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。
19.A。
【解析】本题考查switch语句。
当i=1时,执行casel,因为没有遇到break语句,所以依次往下运行,“a=a+2=2,a=a+3=5”;
当i=2时,执行case2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3=10”;
当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a=a+2=13,a=a+3=16;
当i=4时,执行default,a=a+3=l9,结束循环。
20.C。
【解析】只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择c选巩。
21.A。
【解析】循环的作用是求行下标从l到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][o]+a[2][1]+a[2][2]=3+4+5+6+0一18。
22.A。
【解析】在程序语句中,k的初始值为5,实行第l次while循环后,k自减l为4,非0,执行循环体里的printf语句,输出k,此时k的值变为l。
程序执行第2次循环时,k自减l变为0,为假,退出while循环语句。
所以程序的最后结果为l。
23.A。
【解析】通过地址来引用数组元素的方法有下列5种:
(1)a[i][j];
(2)*(a[i]+j);
(3)*(*(a+j)+j);
(4)*(a[i][j]);
(5)(&
a[o][0]+3*i+j)。
故A准确。
24.C。
【解析】选项A、B的空间不够;
字符串存储要有结束符’\0’,且要占用一个空间,printf用来输出字符,不能输入字符串。
25.D。
【解析】由题目中线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,P指向r结点,r指向q结点即可。
而在选项D中,r->
next=q,这时r指向的节点为q;
next=r,这时P指向的节点为r;
next:
next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不准确。
26.B。
【解析】在第1次外层for循环中,首先x++得到x=1。
进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。
在进入执行第2次外层for循环中,首先x++得到x=5。
进入到内层for循环,只有循环变量J的值为奇数时,变量X的值才自加1,所以在内层for循环执行过程中,变量X的值自加l两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。
27.C。
【解析】子函数funl(doublea)的功能是返回a的平方值的整数部分。
子函数fun2(doubleX,doubley)的功能是返回X的平方值的整数部分与Y的平方值的整数部分的和。
又因为题中变量W的定义为double型,函数fun
(2)的定义为int型,按照各类数值型数据间的混合运算,整型数据被转换为实型数据。
所以双精度型变量w的值为5.0。
28.c。
【解析】在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。
所以,*(t+i)代表数组的第i+1个元素。
所以程序运行的结果是l+3+5+7+9=25,即变量S的值等于25。
29.A。
【解析】本题在函数intfun(intn)的定义中又出现了对函数fun的调用,所以函数fun是递归函数。
因而在主函数中调用x=fun(x)时,当输入10赋给变量X时,递归调用的过程为
fun(10)=l0+fun(9)=10+9+fun(8)=10+9+8+fun(7)
=10+9++8+7+fun(6)=10+9++8+7+6+fun(6)
=10+9++8+7+6+5+fun(4)
=10+9++8+7+6+5+4+fun(3)
=10+9++8+7+6+5+4+3+fun
(2)
=10+9++8+7+6+5+4+3+2+fun
(1)
=10+9++8+7+6+5+4+3+2=55
30.C。
【解析】在函数intfun(intx[],intn)的定义中,变量sum为一个静态局部变量。
因为在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。
函数intfun(intx[],intn)的功能是求出数组x[]各个元素的和,所以在主函数中,调用函数fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum=15+6+7+8+9=45,所以s=15+45=60。
31.D。
【解析】执行第一次for循环时,用表达式p[i][J]!
=’\o’来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。
if语句表示(p[i][j]-’\o’)除2的余数不为0时,即字符串所有奇数,执行后面的语句。
所以退出第1次for的循环体时,输出为397,执行第2次循环体。
对字符串“2584”实行处理,输出结果为5,因而最后输出结果为3975。
32.B。
【解析】从题目中可知,’\O’、’\t’、’\\’分别为一个字符,而sizeof是求字节个数的函数,其中包括’\O’占的字节,strlen函数是求数组长度的函数;
其以’\0’结束,所以strlen的值为5,sizeof的值为20。
33.C。
【解析】数组的下标是从0开始的,A中越界,行下标和列下标都不能越界;
B中,虽然是个地址,但是也同样越界了;
选项c中表示的是第一个的首地址;
选项D表示的为其元素的值,并不是地址。
34.B。
【解析]SEEK_SET代表文件的开始,SEEK_END代表文件末尾,SEEK_CUR代表文件当前位置。
35.C。
【解析】当if执行到第一个满足(i*i>
=20)&
(i*i<
=100)这个条件的i出现时,通过break语句跳出循环,执行下面的prinlf语句。
36.B。
【解析】指针中存放的是变量的地址,指针也能够实行增减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。
所以题中p+6指的是将指针向后移动了6个存储单元,即指向b[6],存放的是b[6]的地址。
37.D。
【解析】由n!
的数字定义可知n!
=n*(n-1)*(n-2)*…*1。
在选项A中,因为f的初值为0,在for循环语句中,f依次乘以l,2,3,…,n,最后计算得到f=n!
=0,所以选项A不准确。
在选项B中,f的初值为l,在for循环语句中,f依次乘以l,2,3,…,(n-1),最后计算得到f=(n-1)!
,所以选项B不准确。
在选项C中,f的初值为l,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项C不准确。
在选项D中,f的初值为l,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!
,所以选项D准确。
38.A。
【解析]strcpy实现的功能是复制,该操作把are复制到a中,aE03E33一’&
’,且strcpy(aEl],"
)把you复制到a[l]中,故输出a为“are&
you”。
39.A。
【解析】本题主要考查按位与运算,x=Oll050的二进制形式为00010010000101000,Ol252的二进制形式为0000001010101010,两者相与得0000001000101000。
40.B。
【解析】#include”文件名”,预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。