计算机二级C64真题含答案与解析交互.docx
《计算机二级C64真题含答案与解析交互.docx》由会员分享,可在线阅读,更多相关《计算机二级C64真题含答案与解析交互.docx(42页珍藏版)》请在冰点文库上搜索。
计算机二级C64真题含答案与解析交互
计算机二级(C)64
(总分100,做题时间90分钟)
选择题(1-10题每题2分,11-50题每题1分,共60分)
1.
有以下程序:
intf(intn)
{if(n==1)return1;
elsereturnf(n-1)+1;
}
main()
{inti,j=0;
for(i=1;i<3;i++)j+=f(i);
printf("%d\n",j);
}
程序运行后的输出结果是()。
A 4
B 3
C 2
D 1
分值:
1
答案:
B
第一次调用f()函数,返回值为1,第二次调用f()函数,牵涉到函数的递归调用,返回值为2。
2.
数据库设计的根本目标是要解决
A 数据共享问题
B 数据安全问题
C 大量数据存储问题
D 简化数据维护
分值:
1
答案:
A
由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。
数据的共享本身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。
因此,数据库设计的根本目标是要解决数据共享问题。
3.
有以下程序:
#defineP3
voidF(intx){return(P*x*x);}
main()
{printf("%d\n",F(3+5));}
程序运行后的输出结果是【】。
A 192
B 29
C 25
D 编译出错
分值:
1
答案:
D
return语句用于从被调函数带回一个函数值。
void关键字表示"无类型",即不需要从被调函数中带回函数值,所以不需要return语句,故编译时出错。
4.
在软件设计中,不属于过程设计工具的是【】。
A PDL(过程设计语言)
B PAD图
C N-S图
D DFD图
分值:
1
答案:
D
软件设计工具包括:
程序流程图、N-S、PAD、H1PO,判定表,PDL(伪码)。
而DFD(数据流图)属于结构化分析工具。
5.
当把以下四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是【】。
A k%2
B k%2=1
C (k%2)!
=0
D !
k%2=1
分值:
1
答案:
D
本题选项A、B、C中表达式用作if语句表达式时,其值一致,即判断k的值是否为奇数,若为奇数,其表达式为真,否则为假;而选项D的表达式"!
k%2=1"相当于"!
(k%2)=1,若k的值为奇数,则此表达式的值为假。
6.
一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()。
A 有零个或多个输入
B 有零个或多个输出
C 有穷性
D 可行性
分值:
1
答案:
B
7.
有以下程序:
main( )
intf1(intx,inty)
{ returnx>y?
x:
y; }
intf2(intx,inty)
{ returnx>y?
y:
x; }
main( )
{ inta=4,b=3,c=5,d,e,f;
d=f1(a,b);d=f1(d,c);
e=f2(a,b);e=f2(e,c);
f=a+b+c-d-e;
printf("%d,%d,%d\n",d,f,e);
}
执行后输出的结果是()。
A 3,4,5
B 5,3,4
C 5,4,3
D 3,5,4
分值:
1
答案:
C
8.
在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是【】。
A 并
B 交
C 投影
D 笛卡儿乘积
分值:
1
答案:
B
在关系运算中,"交"的定义如下:
设R1和R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则R1∩R2为交运算,结果仍为度等于n的关系,其中的元组既属于R1又属于R2。
根据定义可知,不改变关系表的属性个数但能减少元组个数的是交运算,故本题答案为B)。
9.
下列选项中不属于结构化程序设计方法的是【】。
A 自顶向下
B 逐步求精
C 模块化
D 可复用
分值:
1
答案:
D
结构化程序设计方法的主要原则是:
自顶向下,逐步求精,模块化,限制使用goto语句。
可复用性是指软件元素不加修改和稍加修改可在不同的软件开发过程中重复使用的性质。
软件可复用性是软件工程追求的目标之一,是提高软件生产效率的最主要方法。
面向对象的程序设计具有可复用性的优点。
10.
以下不能定义为用户标识符的是()。
A scanf
B Void
C _3com_
D int
分值:
1
答案:
D
11.
数据库技术的根本目标是要解决数据的【】。
A 存储问题
B 共享问题
C 安全问题
D 保护问题
分值:
1
答案:
B
由于数据的集成性使得数据可被多个应用程序所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据库的应用范围,所以数据库技术的根本目标是解决数据的共享问题。
12.
有以下程序,其中%u表示按无符号整数输出main()
{unsignedintX=OXIFFF;/*X的初值为十六进制数*/
printf("%u\n",X);
}
程序运行后的输出结果是【】。
A -1
B 65535
C 32767
D 0XFFFF
分值:
1
答案:
B
"%u"格式符用来以十进制形式输出无符号整型变量,其取值范围是0~65535。
本题中无符号整型变量x=OXFFFF(十六进制)表示的是无符号整型变量的最大值65535。
13.
设有以下语句
typedefstructTT
{charc;inta[4];}CIN;
则下面叙述中正确的是【】。
A 可以用TT定义结构体变量
B IT是struct类型的变量
C 可以用CIN定义结构体变量
D CIN是structIT类型的变量
分值:
1
答案:
C
在C语言中,typedef用于说明一种新的类型名,本题中的CIN被定义为一种新的类型名,我们可以用它来定义一个结构体变量。
14.
能将高级语言编写的源程序转换为目标程序的软件是()。
A 汇编程序
B 编辑程序
C 解释程序
D 编译程序
分值:
1
答案:
D
15.
有以下程序
main( )
{ inti=0,s=0;
do{
if(i%2){i++;continue;}
i++;
s+=i;
}while(i<7);
printf("%d\n",s);
}
执行后输出的结果是()。
A 16
B 12
C 28
D 21
分值:
1
答案:
A
16.
有以下程序:
main( )
{ inta=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a
printf("%d,%d\n",k,m);
}
程序运行后的输出结果是()。
A 0,0
B 0,1
C 1,0
D 1,1
分值:
1
答案:
C
17.
有以下函数定义:
voidfun(intn,doublex) { …… }
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()。
A fun(inty,doublem);
B k=fun(10,12.5);
C fun(x,n);
D voidfun(n,x);
分值:
1
答案:
C
18.
有以下程序
structS{intn;inta[20];};
voidf(structS*p)
{int,i,j,t;
for(i=0;in一1;i++)
for(j=i+1;jn;j++)
if(p->a[i]>p->a[j]){t=p->a[i];p->a[i]=p->a[j];P->a[j]=t;}
}
maln()
{inti;structSs={10,{2,3,l,6,8,7,5,4,10,9}};
f(&s);
for(i=0;i程序运行后的输出结果是【】。
A 1,2,3,4,5,6,7,8,9,10,
B 10,9,8,7,6,5,4,3,2,1,
C 2,3,1,6,8,7,5,4,10,9,
D 10,9,8,7,6,1,2,3,4,5,
分值:
1
答案:
A
本题中,在调用函数f()时,实参是结构体变量s的地址,所以在函数中对形参的改变会影响到实参的数值。
函数f()实现的功能是把结构体的成员数组中的值按从小到大顺序进行排列。
19.
以下关于函数的叙述中正确的是【】。
A 每个函数都可以被其他函数调用(包括main函数)
B 每个函数都可以被单独编译
C 每个函数都可以单独运行
D 在一个函数内部可以定义另一个函数
分值:
1
答案:
B
C语言中函数是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义;函数可以分别编写、分别编译,提高调度效率,但函数不能单独运行:
函数间可以互相调用,但不能调用main函数。
20.
有以下程序
voidf(intx,inty)
{ intt;
if(x<y){t=x;x=y;y=t;}
}
main( )
{ inta=4,b=3,c=5;
f(a,b);f(a,c);f(b,c);
printf("%d,%d,%d\n",a,b,c);
}
执行后输出的结果是()。
A 3,4,5
B 5,3,4
C 5,4,3
D 4,3,5
分值:
1
答案:
D
21.
以下叙述中错误的是【】。
A C语言是一种结构化程序设计语言
B 结构化程序由顺序、分支、循环三种基本结构组成
C 使用三种基本结构构成的程序只能解决简单问题
D 结构化程序设计提倡模块化的设计方法
分值:
1
答案:
C
结构化程序设计是指在程序的构成上只使用顺序、选择(即分支)和循环3种结构组成的编程方式。
它强调程序设计风格和程序结构的规范化,提倡清晰的结构。
结构化程序设计方法的基本思路,是把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。
结构化程序设计提倡模块化的设计方法。
22.
有以下程序
main()
{inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;
for(i=0;i<3;i++)
for(k=i+1;k<4;k++)if(a[i][i]for(i=0;i<4;i++)printf("%d,",a[0][i]);
}
程序运行后的输出结果是【】。
A 6,2,1,1,
B 6,4,3,2,
C 1,1,2,6,
D 2,3,4,6,
分值:
1
答案:
B
本题使用选择法对二维数组对角线上的元素按从大到小的顺序进行排列。
最后输出数组第一行的数据。
故本题答案为B)。
23.
有以下程序
main()
intc=35;printf("%d\n",c&c);}
程序运行后的输出结果是【】。
A 0
B 70
C 35
D 1
分值:
1
答案:
C
按位"与"时,1&1:
1,其他都等0。
因为本题中相与的两个值相等,即对应位上的二进制值相等,所以"与"的结果也即为其值本身。
24.
有以下程序:
main( )
{ inta=15,b=21,m=0;
switch(a%3)
{case0:
m++;break;
casel:
m++;
switch(b%2)
{default:
m++;
case0:
m++;break;
}
}
printf("%d\n",m);
}
程序运行后的输出结果是()。
A 1
B 2
C 3
D 4
分值:
1
答案:
A
25.
有以下程序
main()
{char*P[]={"3697","2584"};
inti,j;longnum=0;
for(i-0;i<2;i++)
{j=0;
while(P[i][j]!
=’\0’)
{if((P[i][j]-''0'')%2)num=10*num+P[i][j]-''0'';
j+=2;
}
}
printf("%d\n",num);
}
程序执行后的输出结果是【】。
A 35
B 37
C 39
D 3975
分值:
1
答案:
C
while(p[i][j]!
=’\0’)表示p[i][j]不等于’\0’时,继续执行while中的语句。
if语句表示(p[i][j]-’\0’)除2的余数不为0时,执行后面的语句。
最后执行的结果是39。
26.
以下叙述中错误的是【】。
A C语言中对二进制文件的访问速度比文本文件快
B C语言中,随机文件以二进制代码形式存储数据
C 语句FILEfp:
定义了一个名为fp的文件指针
D C语言中的文本文件以ASCII码形式存储数据
分值:
1
答案:
C
FILE是由系统定义的一个结构体类型,并用该类型来定义若干个FILE类型的变量,以便存放若干个文件。
所以用FILE定义的变量必须是数组或指针,所以选项C中的"FILEfp;"改为"FILE*fp;"就对了。
27.
下列条件语句中,功能与其他语句不同的是()。
A if(a)printf("%d\n",x);elseprintf("%d\n",y);
B if(a==0)printf("%d\n",y);elseprintf("%d\n",x);
C if(a!
=0)printf("%d\n",x);elseprintf("%d\n",y);
D if(a==0)printf("%d\n",x);elseprintf("%d\n",y);
分值:
1
答案:
D
28.
在多媒体计算机系统中,不能用以存储多媒体信息的是()。
A 光缆
B 软盘
C 硬盘
D 光盘
分值:
1
答案:
A
光缆是传输多媒体信息的通道,不能用以存储多媒体信息。
29.
下列关于栈的描述中错误的是【】。
A 栈是先进后出的线性表
B 栈只能顺序存储
C 栈具有记忆作用
D 对栈的插入与删除操作中,不需要改变栈底指针
分值:
1
答案:
D
栈是一种特殊的线性表,又称先进后出表(FirstInLastOut,FILO)。
30.
有以下程序,其中函数f的功能是将多个字符串按字典顺序排序:
#include<string.h>
voidf(char*p[],intn)
{char*t;inti,j;
for(i=O;i<n-1;i++)
for(j=i+1;j<n;j++)
ifstrcmp(p[i],p[j])>0{t=p[i]p[i]=p[j];p[j]=t;}
}
main()
{char*p[5]=("abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[1]));
}
程序运行后的输出结果是【】。
A 2
B 3
C 6
D 4
分值:
1
答案:
D
字符串比较函数"strcmp(char*s1,char*s2)"的比较规则是对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到到"\0"为止。
如果全部相同,则认为相等:
若出现不相同的字符,则以第一个不相同的字符的比较结果为准。
当s1<s2,返回值<0;当s1=s2时,返回值二0:
当s1>s2时,返回值>0。
故本题经过排序后,得到第二个字符串是"abbd",所以输出结果是4。
31.
有以下程序:
main( )
{inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
程序运行后的输出结果是()。
A 3
B 6
C 9
D 2
分值:
1
答案:
B
32.
在Windows环境下,若资源管理器左窗口中的某文件夹左边标有“+”标记,则表示()。
A 该文件夹为空
B 该文件夹中含有子文件夹
C 该文件夹中只包含有可执行文件
D 该文件夹中包含系统文件
分值:
1
答案:
B
33.
设有定义inta=2,b=3,c=4;,则以下选项中值为0的表达式是【】。
A (!
a==1&&(!
b==0)
B (a<b)&&!
c||1
C a&&b
D a||(b+b)&&(c-a)
分值:
1
答案:
A
逻辑运算符的优先级由高到低运算次序如下:
!
(非)→&&(与)→||(或),选项A的表达式中,先对左边括号中"!
a"进行运算,值为0,由于"0==1"的值为0,故整个表达式的值为0,本题答案为A。
34.
有以下程序
main( )
{ chark;intI;
for(i=1;i<3;i++)
{ scanf(“%c”,&k);
switch(k)
{ case‘0’:
printf(“another\n”);
case ‘1’:
printf(“number\n”); } } }
程序运行时,从键盘输入:
01<回车>,程序执行后的输出结果是()。
A another
number
B another
number
another
C another
number
number
D number
number
分值:
1
答案:
A
35.
在Windows环境下,若要将当前活动窗口存入剪贴板,则可以按()。
A Ctrl+PrintScreen键
B Alt+PrintScreen键
C Shift+PrintScreen键
D PrintScreen键
分值:
1
答案:
B
在Windows环境下,按PrintScreen键可将整个屏幕存入剪贴板,当它与Alt键结合使用时,可将当前窗口存入剪贴板。
36.
Internet的通信协议是()。
A TCP/IP
B BBS
C WWW
D FTP
分值:
1
答案:
A
37.
在Windows环境下,粘贴按钮是()。
A
B
C
D
分值:
1
答案:
D
选项A)是打印,选项B)是剪切,选项C)是复制。
38.
有定义语句:
intx,y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是()。
A 1112<回车>
B 11,12<回车>
C 11,12<回车>
D 11,<回车>12<回车>
分值:
1
答案:
A
39.
有以下程序
main()
{charS[]="abcde";
S+=2;
printf("%d\n",s[0]);
}
执行后的结果是【】。
A 输出字符a的ASCII码
B 输出字符c的ASCII码
C 输出字符c
D 程序出错
分值:
1
答案:
D
本题的错误之处在于下标越界。
因为s是一个只有一个数组元素("abcde")的字符串数组,因此不能将指针在当前位置的基础上再向后移动两位。
40.
以下叙述正确的是()。
A C语言比其他语言高级
B C语言可以不用编译就能被计算机识别执行
C C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D C语言出现的最晚、具有其他语言的一切优点
分值:
1
答案:
C
41.
设变量均已正确定义,若要通过scanf("%d%c%d%c",&al,&cl,&a2,&c2);语句为变量al和a2赋数值10和20,为变量c1和c2赋字符X和Y。
以下所示的输入形式中正确的是【】。
(注:
口代表空格字符)
A 10口X20口Y<回车>
B 10口X20口Y<回车>
C l0口X<回车>20口Y<回车>
D 10X<回车>20Y<回车>
分值:
1
答案:
D
本题中,scanf函数的格式控制没有空格,所以,对于选项A)、B)、C),输入的第一个空格会作为字符赋值给变量c1,而不会被解释成分隔符。
42.
有以下程序
#include <stdio.h>
main( )
{ printf("%d\n",NULL);}
程序运行后的输出结果是()。
A 0
B 1
C -1
D NULL没定义,出错
分值:
1
答案:
A
43.
下列关于栈的描述正确的是【】。
A 在栈中能插入元素而不能删除元素
B 在栈中只能删除元素而不能插入元素
C 栈是特殊的线性表,只能在一端插入或删除元素
D 栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素
分值:
1
答案:
C
栈实际上也是线性表,只不过是一种特殊的线性表。
在这种特殊的线性表中,其插入和删除只在线性表的一端进行。
44.
有以下结构体说明和变量定义,如图所示:
structnode
{intdata;structnode*next;}*p,*q,*r,
现妥将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是【】。
A P->next=q->next;
B p->next