2018年计算机二级考试C语言试题及答案(3)

Python013

2018年计算机二级考试C语言试题及答案(3),第1张

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