2018年计算机二级考试C语言试题及答案(3)
1[单选题] 以下叙述中正确的是
A.两个字符串可以用关系运算符进行大小比较
B.函数调用strlen(s)会返回字符串S实际占用内存的大小(以字节为单位)
C.C语言本身没有提供对字符串进行整体操作的运算符
D.当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和
参考答案:C
参考解析:本题考查字符串处理函数strien、strcat、strcmp。B选项中strlen返回的是字符串s实际占用内存大小加上结尾符,A选项中不能用关系运算符进行大小比较,可以使用strcmp。D选项当使用连接函数strcat时,内存空间会减少一个字符位置。
2[单选题] 一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是( )。
A.一对一B.一对多C.多对多D.多对一
参考答案:C
参考解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。
3[单选题] 对于while(!E)s,若要执行循环体s,则E的取值应为:
A.E等于1B.E不等于0C.E不等于1D.E等于0
参考答案:D
参考解析:while语句的一般形式为:while(表达式)语句其中表达式是循环条件,语句为循环体。while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。该题中如要执行语句s,则!E应为真,因此E应等于0,D选项正确。
4[单选题] 在软件设计中不使用的工具是( )。
A.系统结构图B.PAD图C.数据流图(DFD图)D.程序流程图
参考答案:C
参考解析:系统结构图是对软件系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。PAD图是在详细设计阶段用到的。程序流程图是对程序流程的图形表示,在详细设计过程中用到。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以选择C。
5[单选题] 若有定义语句:char a='\82'则变量a()
A.说明不合法B.包含1个字符C.包含2个字符D.包含3个字符
参考答案:B
参考解析:char a='\82',定义字符量a,char型变量值为1个字节长度,并从右侧开始运算,所以a的值应为'2'。因此B选项正确。
6[单选题] 若fp已定义为指向某文件的指针,且没有读到该文件的末尾,则C语言函数feof(fp)的函数返回值是
A.EOFB.非0C.-1D.0
参考答案:D
参考解析:本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以选项D正确。
7[单选题] 以下叙述中正确的是
A.只要适当地修改代码,就可以将do-while与while相互转换
B.对于“for(表达式1表达式2表达式3)循环体”首先要计算表达式2的值,以便决定是否开始循环
C.对于“for(表达式1表达式2表达式3)循环体”,只在个别情况下才能转换成while语句
D.如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用while语句
参考答案:A
参考解析:B选项中,for语句中需要先求解先求解表达式1C选项中,for语句使用最为灵活,它完全可以取代while语句D选项中,对于死循环,也可以使用for语句。因此A选项正确。
{ char x=0xFFFFprintf("%d\n",x--)}
A.-32767
B.FFFE
C.1
D.32768
22.下面的函数调用语句中func函数的实参个数是( )。
func((f2v1,v2),(v3,v4,v5),(v6,max(v7,v8)))
A.3
B.4
C.5
D.8
23.语句“printf("akbre"\’hi\’y\\\bou\n")”的输出结果是( )。
A.akbre\’hi\’y ’\\\bou
B.a\bre\’hi\\y\bou
C.re ’hi’you
D.abre’hi’y\bou
24.下面程序输出的是( )。
main()
{ int t=lfun(fun(t))}
fun(int h)
{ static int a[3]={1.2.3}
int k
for(k=0k<3k++)a[k]+=a[k]-h
for(k=0k<3k++)printf("%d",a[k])
printf("\n")
return(a[h])}
A.1,2,3,
1,5,9,
B.1,3,5,
1,3,j,
C.1,3,5,
0,4,8,
D.1,3。5,
-1,3,7,
25.以下叙述中正确的是( )。
A.预处理命令行必须位于C源程序的起始位置
B.在C语言中,预处理命令行都以“#”开头
c.每个C程序必须在开头包含预处理命令行:#include
D.C语言的预处理不能实现宏定义和条件编译的功能
26.为了避免在嵌套的条件语句if else中产生二义性,C语言规定,else子句总是与( )配对。
A.缩排位置相同if
B.其前面最近的if
C.其后面最近的if
D.同一行上的if
27.设有下列程序段:
char str[]="HelloWorld":
char* plr
ptr=str:
执行上面的程序段后,*(ptr+10)的'值为( )。
A.’\0 ’
B.’0’
C.不确定的值
D.’0’的地址
28.有以下程序:
void swap(char*x,char*y)
{ char t
t=*x*x=*y*y=t
}
main()
{ char*s1="abe",*s2="123":
swap(s1,s2)
printf("%s,%s\n",s1,s2)
}
程序执行后的输出结果是( )。
A.123,abe
B.abc.123
C.1bc,a23
D.321,cba
29.下列程序的运行结果是( )。
#include
main()
{ static char a[]="Languagef",b[]="programe":
char*p1,*p2int k
p1=ap2=b
for(k=0k<=8k++)
if(*(p1+k)==*(p2+k))
printf("%c",*(p1+k)):
}
A.gae
B.ang
C.program
D.有语法错
30.下列程序的运行结果为( )。
#define MAX(x,y)(x)>(y)?(x):(y)
main()
{ int a=2,b=3,C=1,d=3,t:
printf("%d\n",(MAX(a+h,c+d))*100):
}
A.500
B.5
C.4
D.400
31.设int x=7,则~x的值是()。
A.-8
B.7
C.-1
D.1
32.有以下程序:
void fun(char*a,char*b)
{a=b(*a)++}
main()
{char c1=’A ’,c2=’a’,*p1,*p2
p1=&c1p2=*c2fun(p1,p2)
printf("%C%c\n",c1,c2)
}
程序运行后的输出结果是()。
A.Ab
B.aa
C.Aa
D.Bb
33.有以下程序:
int fun(int n)
{if(n==l)return l
else return(n+fun(n一1)):
}
main()
{int x
scanf("%d",&x)x=fun(x)printf("%d\n",
x):
}
执行程序时,给变量X输入10,程序的输出结果是()。
A.55
B.54
C.65
D.45
34.有以下程序:
void f(int x,int y)
{int t
if(x}
main()
{int a=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
35.以下程序的输出结果是()。
main()
{char*s="12134211"
int v[4]=(0,0,0,0),k,i
for(k=0s[k]k++)
{switch(s[k])
{case’1’:i=0
case’2’:i=1
case’3’:i=2