沈阳师范大学计算机C语言期末冲刺卷(含六卷)_第1页
沈阳师范大学计算机C语言期末冲刺卷(含六卷)_第2页
沈阳师范大学计算机C语言期末冲刺卷(含六卷)_第3页
沈阳师范大学计算机C语言期末冲刺卷(含六卷)_第4页
沈阳师范大学计算机C语言期末冲刺卷(含六卷)_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机C语言期末冲刺卷(一)

一、单项选择题(每小题2分,共100分)

1、将用高级程序语言编写的源程序翻译成目标程序的程序称______O

A、连接程序

B、编辑程序

C、编译程序

D、诊断维护程序

【答案】C

【解析】将用高级程序语言编写的源程序翻译成目标程序的程序称编译程序。

连接程序是一个将儿个目标模块和库过程连接起来形成单一程序的应用。诊断

程序是检测机器系统资源、定位故障范围的有用工具。

2、计算表达式*执行下面的程序段,变量b的值将变为。doublea

=3,b;b=1/2+a;

A、0.0

B、0.2

C、3.0

D、3.5

【答案】C

3、执行以下程序段后,w的值为o

intw='a',x=14,y=15:w=((xHy)&&(wV'a'));

A、-1

B、NULL

C、1

D、0

【答案】C

【解析】字符变量w的初值为字符'A',其ASCH码值为65,字符'a'的ASCII

码值为97,所以关系表达式wV'a'的值为1;变量x=14,变量y=15,x|y为

或,x、y均为真,所以x||y的结果1。因而逻辑表达式(x|y)&&(\vV'a')的值

为1。

4、下列程序是死循环的是o

A、for(;;)

B、ints=36;

while(s)=s;

C、intm=10;

dom-;while(m>0l;

D、intn二5;

while(n>1)

n——;

if(n<0)break;

【答案】A

5、以下叙述中正确的是。

A、在C语言中,营量名也要遵守标识符的命名规则

B、对单目运算符兴说,运算对象一定在其右侧

C、标识符的首字符必须是下划线、字母,其他字符可以是任意的键盘可键入

字符

D、变量占用内存,常量不占用内存

【答案】A

【解析】C语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效

字符序列统称为标识符,常量名也要遵守标识命名规则,选项A正确;单目运算

符的运算对象可以在其左侧或者右侧,如i"或+-i,选项B错误;C语言规定标

识符只能由字母、数字、下划线组成,选项C错误;•般来说,基本类型(整型、

字符型等)常量会在编译阶段被编译成立即数,占的是代码段的内存,而字符串常

量或基本类型的常量数组占用的是数据段内存。当然,占代码段的内存一般不在

我们常说的“占内存”范围中,选项D错误;本题答案为A。

6、在C语言中,能代表逻辑值“真”的是()。

A、TRUE

B、大于0的数

C、非0整数

D、非0的数

【答案】D

7、下列定义数组的语匀也正确的是。

A、intN=10;

B、#defineN10

intx[N];intx[N];

C、intxfO..10];

D、intx口;

【答案】B

8、可以作为自定义标-只符的是o

A、2x

B、while

C、s&l

D、_2x

【答案】D

9、字符串指针变量中存入的是o

A、字符串

B、字符串的首地址

C、第一个字符

D、字符串变量

【答案】B

10、以下选项中,与kf++完全等价的表达式是一一—O

A、k=n,n=n+l

B、n=n+1,k=n

C>k=++n

D、k+=n+l

【答案】A

【解析】k二n++的意思是先将n的值赋给k,然后n的值再加1,选项A)符合题

意;选项B)和C)是先使n的值加1,然后再赋值给k;选项D)等价于

k=k+(n+l)o

11、c程序的执行过程在下列说法中,是正确的。

A、C程序从第一人函数开始执行,直到最后一个函数结束

B、C程序从第一人函数开始执行,直到主函数结束

C、C程序从主函数开始执行,直到最后一个函数结束

D、C程序从主函数开始执行,直到主函数结束

【答案】D

12、c语言中运算对象必须是整型的运算符是o

A、%=

B、/

C、=

D、〈二

【答案】A

13、以下叙述中正确的是。

A、两个字符串可以用关系运算符进行大小比较

B、函数调用strlen(s)会返回字符串s实际占用内存的大小(以字节为单

位)

C、C语言本身没有提供对字符串进行整体操作的运算符

D、当拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的

【答案】C

【解析】本题考查字符串处理函数strlen>strcatstrcmp.b选项中strlen

返回的是字符串s实际占用内存大小加上结尾符A选项中不能用关系运算符

进行大小比较,可以使用strcmpD选项当使用strcat连接函数时,内存空间

会减少一个字符位置。

14、卜♦列定义数组的语句中正确的是()。

A、#definesize10charstrl[size],str2[size+2];

B>charstr[];

C、intnum[’10'];

D、intn=5;inta[n][n+2];

【答案】A

15、有以下程序

^include<stdio.h>

intf(intx,inty)

(

return((y-x)*x):

)

main()

inta=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

printfd);

