计算机二级选择题Word格式.docx
《计算机二级选择题Word格式.docx》由会员分享,可在线阅读,更多相关《计算机二级选择题Word格式.docx(32页珍藏版)》请在冰豆网上搜索。
C)程序流程图
D)E-R图
7、参考答案:
【解析】N-S图提出了用方框图来代替传统的程序流程图,所以
A)不对。
PAD图是问题
分析图,它是继承程序流程图和方框图之后提出的又一种主要用于描述软件详细设计的图形
表示工具,所以B)不对。
E-R图是数据库中的用于表示
E-R模型的图示工具,所以
D)不对。
根据图中所示表示方法是进行软件详细设计时使用的程序流程图。
8.数据库管理系统是()。
A)
操作系统的一部分
B)
在操作系统支持下的系统软件
C)
一种编译系统
D)
一种操作系统
8、参考答案:
【解析】数据库管理系统是数据库的机构,
它是一种系统软件,负责数据库中数据组织、
数据操纵、数据维护、控制及保护和数据服务等。
是一种在操作系统之上的系统软件。
9.在E-R图中,用来表示实体联系的图形是
(
)。
椭圆形
矩形
菱形
三角形
9、参考答案:
【解析】在E-R图中实体集用矩形,属性用椭圆,联系用菱形。
10.有三个关系R、S和T如下:
则关系T是由关系R和S通过某种操作得到,该操作为()。
A)选择
B)投影
C)交
D)并
10、参考答案:
【解析】在关系T中包含了关系R与S中的所有元组,所以进行的是并的运算。
11.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是
()。
A)C语言程序仅可以编译执行
B)C语言程序仅可以解释执行
C)C语言程序既可以编译执行又可以解释执行
D)以上说法都不对
11、参考答案:
【解析】解释程序是将源程序(如BASIC)作为输入,解释一句后就提交计算机执行一句,
并不形成目标程序。
编译程序是把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为
输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机执行这个目标程序,得到计算结果。
12.以下叙述中错误的是()。
A)用户所定义的标识符允许使用关键字
B)用户所定义的标识符应尽量做到"
见名识意"
C)用户所定义的标识符中,大、小写字母代表不同标识
D)用户所定义的标识符必须以字母或下划线开头
12、参考答案:
【解析】C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须
为字母或下划线,排除D);
用户定义标识符中大小写字母之间是有区别的并且应尽量做到"
见名识意"
,排除选项B)和C);
C语言中还规定标识符不能为C语言的关键字,故选项A)叙述错误,正确答案是选项A)。
13.若有说明语句:
charc=72'
;
则变量c()。
A)包含1个字符
B)包含2个字符
C)包含3个字符
D)说明不合法,c的值不确定
13、参考答案:
【解析】C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个"
"
开头
的字符。
其中,ddd"
表示用ASCII码(八进制数)表示一个字符,本题中的charc='
\2'
即表示占一个字符的变量c的ASCII码值。
14.现有定义inta;
doubleb;
floatc;
chark;
,则表达式a/b+c-k值的类型为()。
A)int
B)double
C)float
D)char
14、参考答案:
【解析】双目运算中两边运算量类型转换规律:
15.以下定义语句中正确的是()。
A)inta=b=0;
B)charA=65+1,b=′b′;
C)floata=1,*b=&
a,*c=&
b;
D)doublea=0.0;
b=1.1
15、参考答案:
【解析】本题考查变量的定义方法。
如果要一次进行多个变量的定义,则在它们之间要
用逗号隔开。
因此选项A)和D)错误;
在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b;
所以正确答案为B)。
16.若在定义语句inta,b,c,*p=&
c;
之后,接着执行以下选项中的语句,则能正确
执行的语句是()。
A)scanf("
%d"
,a,b,c);
B)scanf("
%d%d%d"
,a,b,c);
C)scanf("
,&
p);
D)scanf("
,p);
16、参考答案:
【解析】
scanf
函数中的输入项必须是指针,只有选项
)符合这个要求。
D
17.以下程序的运行结果是()。
intk=0;
voidfun(intm)
{m+=k;
k+=m;
printf("
m=%dk=%d"
,m,k++);
}main()
{inti=4;
fun(i
++);
i
=%dk=%d\n"
,i,k);
}
m=4
k=5
i=5
B)m=4
k=4
i=4
17、参考答案:
B
【解析】由于在main()函数中,变量i=4,所以就调用fun(4)
然后变量k增1等于5,变量i增1等于5,所以main()函数的"
printf("
,则输出"
m=4k=4"
。
i=%dk=%dn"
,i,k);
语句输出"
i=5k=5"
18.在执行下述程序时,若从键盘输入6和8,则结果为()。
main()
{inta,b,s;
scanf("
%d%d"
,&
a,&
b);
s=a;
if(a<
b)
s=b;
s*=s;
printf("
,s);
}
A)36
B)64
C)48
D)以上都不对
18、参考答案:
【解析】本题中a的值为6,b的值为8,最后s的值为8,s*=s等价于s=s*s。
19.有以下程序:
{intk=5,n=0;
while(k>
0){switch(k){
default
case1
case2
case3
:
break;
n+=k;
k--;
%d\n"
,n);
程序运行后的输出结果是
A)0
B)4
C)6
D)7
19、参考答案:
【解析】本题考查的是
switch
语句。
在
语句中,表达式的值与某一个
后面的
case
常量表达式的值相等时,
就执行此case后面的语句,若所有的case中的常量表达式的值都没
有与表达式的值匹配的,
就执行default
后面的语句,各个case和default的出现次序不影响
执行结果。
所以在本题中,当
k=5和k=4的时候,case都没有与其匹配的值,所以执行了
default语句;
当k=3时,执行"
case3
n+=k;
"
得n=3,然后执行default
;
当k=2
时,执行"
case2
case3:
得n=5,然后执行default;
当k=1时,执行
case1:
case2:
使得n加两次k,得到n=7。
20.有以下程序:
#include<
stdio.h>
main(){intx
x);
if(x<
=3);
else
if(x!
=10)printf("
,x);
程序运行时,输入的值在哪个范围才会有输出结果()。
A)不等于10的整数
B)大于3且不等10的整数
C)大于3或等于10的整数
D)小于3的整数
20、参考答案:
【解析】ifelse控制结构中,else总是与最近的未配对的if匹配。
本题的执行过程为:
如
果输入整数小于3则不进行任何操作,否则判断是否不等于10,若为真则进行输出。
因此程
序输出的数据为大于3且不等于10的整数。
21.有以下程序:
main(){inta=1,b=0;
%d,"
,b=a+b);
,a=2*b)}
程序运行后的输出结果是()。
A)0,0
B)1,0
C)3,2
D)1,2
22.有以下程序:
main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},
i,j;
for(i=0;
i<
4;
i++){for(j=0;
j<
=i;
j++)printf("
%4c"
,'
'
);
for(j=;
j++)printf("
%4d"
,num[i][j]);
\n"
若要按以下形式输出数组右上半三角
1234
678
1112
16
则在程序下划线处应填入的语句是()。
A)i-1
B)i+1
C)i
D)4-i
22、参考答案:
【解析】此题中嵌套了两个for语句,第一个用来输出空格,第二个用来输出数字。
如此类
型的输出某种格式的考题,一般是采用多重循环来解决,需要考生找出输出数据的特点,并
用相对应的数学公式表达出来。
23.以下程序段中,与语句:
k=a>
b?
(b>
c?
1:
0):
0;
功能相同的是()。
A)if((a>
b)&
&
c))k=1;
elsek=0;
B)if((a>
b)‖(b>
c))k=1;
C)if(a<
=b)k=0;
elseif(b<
=c)k=1;
D)if(a>
b)k=1;
elseif(b>
c)k
=1;
23、参考答案:
【解析】表达式k=a>
(b>
c?
1∶0)∶0表示:
如果(a>
b)条件为真,则k取值(b>
1∶
0),否则
k
取值0;
当>
的情况下,如果
>
,则
值为1,否则为0。
所以该表达式与选项
)
ab
bck
功能相同。
24.有以下程序:
voidss(char*s,chart)
{while(*s)
{if(*s==t)*s=t-a+A;
s++;
}}
{
charstr1[100]
="
abcddfefdbd"
,c=
d;
ss(str1,c);
%s\n"
程序运行后的输出结果是(
,str1)
A)ABCDDEFEDBD
B)abcDDfefDbD
C)abcAAfefAbA
D)Abcddfefdbd
24、参考答案:
【解析】在内存中,字符数据以ASCII码存储,它的存储形式与整数的存储形式类似。
语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相
当于对它们的ASCII码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。
25.现有如下程序段:
#include"
stdio.h"
{intk[30]={12,324,45,6,768,98,21,34,453,456}
intcount=0,i=0;
while(k[i])
if(k[i]%2
==0||k[i]%5
==0)count
++;
i++;
%d
,%d\n"
,count,i)
则程序段的输出结果为()。
A)7,8
B)8,8
C)7,10
D)8,10
25、参考答案:
【解析】在C语言中,定义一维数组的语句一般形式如下:
类型名数组名[常量表达式];
一维数组的引用形式为:
数组名[下标表达式]。
count表示能被2整除或被5整除的个数,
i则计算有多少个数组元素。
26.以下程序运行后的输出结果是()。
#include<
string.h>
voidf(char*s,char*t){chark;
k=*s;
*s=*t;
*t=k;
t--;
if(*s)f(s,t);
main(){charstr[10]
p=str+strlen(str)/2
f(p,p-2);
="
welcome"
+1;
,*p;
,str)
A)eelcomw
B)weoclme
C)welcome
D)emoclew
26、参考答案:
【解析】该程序中
f函数的功能是交换两个位置字符的值,
f函数共调用3次,依次更改
了字符串中
l
和、和、和的值,因此更改后的字符串的值是
。
oe
mwe
emoclew
27.设有如下程序段:
intx=2004,y=2008;
,(x,y));
则以下叙述中正确的是
A)输出值为2004
B)输出值为2008
C)运行时产生出错信息
D)输出语句中格式说明符的个数少于输出项的个数,不能正确输出
27、参考答案:
【解析】(x,y)考查逗号表达式,逗号运算符的结合性为从左到右,因此,最后一个表
达式的值就是此逗号表达式的值,因此选项B)正确。
28.有以下程序:
voidfun(char*c,intd){*c
%c,%c,"
,*c,d);
=*c+1;
d=d+1;
main(){charb
fun(&
b,a);
=a,a=A;
%c,%c\n"
,b,a);
A)b,B,b,A
B)b,B,B,A
C)a,B,B,a
D)a,B,a,B
28、参考答案:
【解析】函数fun的第一个参数传指针,
可以将更改后的值传回调用函数,
第二个参数传值,
不能将更改后的值传回调用函数,故选
29.有以下程序:
main(){chara[10]="
abcd"
%d,%d\n"
,strlen(a)
,sizeof(a))
A)7,4
B)4,10
C)8,8
D)10,10
29、参考答案:
【解析】strlen()用来返回字符串的长度,
而sizeof()返回的是一个对象或者类型所占的内
存字节数,即数组所占的内存。
30.若有定义int
a[2][3];
,则对a数组的第i行第j列(假设i,j已正确说明并赋值
)元素
值的正确引用为(
*(*(a+i)+j)
(a+i)[j]
*(a
+i+j)
+i)+j
30、参考答案:
【解析】本题考查了二维数组元素的引用方法。
选项A)中a+i指向了数组a的第i+1行,
*(a+i)则是第i+1行第0列的地址值,*(a+i)+j指向了数组a第i+1行,j+1列,*(*(a
+i)+j)取到的是数组a的a[i][j]元素。
31.有以下程序:
{charc1,c2,c3,c4,c5,c6;
%c%c%c%c"
,&
c1,&
c2,&
c3,&
c4);
c5=getchar();
c6=getchar();
putchar(c1);
putchar(c2);
%c%c\n"
,c5,c6);
程序运行后,若从键盘输入(从第1列开始)
123<
回车>
45678<
则输出结果是()
A)1267
B)1256
C)1278
D)1245
31、参考答案:
【解析】putchar(c1)输出1,putchar(c2)输出2,printf("
%c%cn"
,c5,c6)输出45。
32.以下程序的运行结果是()。
inta=1;
intf(intc){staticinta
=2;
c=c+1;
return(a++)+c;
main(){inti
,k=0;
2;
i++){inta
=3;
k+=f(a);
k+=a;
,k);
17
15
14
32、参考答案:
【解析】fun函数语句return
(a++)+c;
中访问的a,是其内部定义的静态局部变量,
函数中语句
+=
f
a
)访问的
是其局部变量,所以两次调用实际上都是调用
(3)。
第一
main
次调用时,fun函数中c=4,表达式(a++)+c的值为6,a递增为3,k=6。
第二次调用时,