计算机二级无纸化选择题题库6.docx
《计算机二级无纸化选择题题库6.docx》由会员分享,可在线阅读,更多相关《计算机二级无纸化选择题题库6.docx(18页珍藏版)》请在冰豆网上搜索。
计算机二级无纸化选择题题库6
选择题题库6
1.下列关于栈叙述正确的是( D )。
A)算法就是程序
B)设计算法时只需要考虑数据结构的设计
C)设计算法时只需要考虑结果的可靠性
D)以上三种说法都不对
2.下列叙述中正确的是( B )。
A)有一个以上根结点的数据结构不一定是非线性结构
B)只有一个根结点的数据结构不一定是线性结构
C)循环链表是非线性结构
D)双向链表是非线性结构
3.下列关于二叉树的叙述中,正确的是(B )。
A)叶子结点总是比度为2的结点少一个
B)叶子结点总是比度为2的结点多一个
C)叶子结点数是度为2的结点数的两倍
D)度为2的结点数是度为1的结点数的两倍
4.软件生命周期中的活动不包括( A )。
A)市场调研
B)需求分析
C)软件测试
D)软件维护
5.某系统总体结构图如下图所示:
该系统总体结构图的深度是(C )。
A)7
B)6
C)3
D)2
6.程序调试的任务是( D )。
A)设计测试用例
B)验证程序的正确性
C)发现程序中的错误
D)诊断和改正程序中的错误
7.下列关于数据库设计的叙述中,正确的是( A )。
A)在需求分析阶段建立数据字典
B)在概念设计阶段建立数据字典
C)在逻辑设计阶段建立数据字典
D)在物理设计阶段建立数据字典
8.数据库系统的三级模式不包括( D )。
A)概念模式
B)内模式
C)外模式
D)数据模式
9.有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是( A )。
A)自然连接
B)并
C)交
D)差
10.下列选项中属于面向对象设计方法主要特征的是( A )。
A)继承
B)自顶向下
C)模块化
D)逐步求精
11.以下叙述中正确的是( C )。
A)C语言程序将从源程序中第一个函数开始执行
B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行
C)C语言规定必须用main作为主函数名,程序从此开始执行,在此结束
D)main作为用户标识符,用以命名任意一个函数作为主函数
12.下列是用户自定义标识符的是( A )。
A) w1
B)3 xy
C)int
D)LINE-3
13.执行以下程序时输入1234567,则输出结果是( D )。
#include
main(){inta=1,b;
scanf("%3d%2d",&a,&b);
printf("%d%d\n",a,b);
}
A)12367
B)12346
C)12312
D)12345
14.以下选项中,不能作为合法常量的是( C )。
A)1.234e05
B)1.234e+5
C)1.234e0.5
D)1.234e0
15.有以下程序,其中%u表示按无符号整数输出
main(){unsignedintx=0xFFFF;/*x的初值为十六进制数*/
printf("%u\n",x);
}
程序运行后的输出结果是( B )。
A)-1
B)65535
C)32767
D)0xFFFF
16.当用户要求输入的字符串中含有空格时,应使用的输入函数是( C )。
A)scanf()
B)getchar()
C)gets()
D)getc()
17.若执行下面的程序时,从键盘输入6和2,则输出结果是( C )。
main()
{inta,b,k;
scanf("%d,%d",&a,&b);
k=a;
if(a
elsek=b%a;
printf("%d\n",k);}
A)5
B)3
C)2
D)0
18.有以下程序:
fun(intx)
{intp;
if(x==0||x==1)return(3);
p=x-fun(x-2);
returnp;
}
main()
{ printf("%d\n",fun(7));}
执行后的输出结果是( C )。
A)7
B)3
C)2
D)0
19.已有定义:
charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是( B )。
A)isupper(c)
B)'A'<=c<='Z'
C)'A'<=c&&c<='Z'
D)c<=('z''-32)&&('a'-32)<=c
20.设有定义inta;floatb;,执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876<空格>854.0<回车>,a和b的值分别是(B )。
A)876和543.000000
B)87和6.000000
C)87和543.000000
D)76和543.000000
21.有以下定义:
inta;longb;doublex,y;则以下选项中正确的表达式是( B )。
A)a%(int)(x-y)
B)a=x!
=y;
C)(a*y)%b
D)y=x+y=x
22.运行下面程序时,从键盘输入字母H,则输出结果是( C )。
#include
main()
{ charch;
ch=getchar();
switch(ch)
{caseH:
printf("Hello!
\n");
caseG:
printf("Goodmorning!
\n");
default:
printf("Bye Bye!
\n");
}
}
A)Hello!
B)Hello!
GoodMoring!
C)Hello!
Goodmorning!
Bye Bye!
D)Hello!
Bye Bye!
23.有以下程序:
#include
main()
{
chars[]="012x4y\08s34f4w2";
inti,n=0;
for(i=0;s[i]!
=0;i++)
if(s[i]>='0'&&s[i]<='9')n++;
printf("%d\n",n);
}
程序运行后的输出结果是( C )。
A)0
B)3
C)4
D)7
24.有以下程序:
main()
{
inta=0,b=0,c=0,d=0;
if(a=1)b=1;c=2;
else
d=3;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
程序输出结果是( D )。
A)0,1,2,0
B)0,0,0,3
C)1,1,2,0
D)编译有错
25.定义如下变量和数组:
inti;
intx[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是( C )。
for(i=0;i<3;i++)
printf("%d",x[2-i][i]);
A)951
B)741
C)753
D)963
26.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是(A )。
A)auto和register
B)extern和register
C)auto和static
D)static和register
27.有以下程序:
#include
intfun(inta,intb){
if(b==0)returna;
elsereturn(fun(--a,--b));
}
main(){
printf("%d\n",fun(4,2));
}
程序的运行结果是( B )。
A)1
B)2
C)3
D)4
28.有以下程序:
point(char*p){p+=3;}
main(){chara[4]={'1','2','3','4'},*p=a;
point(p);
printf("%c\n",*p);
}
程序运行后的输出结果是( A )。
A)1
B)2
C)3
D)4
29.阅读下列程序段,程序的输出结果为( B )。
#include"stdio.h"
#defineM(X,Y)(X)*(Y)
#defineN(X,Y)(X)/(Y)
main()
{ inta=5,b=6,c=8,k;
k=N(M(a,b),c);
printf("%d\n",k);}
A)3
B)5
C)6
D)8
30.设有以下函数:
voidfun(intn,char*s){……}
则下面对函数指针的定义和赋值均正确的是( B )。
A)void(*pf)();pf=fun;
B)void*pf();pf=fun;
C)void*pf();*pf=fun;
D)void(*pf)(int,char);pf=&fun;
31.有以下程序:
#include
voidfun(int*s,intn1,intn2){
inti,j,t;
i=n1;j=n2;
while(i}
main(){
inta[10]={1,2,3,4,5,6,7,8,9,0},k;
fun(a,0,3);fun(a,4,9);fun(a,0,9);
for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");
}
程序的运行结果是( )。
A)0987654321
B)4321098765
C)5678901234
D)0987651234
32.下面结构体的定义语句中,错误的是( C )。
A)structord{intx;inty;intz;};structorda;
B)structord{intx;inty;intz;}structorda;
C)structord{intx;inty;intz;}a;
D)struct{intx;inty;intz;}a;
33.有以下程序:
voidf(int*q){inti=0;
for(;i<5;i++)(*q)++;
}
main(){inta[5]={1,2,3,4,5},i;
f(a);
for(i=0;i<5;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是( B )。
A)2,2,3,4,5,
B)6,2,3,4,5,
C)1,2,3,4,5,
D)2,3,4,5,6,
34.有以下程序:
#include
voidfun(char*a,char*b){while(*a=='*')a++;
while(*b=*a){b++;a++;}
}
main(){
char*s="*****a*b****",t[80];
fun(s,t);puts(t);
}
程序的运行结果是( C )。
A)*****a*b
B)a*b
C)a*b****
D)ab
35.有以下程序:
#include
structst
{intx,y;}data[2]={1,10,2,20};
main(){structst*p=data;
printf("%d,",p->y);printf("%d\n",(++p)->x);
}
程序的运行结果是( C )。
A)10,1
B)20,1
C)10,2
D)20,2
36.有以下程序:
intfun(intx[],intn)
{staticintsum=0,i;
for(i=0;ireturnsum;
}
main()
{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);printf("%d\n",s);
}
程序执行后的输出结果是( C )。
A)45
B)50
C)60
D)55
37.有以下程序:
intadd(inta,intb){return(a+b);}
main()
{intk,(*f)(),a=5,b=10;
f=add;
…
}
则以下函数调用语句错误的是( C )。
A)k=(*f)(a,b);
B)k=add(a,b);
C)k=*f(a,b);
D)k=f(a,b);
38.有以下程序段:
structst
{intx;int*y;}*pt;
inta[]={1,2},b[]={3,4};
structstc[2]={10,a,20,b};
pt=c;
以下选项中表达式的值为11的是( B )。
A)*pt->y
B)pt->x
C)++pt->x
D)(pt++)->x
39.有以下程序(strcat函数用以连接两个字符串):
#include
#include
main(){chara[20]="ABCD\0EFG\0",b[]="IJK";
strcat(a,b);printf("%s\n",a);
}
程序运行后的输出结果是(B )。
A)ABCDE\0FG\0IJK
B)ABCDIJK
C)JK
D)EFGIJK
40.有以下程序:
main(){unsignedchara=2,b=4,c=5,d;
d=a|b;d&=c;printf("%d\n",d);
}
程序运行后的输出结果是( B )。
A)3
B)4
C)5
D)6
1、参考答案:
D
【解析】算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以A)错误。
设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。
2、参考答案:
B
【解析】线性结构应满足:
有且只有一个根结点与每个结点最多有一个前件,也最多有一个后件,所以B)正确。
所以有一个以上根结点的数据结构一定是非线性结构,所以A)错误。
循环链表和双向链表都是线性结构的数据结构。
3、参考答案:
B
【解析】根据二叉树的基本性质3:
在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个。
所以选择B)
4、参考答案:
A
【解析】软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。
主要活动阶段是:
可行性研究与计划阶段,需求分析,软件设计,软件实现,软件测试,运行和维护,所以选择A)。
5、参考答案:
C
【解析】根据总体结构图可以看出该树的深度为3,比如:
XY系统---功能2----功能2.1,就是最深的度数的一个表现。
6、参考答案:
D
【解析】程序调试的任务是诊断和改正程序中的错误。
7、参考答案:
A
【解析】数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。
8、参考答案:
D
【解析】数据库系统的三级模式是概念模式、外模式和内模式,所以选择D)。
9、参考答案:
A
【解析】自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T中元组可以判断R和S做的是自然连接操作。
10、参考答案:
A
【解析】面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态性,所以选择A)。
11、参考答案:
C
【解析】一个C语言源程序至少包含一个main函数。
无论main函数在程序中的位置如何,它都是C语言程序的主函数,是程序执行的入口和出口。
12、参考答案:
A
【解析】C语言规定用户标识符由英文字母、数字和下划线组成,且第一个字符必须是字母或下划线,由此可见选项B),D)是错的;此外,C语言不允许用户将关键字作为标识符,而选项C)选项项中的int是C语言的关键字。
13、参考答案:
D
【解析】scanf函数中的格式控制说明为"%3d%2d",分别选中输入中的三位和两位,因此a=123,b=45。
因此正确答案为D)选项。
14、参考答案:
C
【解析】C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项C)中,e(E)后面的指数是小数,所以不合法。
15、参考答案:
B
【解析】本题考查的是整型无符号数的输出。
%u的作用是按无符号的十进制形式输出整型数,整型无符号数的取值范围在0~65535之间,无符号数不能表示成小于0的负数,十六进制数0xFFFF转换为二进制位其值为16个1,代表的整数就是65535。
16、参考答案:
C
【解析】本题综合考查了输入函数的使用。
scanf函数会将空格视为分隔符,getchar函数只能输入单个字符,getc函数是文件操作函数,显然都不符合题意。
通过gets函数输入字符串时,输入的空格被认为是字符串的一个字符。
17、参考答案:
C
【解析】本题考查简单的if…else语句。
先执行条件if(a
18、参考答案:
C
【解析】因为fun(intx)是一个递归函数,所以主函数中fun(7)经过三次递归调用,其过程可以描述为"fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun
(1)))=7-(5-(3-3))=7-5=2",所以最后的输出结果为2。
19、参考答案:
B
【解析】在本题中,选项B)实际是先计算关系表达式"'A'<=c"的值是0还是1,再比较该值与字符Z之间的大小关系,显然不能实现题目所要求的功能,而选项A)、C)、D)都可以。
20、参考答案:
B
【解析】scanf()函数用空格区分不同字符串的输入,因此876和543.0被看作两段输入。
%2d只选取了第一个输入中的前两位,%f选取随后的数字作为浮点数,因此输出结果为87和6.000000。
21、参考答案:
B
【解析】A)选项中如果x与y的值相等那么取余时就会有除数为0的情况。
C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。
D)选项表达式本身就错误,不能给表达式赋值。
所以,本题答案为B)。
22、参考答案:
C
【解析】本题主要对switch语句进行了考查。
switch语句的执行过程为:
进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。
本题中ch为字符H,所以caseH条件中的语句将被执行,由于没有break语句,所以caseG后的语句也被执行,由于同样的缺少break语句,所以default后的语句也被执行了。
23、参考答案:
C
【解析】本题的程序是要统计字符串s中数字的个数,其中前6个字符中有4个满足选择条件,此时n为4,然后遇到字符\0,这个转义字符表示值为0的空字符NULL,此时循环条件不满足,因此循环结束。
24、参考答案:
D
【解析】if中的语句组包含两条语句,但是没有花括号,所以编译有错。
如果这个时候没有else,就理解成语句组只有一条语句,编译将是正确的。
25、参考答案:
C
【解析】考查二维数组元素的引用方法。
题中通过二维数组的行、列下标来定位元素的位置,从而实现元素的引用。
26、参考答案:
A
【解析】本题的考查点是变量的存储类型。
extern、register、static、auto分别是定义自动变量、寄存器变量、静态变量、外部变量,其中,自动变量和寄存器变量属于动态存储,调用时临时分配单元;而静态变量和外部变量属于静态存储,在整个程序运行时间都存在。
27、参考答案:
B
【解析】该题目考查函数参数传递以及if条件语句。
当变量b为0时,将a的值返回给主调函数,因此a进行两次自减1后,将其值返回并输出。
28、参考答案:
A
【解析】在函数point函数调用时,系统自动为函数的形参p分配内存空间,并赋值为实参p的值。
当执行语句p+=3;时,系统操作的是形参p的内存空间,更改形参p的内容,而实参指针变量p的值未受影响,即指针变量作为函数参数时,不能更改实参指针变量的指向。
故在printf("%c\n",*p);语句中,p仍然指向字符数组的首元素。
29、参考答案:
A
【解析】带参数的宏定义命令行形式如下:
#define宏名(形参表)替换文本。
首先进行M的宏替换,之后再进行N的宏替换,替换后的表达式为(a)*(b)/(c)。
30、参考答案:
A
【解析】函数指针的定义形式是:
数据类型标识符(*指针变量名)()。
void(*pf)()定义了一个没有返回值的函数指针pf,在给函数指针变量赋值时,只需给出函数名而不必给出参数。
所以给pf赋值时,只把函数名fun赋给pf即可。
所以正确答案为选项A)。
32、参考答案:
C
【解析】函数fun(int*s,intn1,intn2)的功能是对数组s中的元素进行首尾互相调换。
所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。
所以正确答案为C)。
33、参考答案:
B
【解析】本题考查的是指针作为函数的参数和函数的调用。
题目中定义了一个指针变量作为函数f()的形参。
主函数main()中调用f()函数,当i=0时,执行语句(*q)++,此处*q代表的就是数组元素a[0]的值,即将1进行加1操作;当i=1时,q仍指向数组元素a[0]的地址,因为在函数f()中并未对指针变量q作任何变动,也即*q仍代表了数组元素a[0]的值,所以此次(*q)++即2+1,所以a[0]的值变为3;……直到i=4时,执行(*q)++(即5+1)后a[0]的值变为6。
所以最后的输出结果为:
6,2,3,4,5,。
34、参考答案:
C
【解析】在函数fun(char*a,char*b)中,while(*a==*)a++的功能是:
如果*a的内容为*,则a指针向后移动,直到遇到非*字符为止,退出循环进入下一个while循环,在while(*b=*a){b++;a++;}中,把字符数组a中的字符逐个赋给字符数组b。
所以在主函数中,执行fun(s,t)语句后,字符数组t中的内容为"a*b****"。
所以选项C)为正确答案。
35、参考答案:
C
【解析】数组名的值即为数组首地址,所以p->y可得第一个元素的y值,(++p)->x可得第二个元素的x值。
36、参考答案:
C
【解析】内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。
Fun(a,5)的值是15,再次调用后sum=1