程序运行后的输出结果是。

A、10

B、9

C、8

D、7

【答案】B

16、有以下程序:

main()

{

inti,n=0:for(:=2;iV5;i++)

(

do

(

if(i%3;continue:n++;

)

whilc(!i);

nil;

)

printf(,,n=%d\n,,,n);

)

程序执行后输出结果是o

A、n=5

B、n—2

C、n=3

D^n=4

【答案】D

17、设pl和p2是指向同一个ini型一维数组的指针变量,k为ini型变量,则

不能正确执行的语句是o

A、k=*pl+*p2

B、p2—k;

C、pl=p2;

D、k=*pl*(*p2);

【答案】B

18、在执行以卜程序时,为了使输出结果为:t=4,则给a和b输入的值应满足的

条件是

main()

(

ints,t,a,b;

scanf(〃%d,%d〃,&a,&b);

s=l;t=l;

if(a>0)s=s+l;

if(a>b)t=s+t;

elseif(a-b)1=5:

elset=2*s;

printf(〃t=%d\n〃,t;;

)

A、a>b

B、a<b<0

C、0<a<b

D、0>a>b

【答案】C

19,若在某函数内部有定义:inta[3][4];则数组a中各元素。

A、可在程序的运行阶段得到初值0

B、可在程序的编译阶段得到初值0

C、不能得到确定的初值

D、可在程序的编译或运行阶段得到初值0

【答案】C

【解析】在函数内部定义的存储类型为auto的变量或数组,如果没有进行初始

化,就不能得到确定值。

20、定义共用体的关键字是o

A、union

cnum

C、struct

D、typedef

【答案】A

21>以下运算符中,优先级最高的运算符是一o

A、?:

B、++

C、&&

D、,

【答案】B

22、当a=l,b=3,c=5,d=5时,执行下面一段程序后,x的值为

if(a<b)

if(c<d)x=l;

else

if(a<c)

if(b<d)x=2;

elsex=3;

elsex=6;

elsex=7;

A、1

B、2

C、3

D、6

【答案】B

23、语句int*p;说明了。

A、p是指向一维数组的指针

B、p是指向函数的指针,该函数返回一int型数据

C、p是指向int型数据的指针

D、p是函数名,该函数返回•指向int型数据的指针

【答案】B

24、在下列选项中,没有构成死循环的程序是。

A^inti=100;

whi1e(i){

i=i%100+l;

if(i>100)break;

)

B、for(;;);

C、intk=1000;

do

++k;

while(k>=1000);

D、ints=36;

while(s);

s;

【答案】C

25、若有以下定义:inta□二(1,2,3,4,5,6,7);charcl='b',c2='2';则数

值不为2的表达式是。

A、a[l]

B、'd'-cl

C、3,~c2]

D、c2-0

【答案】D

【解析】本题考杳数组的定义、初始化及其引用,以及对字符ASCII码值的熟

悉程度。解本题的关键在于熟悉字符的ASCII码值。字符在进行数学运算时取

其ASCII码值,其中‘b',的ASCII码值为98,'d'的ASCII码值为100,字符

'2'的ASCH码值为50。根据以上知识,可知D)选项中表达式c2-0的值为

50o

26、以下运算符中,优先级最高的运算符是()。

A、=

B、!=

C、*(乘号)

D、()

【答案】D

27、若有定义:inta[3][4];不能表示数组元素o

A、*(a[l]+l)

B、*(&a[l][l])

C、(*(a+l)[l])

D、*(a+5)

【答案】D

28、以下关于运算符优先顺序的描述中正确的是。

A、关系运算符〈算术运算符〈赋值运算符V逻辑与运算符

B、逻辑与运算符〈关系运算符〈算术运算符〈赋值运算符

C、赋值运算符V逻辑与运算符〈关系运算符〈算术运算符

D、算术运算符〈关系运算符〈赋值运算符V逻辑与运算符

【答案】C

29、下面正确的字符串常量是o

A、'a'

B、'376'

C、〃\n〃

D、376

【答案】c

30、c语言中,系统的标准输入文件是指

A键

B显

c软

D盘

【答案】A

【解析】此题考查有美标准设备的知识。在多数C语言版本中,stdio.h文件

至少定义了4种标准设备文件,可以直接引用不必含有打开操作,包括:

标准输入文件指针stdin缺省为键盘;

标准输出文件指针stdout缺省为显示器;

标准错误输出文件指针stderr缺省为显示器;

标准打印输出文件指针sldprn指打印机;

此外,还可能包括如辅助设备等标准文件指针,且多数文件指针可以被重新

定向到其他设备。

31、c语言规定,函数返回值的类型是由()决定的。

A^return语句中的表iA式类型

B、调用该函数时的主调函数类型

C、在定义函数时所指定的函数类型

D、调用该函数时日系统临时

【答案】C

32、关于for(表达式,表达式2;表达式3),叙述正确的是_。

A、表达式1不可以缺省

B、表达式2不可以缺省

C、表达式3不可以缺省

D、三个表达式都可以缺省

【答案】D

33、若需要利用形参直接访问实参,则应把形参变量说明为()参数。

A、指针

B、引用

C、传值

D、常值

【答案】B

【解析】在进行参数传递时,引用参数是利用形参直接访问实参,形参的变化

直接影响实参的变化,而传值参数不会影响实参变量。

34、在下列程序段中,枚举变量cl,c2的值依次是________o

cnumcolor

(

red,

yellow,

blue=4,

green,

white

)

cl,c2;

cl二yellow;

c2=white;

printf(,z%d,%d\n〃,cl,c2);

A、1,6

B、2,5

C、1,4

D、2,6

【答案】A

35、以下程序的运行结果是o

voidsub(intx,inty,int*z)

(

*z=y-x;

}

main()

(

inta,b,c;

sub(10,5,&a);

sub(7,a,&b);

sub(a,b,&c);

printf(〃%4d,%4d,%4d〃,a,b,c);

}

A、5,2,3

B、-5,-12,-7

C、-5,-12,-17

D、5,-2,-7

【答案】A

36、对于while、do…while循环结构,正确的说法是。

A、只是表达形式大同

B、do…while结构中的语句至少执行,次

C、while结构中的语句至少执行一次

D、条件成立时,它们有可能一次也不执行

【答案】B

【解析】注意区别while、do…while两种循环结构的异同:while循环是先判

断条件是否成立,成立时才执行;而do…while先执行再判断,它至少执行♦一

次。

37、下面程序的输出结果是o

main()

(

inta[3][4]={l,3,5,7,9,11,13,15,17,19,21,23};

int(*p)[4]=a,i,j,k=0;

for(i=0;i<3;i+-)for(j=0;j<2;j++)k=p[i][j];

printf(〃%d\n〃,k);

)

A、17

B、18

C、19

D、23

【答案】C

【解析】p是指向长度为4的一维数组的指针变量,可看作是二维数组a的行

指针,可以像使用数组名•样通过p带数组下标的形式来引用数组中元素,变

量k最后是元素的值。

38、以下程序的输出结果是一。

#defineSQR(X)X*X

main(){

inta=16,k=2,m=l;

a/=SQR(k+m)/SQR(k+m);

printf(〃%d\n〃,a);

)

A、16

B、2

C、9

D、1

【答案】B

39、以下叙述中正确的是o

A、数组下标的下限是1

B、数组卜.标的下限由数组中第一个非零元素的位置决定

C、数组下标的下限由数组中第一个被赋值元素的位置决定

D、charcl,c2,*c3,c4[40]是合法的变量定义语句

【答案】D

【解析】数组下标的下限是Oo因此D选项正确。

40、有以下程序

#include<studio.h>

#include<string.h>

structa

inta;

charb[10];

doublec;

};

voidf(structat);

main()

(

structaa={1001,"zhangda",1098.0};

f(a);

pringt("%d,%s,%6.lf\n",a.a,a.b,a.c);

)

voidf(structat)

(

t.a=1002;

strcpy(t.b,"changrong");

t.c=1202.0;

)

程序运行后的输出结果是_____。

A^1001,ZhangDa,1098.0

B>1002,ChangRong,1202.0

C、1001,ChangRong,1098.0

D、1002,ZhangDa,1202.0

【答案】A

41、以下条件表达式中能完全等价于条件表达式x的是.

A、(X—0)

B、(x!=0)

C、(x=l)

D、(x!=l)

【答案】B

42、若变量a,b,I已正确定义,要将a和b中的数进行交换,以下选项中不正

确的语句是o

A、a=a+b;b=a-b;a=a-b;

B、t=a;a=b;b二t;

C、a=t;t=b;b二a;

D^t=b;b=a;a=t;

【答案】C

43>设a、b、c、d、n均为int型变量,且"5、b=6、c二7、d=8、m=2、n=3

则逻辑表达式(m=a>b;&&(n;c>d)运算后,n的值为。

A、0

B、1

C、2

D、3

【答案】D

44、以下程序的输出结果是_______o

main()

int1=0,s=0;

for(;;)

(

if(i==6)break;

i++;

s+=i;

)

printf("%d\n”,sj;

)

A、10

B、15

C、21

D、死循环

【答案】C

45、一个c语言程序是由—构成。

A语句

B行

c数

D函

【答案】D

46、该语句打印结果为(每个d后都有空格)p格〃,printf(〃机1

printf(,z%d”,43))):

A、4321

B、434343

C、4332

D、4321

【答案】C

47、以F不正确的定义语句是_____o

A、doublex[5]=l.0,2.0,3.0,4.0,5.0;

B>inty[5]=0,1,2,3,4,5;

C、charclO'l','2','3','4','5';

D、charc2口二'a','b','c';

【答案】B

【解析】本题考查对一维数组的赋值。选项B)中,y[5]说明数组中有5个元

素,但却给它赋了6个值,数组溢出所以是错误的。

48、已知inta,b;月语句scanf("%d%cT,&a,&b);输入a,b的值时,小能作

为输入数据分隔符的是。

A、,

B、.空格

C、回车

D、Tab键

【答案】A

【解析】C语言规定在使用scanf输入时可以用作数据分隔符的有空格,回车

和Tab键。用户如果要从键盘输入空格字符,则需要使用其他的输入方式。

49、若有定义:charstrl[10]="aaaaaaa";

charstr2[10]二〃bbbbb〃;

将字符串str2连接到strl,则下列描述中正确的是。

A、strcat(strl,str2)可以将字符串str2连接到strl中

B、strncat(strl,str2,strlen(str2))可以将字符串str2连接到strl中

strncat(strl,str2,2)可以将字符串str2的前两个字符连接到strl中

D、strncat(strl,str2,4)可以将字符串str2的前四个字符连接到strl中

【答案】C

【解析】连接字符串要考虑内存溢出问题

50、以下叙述中错误的是o

A、C语言中对二进制文件的访问速度比文本文件快

B、C语言中,随机文件以二进制代码形式存储数据

C、语句FILE*fp;定义了一个名为fp的文件指针

D、C语言中的文本文件以ASCII码形式存储数据

【答案】B

计算机C语言期末冲刺卷(二)

一、单项选择题(每小题2分,共100分)

1、设在c语言中,float类型数据占4个字节,则double类型数据占()个字

节。

A、1

B、2

C,8

D、4

【答案】c

2、以不选项中可作为c语言合法整数的是_______。

A、10110B

B、0386

C、OXffa

D、x2a2

【答案】C

3、以下if语句书写正确的是o

A、if(x=0;)

printf(〃%f〃,x);

elseprintf(/z%f,z»-x);

B、if(x>0)

x=x+l;x);

elseprintf("%f〃,-x);

C、if(x>0);

x=x+l;printf(〃猊、〃,x);

elseprintf-x);

D、if(x>0)

x=x+l;printfx)

elseprintf-x);

【答案】B

4、有以下程序:

#include<stdio.h>

main(){

intc;

while((c=getcharC)!="\n')

switch(c-,3'){

case0:case1:putchar(c+4);

case2:putchar(c+4);

break;

case3:putchar(c+3);

case4:putchar(c+3);

break;

}

printf(〃\rT);

}

从第•列开始输入数据(Vcr>代表•个回车符):3845Vcr>,则程序输出结果

为。

A、77889

B、77868

C、776810

D、77886610

【答案】A

【解析】题中while循环的条件是:当从键盘读入的字符不是'\n'时,执行

while循环。输入第一个字符3时:执行case0,什么也不输出;case1,输

出7;case2,输出7;遇到break语句,跳出switch语句。输入第二个字符

8时:c'3'=5,不执行任何语句。输入第三个字符4时:C」3'=1,执行

case1o输出8;case2,输出8;遇到break语句,跳出switch语句。输入

第四个字符5时:c-'3':2,执行case2,输匕9;遇到break语句,跳出

switch语句。

5、有字符数组a[80]和b[80],则正确的输出语句是o

A、puts(a,b);

printf(〃%s,%s”,a□,b[]);

C、putchar(a,b);

D、puts(a),puts(b);

【答案】D

6、关于数据类型存储大小从小到大正确的是一o

A、sizeof(char)<sizeof(shortint)<sizeof(int)<sizeof(float)

B>sizeof(char)<sizeof(shortint)<sizeof(int)<sizeof(double)

C、sizeof(char)<sizcof(int)<sizcof(longint)<sizeof(float)

D、sizeof(char)<sizeof(unsignedint)<sizeof(longint)<

sizeof(double)

【答案】B

7、若要定义一个具有5个元素的整型数组,以下错误的定义语句是o

A、inta[5]={0};

B、intb[>{0,0,0,0,0}

C^intc[2+3];

D、inti=5,d[i];

【答案】D

8、变量a中的数据用二进制表小的形式是01011101,变量b中的数据用二进制

表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运

算是o

A、ab

B、ab

C、a&b

D、a<<4

【答案】A

9、设char*s二〃\la\017bc〃;

则指针变量S指向的字符串所占的字节数是O

A、9

B、5

C、6

D、7

【答案】C

10、若已定义:inia[9],*p=a;并在以后的语句中未改变p的值,不能表示

a[l]地址的表达式是o

A,p+1

a+1

C、&a[l]

D、*p[l]

【答案】D

11、有如下函数调用语句func(reel,rec2+rec3,(rec4,rec5));

该函数调用语句中,含有的实参个数是_______。

A、3

B、4

C、5

D、2

【答案】A

12、以下选项中不正确的字符常量是。

A、’1'

B、'\0'

C、‘%d'

D、'\\'

【答案】C

13、有以下程序段inta[10]={1,2,3,4,5,6,7,8,9,10),*p=&a[3],b;

b=p[5];b中的值是________o

A、5

B、6

C、8

D、9

【答案】D

14、函数调用结束后,形式参数()

A、继续占用相同大小的内存

B、不确定

C、占用内存减小

D、释放内存

【答案】D

15、以下程序的输出结果是

main()

{

inta=-1,b=l,k:

if((++a<0)&&!(b—<=0))printfC%d%d\n",a,b);

elseprintf(〃%d%d\e”,b,a);

}

A、-11

B、01

C、10

D、00

【答案】C

16、执行以下循环语句时,下列说法正确的是ox=-1;

do

{

X=X*X;

}

while(x==0);

A、循环体将执行一次

B、循环体将执行两次

C、循环体将执行无限次

D、系统将提示有语法错误

【答案】A

17、以卜.不能将s所指字符串正确复制到t所指存储空间的是o

A、do*t++=*s++;while(*s);

B、for(i=0;t[i]=s[i];i++);

C、while(*t=*s)t++;s++;

D、for(i=0,j=O;t[i++]=s[j++];);

【答案】A

【解析】do

{*t++=*s++;}while(*s);不能。因为当*s=0时,whilc(*s)跳出循环,这样字

符串结束标志\0没有复制给*3造成*1不完整。注意,*t+十二*s++是先执行

*t=*s,然后才进行t=t+l,s=s+lo选项B、C、D都能将\0复制过去。

18、有以下程序:

#include<stdio.h>

main()inta=1,b=0;

printf(〃%d,〃,b=a+b):

printf("%d\n〃,a=2+b);

程序运行后的输出结果是O

A、0,0

B、1,0

C、3,2

D、1,2

【答案】D

【解析】本题输出两个值,第•个printf语句输出b的值,b=a+b=lo第二个

printf语句输出a的值,a=2*b,此时b的值为:,所以a的值为2。

19、以卜.函数按每行8个输出数组中的数据

voidfun(int*w,intn)

inti;

for(i=0;i<n;i+-)

printf(Wz,w[i]);

}

printf(〃\n〃);

}

下列划线处应填入的语句是o

A、if(i/8=0)printf(“\n”);

B、if(i/8==0)continue;

C、if(i%8==0)printf(a\nff);

D>if(i%8=0)continue;

【答案】C

20、若有以下说明和语句:

structst

(

intn;

char*ch;

}

t

structsta[3]

(

□,abc,7,def,9,ghk

}

,*p=a则值为6的表达式是。

A、p++->n

p->n++

C、(*.n++

D、++p->n

【答案】D

【解析】根据结构变量的存储特点,p+1意味着增加地址值为结构体数组a的

一个元素所占的字节数,即P++使p由a[0]指向a[l]起始地址。本题++p->n

得到P指向的结构体变量中成员n的值使之加lo因为p指向数组a起始地

址,p->n的值为5,再执行自加1运行,结果为6。

21、一个字长为8位的无符号二进制整数能表示的十进制数值范围是

A、0-256

B、0-255

C、1-256

D、1-255

【答案】B

【解析】无符号数,即自然数。8位无符号的二进制数的范围是00000000〜

11111111,转换成十进制就是0~255。

22、若变量x、y已正确定义并赋值,以下符合c语言语法的表达式是

A^++x,y=x一

B、x+l=y

C、x=x+10=x+y

D、double(x)/10

【答案】A

【解析】选项A)为C语言中的逗号表达式。赋值表达式的左侧不能是表达式

在进行强制类型转换时,数据类型两边的圆括号不能省略。

23、若调用fputc函数输出字符成功,则其返回值是

A、EOF

B、1

C、0

D、输出的字符

【答案】D

24、有以下程序

#include<stdio.h>

main()

(

inta[]={2,3,5,4},i;

for(i=0;i<4;i+-)

switch(i%2)

(

case0:sw.tch(a[i]%2)

(

case0:a[i]++;

break;

case1:a[i]一;

)

break;

case1:a[i]=0;

}

for(i=0;i<4;i+-)printf(*%d

printf("\n〃);

)

程序运行后的输出结果是________O

A.3344

B、2050

C、3040

D.0304

【答案】C

25、有以下程序

intadd(inta,intbi

return(a+b);

)

main()

intk,(*f)(),a=5,b=10;

f二add;

则以下函数调用语句错误的是o

A、k=(*f)(a,b);

k=add(a,;

C、k二*f(a,b);

D、k=f(a,b);

【答案】C

26、合法的八进制数是o

A、0

B、028

C、-077

D、01.0

【答案】A

27、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下

划线处应填写的是.

ttdefineN5

voidfun(intx[N])

(

intin;

for(m=N-t;m>=0:m-)scanf("%d”,;;

)

A、%&X[++m]

B、&x[m+l]

C、x+(m++)

D、x+m

【答案】D

28、若变量已正确定义并赋值,符合c语言语法的表达式是o

A、a=a+7:

B、a=7+b+e,a++

C、int(12.3%4)

Dsa=a+7=c+b

【答案】B

29、下面不正确的字符串常量是。

A、'abc'

B、〃12T2〃

C、〃0〃

D、〃〃

【答案】A

30、以下叙述中正确的是o

A、预处理命令行必须位于源文件的开头

B、在源文件的•行上可以有多条预处理命令

C、宏名必须用大写字母表示

D、宏替换不占用程序的运行时间

【答案】D

31、c语言程序的三种基本结构是顺序结构、循环结构和()

A、选择结构

B,遂归结构

C、嵌套结构

D、转移结构

【答案】A

32、设变量p是指针变量,语句p=null;是给指针变量赋null值,它等价于

()0

A、p=〃〃;

B、p二〃0〃;

C、p=0;

D、p=〃;

【答案】C

33、下面各语句行中,能正确进行字符串赋值操作的语句是o

A、charST[5]={〃ABCDE”};

B、charS[5]={,A,,'B','C','D','E'};

C、char*S;S='ABCDE”;

D^char*S;scanf(〃%S〃,S);

【答案】C

34、有以卜程序:

structstu

(

charnum[10];

floatscore[3];

);

main()

(

structstus[3]={r20021,z,90,95,85},{"20022〃,95,80,75},

{〃20023〃,100,95,90}[,*p=s;

inti;

floatsum=0;

for(i=0;i<3;i+-){

sum=sum+p->score[i];

}

printf(z,%6.2f\n",sum);

)

程序运行后的输出结果是

A、260

B、270

C、280

D、285

【答案】B

【解析】给结构体数组赋韧值时,由「数组中的每个元素都是一个结构体,因

此要将其成员的值依次放在一对花括号中,以便区分各元素。

s[0]={/,2002r,,90,95,85},s[l]={“20022',95,80,75},s[2]:

{“20023〃,100,95,90).

35^#include<stdio.h>

main()

(

chara,b,c,d;

scanf("%c%c",&a,&b);

c=getchar();

d=getchar();

printf("%c%c%c%c\n",a,b,c,d);

)

当执行程序时,按卜.列方式输入数据(从第•列开始,Vcr>代表回车,注意:回车

是一个字符)12<cr>34<cr>则输出结果是:。

A、1234

B、1.

C、12

D、12

334

【答案】C

36、break语句的正确的用法是_______。

A、无论在任何情况卜.,都中面程序的执行,退出到系统下一层。

B、在多重循环中,只能退出最靠近的那一层循环语句。

C、跳出多重循环。

D、只能修改控制变量。

【答案】B

37、以卜.关于结构化程序设计的叙述中正确的是。

A、一个结构化程序必须同时由顺序、分支、循环三种结构组成

B、结构化程序使月got。语句会很便捷

C、在C语言中,程序的模块化是利用函数实现的

D、由三种基本结构构成的程序只能解决小规模的问题

【答案】C

【解析】C语言是结构化程序设计语言,顺序结构、选择结构、循环结构是结

构化程序设计的种基本结构,研究证明任何程序都可以由这三种基本结构组

成。但是程序可以包含一种或者几种结构,不是必须包含全部三种结构。自从

提倡结构化设计以来,got。就成了有争议的语句。首先,由于gol。语句可以

灵活跳转,如果不加限制,它的确会破坏结构化殳计风格。其次,got。语句经

常带来错误或隐患。它可能跳过了某些对象的构造、变量的初始化、重要的计

算等语句。Goto语句的使用会使程序容易发生错误并且也不易阅读,所以应避

免使用。由三种基本结构构成的程序几乎能解决大部分问题。

38、〃现有程序:main()

(

int*ptr,*p[5],i;

if((ptr=malloc(100*sizeof(int)))!=null)

(

p[0]=ptr;

for(i=l;i<5;i++)p[i]=p[i-l]+7;

for(i=0;i<100;i++)*ptr++=i;

for(i=0;i<5;i++)printf(〃"%3d〃〃,*p[i]);

)

}

其输出结果是

A>17142728

B、07142228

C、07132228

Ds07142128

【答案】D

39、有以下程序:

main()

(

int

num[4][4]={{1,2,3,4),{5,6,7,8},{9,10,11,12),(13,14,15,16}},ij;

for(i=0;i<4;i+-)

(

for(j=0;J<=i;j++)printf("%4c〃,');

for(j=;jV4;j++)printf(v%4d*,num[i][j]);

printf(〃\n〃:;

}

)

若要按以下形式输出数组右上半三角1234678111216则在程序下划

线处应填入的是o

A、i-1

B、i

C、i+1

D、4-i

【答案】B

【解析】本题程序为二重循环,外循环控制输出数据的行数,内循环控制输出

数据的列数。从本题输出的形式来看,程序要求输出的是4行4歹八

40、在16位pc机上使用c语言,若有如下定义

structdata{

inti;

charch;

doublef;

}b;

则结构变量b占用内存的字节数是o

A、1

B、2

C、7

D、11

【答案】D

【解析】结构体变量所占用内存的字节数是其所有成员所占用内存字节数之

和。木题中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是

1字节,双精度型变量f所占用的内存是8字节,三者相加即可。

41、设有intx,y;

以下语句判断x和y是否相等,正确的说法是该语句oif(x二y)

printf("〃xisequa'toy."〃);

A、语法错

B、不能判断x和y是否相等

C、编译出错

D、能判断x和y是否相等

【答案】B

42、表达式:(int)((double)9/2)-(9)%2的值是。

A、0

B、3

C、4

D、5

【答案】B

43、c语言中,关系表达式和逻辑表达式的值是o

A、0

B、0或1

C、1

D、'T'或'F'

【答案】B

44、以下叙述中正确的是o

A、循环发生嵌套时,最多只能两层

B、三种循环for,while,do-while可以互相嵌套

C、循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误

D、for诺句的圆括号中的表达式不能都省略掉

【答案】B

【解析】A选项中,循环发生嵌套时,没有规定层数;C选项中,循环嵌套时,书写

代码时没有耍求必须缩进;D选项中,for语句的圆括号中的表达式都可以省略

掉。因此B选项正确。

45、下列对字符串的定义中,错误的是。

A、charstr[7]="FORTRAN”;

B、charstr[]="FORTRAN”;

C、char*str="FORTRAN”;

D、charstr[]={'F','O','R','T','R','A','N',0};

【答案】/\

46、将八进制数307转换成二进制数是

A、100110011

B、11000111

C、1100000111

D、111000011

【答案】B

47、有以下程序

#include<string.h>

main()

(

charp□二{'a','b','},q[10]=(,a','b','c'};

print「(级d%d\n〃,sir]en(p),strlen(q));

)

以下叙述中正确的是。

A、在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长

度都为3

B、由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长

度为3

C、由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长

度为3

D、由于p和q数组中都没有字符串结束符,故长度都不能确定

【答案】A

【解析】在给P和q数组赋初值时,系统会自动添加字符串结束符,从题目中

可以看出数组p和q都有3个字符,所以长度均为3<,

48、变量p为指针变量,若p二&a,下列说法不正确的有o

A、&*p=&a

B、*&a==a

C、(*p)++==a++

D、*(p++)二二a++

【答案】D

【解析】*P代表a,&印等价于&a;p代表&a,*p等价于a,因而(*p)++等,’介于

a++;但因p的值为a的内存单元地址,p++为变量a首地址后面的地址,

*(P++)不再指向变量So

49、\、/、mod、*等4个算术运算符中,优先级最低的是o

A、\

B、/

C、Mod

D、*

【答案】c

【解析】[知识点]模块/VBA编程基础

在一个表达式中进行若干操作时,每一部分都会被预先确定的顺序进行计算求

解,称这个顺序为运算符的优先顺序。而算术表达式的优先顺序从高到低分别

为:指数运算(八)、负数(-)、乘法和除法(*、/)、整数除法(\)、求模运算

(Mod)、加法和减法(+、-)、小字符串连接(&)。

50、以下叙述中错误的是o

A、C语言的可执行程序是由一系列机器指令阂成的

B、用C语言编写的源程序不能直接在计算机上一运行

C、通过编译得到的二进制目标程序需要连接才可以运行

D、在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe

文件

【答案】D

计算机C语言期末冲刺卷(三)

一、单项选择题(每小题2分,共100分)

1、在32位的计算机中,一个char型数据所占的内存长度的字节是

A、4

B、1

C、2

D,8

【答案】B

【解析】本题考查C语言各种数据类型所占的内存大小。char型数据所占内存

的大小为1个字节°注意:int型数据占内存的大小为4个,congdouble,

double占内存的大小为8个字节。

2、设a为整型变量,不能正确表达数学关系10

A、10

a=ll|a—121|a—13|a—14

C、a>10&&a<15

D、!(a<=10)&&!(a>=15)

【答案】A

3、当从键盘上输入字符“12134211〃下面程序的输出结果是o

main()

(

chars;

intvl=0,v2=0,v3=0,v4=0,k;

for(k=0;k<=7;k-+)

(

scanf(〃%c〃,&s);

switch(s)

(

default:v4++;

case'r:vl++;

case'3':v3++;

case'2':v2++;

}

)

printf(,zvl=%d,v2=%d,v3=%d,v4=%d\n”,vl,v2,v3,v4);

}

A、vl=4,v2=2,v3=l,v4=l

vl=4,v2=9,v3=3,v4=l

C、vl=5,v2=8,v3=6,v4=l

D、vl=8,v2=8,v3=8,v4=8

【答案】C

4、下列程序的运行结果是o

voidmain()

ints=0,k;

for(k=7;k>l;k—)

switch(k)

(

case1:case4:case7:s++:break;

case2:case3:case6:break;

case0:case5:s+=2:break;

)

}

printf(〃s=%d〃,s);

}

A、s=3

B、s=4

C、s=5

D、无输出结果

【答案】B

5、卜列程序的输出结果是。

#include<stdio.h>

intfun(intx)

(

intp;

if(x==0IIx-l)return3;

elsep=x-fun(x-2);

returnp;

)

voidmain()

(

,,,,

printf(\n%d)fun(5));

)

A、5

B、3

C、7

D、1

【答案】A

【解析】本题考查函数的递归调用。在函数递归调用时,fun(5):a=5-fun(3)-

>fun3=a-3-fun(l)->fun(1):a~3,反推回去fun(3):a=3-3=0->fun(5):a=5

0=5,最后的计算结果为5。

6、以下能正确定义整型变量a,b和c,并为其赋初值1的语句是o

A、inta=b=c=l;

B、inta,b,c=l;

C、a=b=c=l;

D、inta=l,b=l,c=l;

【答案】D

【解析】选项A中,变量b、c未定义;选项B中,a、b未赋值;选项C中a、

b、c均未定义。

7、若函数调用时用数组名作为函数参数,以下叙述中,不正确的是.

A、实参与其对应的形参共占用同一段存储空间

B、实参将其地址传递给形参,结果等同于实现了参数之间的双向值传递

c、实参与•其对应的形参分别占用不同的存储空间

D、在调用函数中必须说明数组的大小,但在被调函数中可以使用不定尺寸数

【答案】C

8、如下陈述中正确的是o

A、串“ABC”和串“ABC”不相等

B、串的长度必须大于零

C、串中元素只能是字母

D、空串就是空格串

【答案】A

【解析】两个串相等且仅当两个串长度相等,并且各对应位置的字符都相等,

零个字符的串称为空军,空格串是由一个或多个空格组成的串,它的长度为用

中空格的个数。

9、以下叙述中不正确的是o

A、空字符串(即两个双引号连写)只占一个存储单元

B、字符型常量可以放在字符型变量中

C、字符型常量可以放在字符串变量中

D、字符型常量可以与整数混合运算,而字符串常量不可以

【答案】C

10、设变量已正确定义以卜不能统计出一行中输入字符个数(不包含回车符)的

程序段是O

A、n=0;whi1e((ch=getchar0)!='\n')n++;

B、n=O;while(getchar()!='\n')n++;

C、for(n=0;getchar()!='\n';n++)

D、n=0;for(ch=getchar();ch!='\n';n++);

【答案】D

11、函数调用时,基本的参数传递方式有传值与传地址两种,(23)o

A、在传值方式下,形参将值传给实参

B、在传值方式下,实参不能是数组元素

C、在传地址方式下,形参和实参间可以实现数据的双向传递

D、在传地址方式下,实参可以是任意的变量和表达式

【答案】C

【解析】本题考查程序语言基础知识。

函数调用时基本的参数传递方式有传值与传地址两种,在传值方式下是将

实参的值传递给形参,因此实参可以是表达式(或常量),也可以是变量(或数组

元素),这种信息传递是单方向的,形参不能再将值传回给实参。在传地址方式

下,需要将实参的地址传递给形参,因此,实参必须是变量(或数组元素),不

能是表达式(或常量)。这种方式下,被调用函数中对形式参数的修改实际上就

是对实际参数的修改,因此客观上可以实现数据的双向传递。

12、在以下各标识符中,合法的用户标识符是________o

A、001

B、table_1

C、0_t

D、k%

【答案】B

13、下列字符数组长度为5的是o

A,chara[]={,h,,'a','b','c','d'};

charb[]={'h','a','b','c','d',''0'};

C>charc[10]={'h',,a,,,b',,c',,d,};

D、chard[6]={'h','a','b','c',''0'};

【答案】A

14、数组inia[3][4];其中错误的数组引用为。

A、a[0][0]

B、a[l][3]

C、a[3][3]

D、a[O]

【答案】C

15、有以下程序

main()

(

charal='m,a2-m';

printf("%c\n〃,:al,a2));

)

以下叙述中正确的是。

A、程序输出人写字母M

B、程序输出小写字母m

C、格式说明符不足,编译出错

D、程序运行时产生出错信息

【答案】A

16、有如下程序

^defineN4

#defineMN+2

^defineNUM2*M+1

main()

(

inti;

for(i=l;iV=NUM:i++)printf(〃%d\n〃,i);

)

该程序中的for循环执行的次数是o

A、14

B、11

C、10

D、13

【答案】B

17、若有以下函数首部intfun(doublex[10],int*n)则下面针对此函数的函

数声明语句中正确的是。

A、intfun(doubleX,int*n);

B、intfun(double,int);

C、intfun(double*X,intn);

D、intfun(double*int*);

【答案】C

【解析】函数首部intfun(doublex[10],int:n)表示这个函数的返回值是整

型,其第一个形式参数是一个双精度型的一维数组,第二个参数是一个整型指

针。在C语言中,一维数组的名字表示的是一维数组的地址,所以选项D)是正确

的。

18、有如下程序,若要求al、a2、cl、c2的值分别为10、20、a、b,正确的数

据输入是O

nclude<stdio.h>

voidmain()

(

intal,a2;

charcl,c2;

scanfC%d%d,z,&al,&a2);

scanf(,z%c%cz,,&cl,&c2);

)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论