南京财经大学C语言期末(共六卷)含答案解析_第1页
南京财经大学C语言期末(共六卷)含答案解析_第2页
南京财经大学C语言期末(共六卷)含答案解析_第3页
南京财经大学C语言期末(共六卷)含答案解析_第4页
南京财经大学C语言期末(共六卷)含答案解析_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

南京财经大学C语言期末(一)

考试方式:【闭卷】考试时间:【60分钟】总分:【100分】

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

1、以下不正确的说法是—

A、在不同的函数n可以使用相同名字的变量

B、形式参数是局部变量

C、在函数内定义的变量只在本函数范围内有效

D、在函数内的复合语句中定义的变量在本函数范围内有效

【答案】D

2、把十六进制数baf转换成二进制数________o

A、101110101111

B、110110101111

C、101110111111

D、111011011111

【答案】A

【解析】(BAF)16=(101110101111)2

3、能正确表示或aWO的关系表达式是。

A、a>=10ora<=0

B、a>=10||a<=0

C、a>=10|a<=0

D、a>=10&&a<=0

【答案】B

4、假定等级和分数有以下对应关系:等级:a分数:85〜100等级:b分

数:60〜84等级:c分数:60以下对于等级grade输出相应的分数区

间,能够完成该功能的程序段是.

A、switch(grade)

(

case1A':printf("85—100\n");

case'B':printf("60—84\n");

caserC':printf(H60以下\nw);

default:printf(*'等级错误!\nH);

)

B、switch(grade)

(

case1A':printf("85—100\n");break;

case'B':printf("60-84\n");

case'C':printf("60以下\nH);

default:printf("等级错误!\n");

C、switch(grade)

(

caserA':printf("85—100\n");break;

caserB':printf("60—84\n");break;

case'C':printf("60以下\nM);

default:printf(n等级错误!\nM);

)

D、switch(grade)

(

case'A':printf("85―100\n");break;

caserB':printf("60—84\n");break;

case'C':printf("60以下\n");break;

default:printf(H等级错误!\nH);}

【答案】D

5、假定int类型变量占用4个字节,若有定义:intx[10]={0,2,4}则数组x在

内存中所占字节数是O

A、4

B、12

C、20

D、40

【答案】D

6、若变量a,b,t已正确定义,要将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

7、以下程序中的函数reverse的功能是将a所指数组中的内容进行逆置。

voidreverse(inta[],intn)

{

inti,t;

for(i=0;i<n/2;i++)

(

t=a[i];

a[i]=a[n-l-i];

a[n-l-i]=t;

}

)

main()

(

intb[10]={l,2,3,4,5,6,7,8,9,10};

inti,s=0;

reverse(b,8);

for(i=6;i<10;i-+)s+=b[i];

printf("%d\n\s);

)

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

A、22

B、10

C、34

D、30

【答案】A

8、c语言的程序一行写不下时,可以。

A、用逗号换行

B、用分号换行

C、在任意一空格处换行

D、用回车符换行

【答案】C

9、下列字符串中,正确的c标识符是o

A、foo-1

B、2b

C、new

D、256

【答案】D

【解析】此题考查的是C语言中标识符的定义。标识符由字母、数字或下划线

构成,但第一个字符必须是字母或下划线:标识符中大小写字母是不同的;用

户定义标识符时,不允许采用系统的关键字。

10、charal□='abcw,a2[80]=M1234o;将al串连接到a2串后面的语句是

A、strcat(a2,al);

B、strcpy(a2,al);

C、strcat(al,a2);

D、strcpy(al,a2);

【答案】A

IkC语言函数内定义的局部变量的隐含存储类则是

A、static

B、auto

C、register

D、extern

【答案】B

12、下面程序段的功能是

^include<stdio.h>

main()

charsi;

sl=putc(getc(stdin),stdout);

}

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

【答案】C

18、若有以下定义和语句,则输出结果是o

int**pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d\n",*p,**pp);

A、10,20

B、10,10

C、20,10

D、20,20

【答案】D

19、设有如下定义:charaa[2][20]={HabcdM,wabcdH);则以下说法中错

误的是.

A、aa是个二维数组,可以存放2个19个字符以下的字符串

B、aa是个二维数组,每行中分别存放了字符串"abed"和"BCD”

C、aa[0]可以看作是一维数组名

D、aa[0][0]可以看作是一维数组名

【答案】D

20、设有如下定义:

structsk

(

inta;

floatb;

)

data,*p;

若有p二&dala;

则对data中成员a的引用正确的是_______。

A、(*p).data,a

B、(*p).a

C、p->data.a

D、p.data,a

【答案】B

【解析】p是指向结构体的指针,用指针引用结构体成员有两种格式:p->成

员、(*p).成员

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

A、%=

B、/

C、=

D、〈二

【答案】A

22、在c语言程序中可用做用户标识符的是。

A、void

123

BBN

B、aa

_abc

cas

C、as+b3

-123

If

D、6f

Do

SIG

【答案】B

23、设int*p[4];则标识符p是。

A、整型数组名

B、指针数组名

C、指针函数名

D、指向整型变量的指针

【答案】B

【解析】指针数组的定义格式为:数据类型*指针数组名[长度],…其中,指针

数组名是标识符,前面必须有号,故本题选B。

24、若有以下程序段,w和k都是整型变量;

w=k;

LB:if(w=0)

gotoLE;

w一;

printf(n*")gotoLB;

LE;

则不能与上面程序段等价的循环语句是O

A、for(w=k;w!-0;w-)printf(n*”);

B、for(w=k;W;—w)printf(M*”);

C、w=k;

while(w-!=0)printfC*");

D、w=k:

W++;do

(

w―;printf(0?;)while(w!=0);

【答案】C

25、若变量已正确定义为int型,要通过语句scanf("%d,%d,%d",&a,&b,&c);

给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是o(U代

表一个空格符)

A、HLUU,2,3V回车》

B、1U2113V回车》

C、1,口口口2,UUU3V回车》

D、1,2,3V回车〉

【答案】B

【解析】scanf()函数的一般格式:scanf(格式控制,地址列表)。在输入多个数

值数据时,若“格式控制”字符串中没有非格式字符作输入数据之间的间隔,

则可用空格、TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如

对“外d”输入“12A”时,A即为非法数据)时即认为该数据结束。如果在“格

式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时应输入与

这些字符相同的字符。本题由于格式控制符中用了逗号,所以在输入数据时,

必须在输入的各数据间用逗号分隔,故选项B不正确。

26、以下程序段中与语句k=a>b?(b>c?l:O):O;功能等价的是o

A、if((a>b)&&(b>c))k=l;

elsek=0;

B、if((a>b)I|(b>c))k=l;

elsek=0;

C、if(a<=b)k=0;

elseif(b<=c)k=l;

D、if(a>b)k=l;

elseif(b>c)k=l;

elsek=0;

【答案】A

27、设charstr[100];inti=5;则引用数组元素的错误形式的是。

A、strElilO]

B、*(srr+

C、(str+T-1)

D、*(&(str++)+

【答案】D

28、下列选项中不是字符常量的是o

A、7

B、'\x2a'

C、H

D、"\0"

【答案】D

【解析】C语言规定,一个字符常量代表ASCII码字符集里的一个字符,在程

序中用单引号括起来,以便区分。“\v”'表示的是竖向跳格;"'\x2a'”表

示的是两位+六进制数;“‘a'”表示的是字符a对应的ASCII码值。

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

A、E

B、'376'

C、"\n"

D、376

【答案】C

30、标准库函数fgets(str,n,fp)的功能是________。

A、从fp所指的文件中读取长度不超过n-1字符串存入指针str所指的

内存

B、从fp所指的文件中读取长度为n的字符串存入指针str所指的内存

C、从fp所指的文件中读取n个字符串存入指针str所指的内存

D、从fp所指的文件中读取长度为n-1的字符串存入指针str所指的内

【答案】A

【解析】fgets函数的功能是从fp所指文件中读入nl个字符放入以str为

起始地址的空间内,读取长度不超过nT,读入结束后,自动在最后添加0,选项

A正确,本题答案Ao

31、已定义以下函数fun(char*p2,char*pl)

(

while((*p2=*pl)!='\0r)

(

pl++;

p2++;

}

}

函数的功能是。

A、将pl所指字符串复制到p2所指内存空间

B、将pl所指字符串的地址赋给指针p2

C、对pl和p2两人指针所指字符串进行比较

D、检查pl和p2两个指针所指字符串中是否有‘'0'

【答案】A

32、在16位编译器环境下,double类型占多少字节?

A、2

B、4

C、1

D、8

【答案】D

【解析】在16位编译器环境下,double类型占8个字节。

33、以下叙述中错误的是________。

A、对于double类型数星,不可以直接用数组名对数组进行整体输入或输出

B、数组名代表的是数组所占存储区的首地址,其值不可改变

C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出

“下标越界”的出错信息

D、可以通过赋初值的方式确定数组元素的个数

【答案】C

34、有以下定义和语句:

structstudents{

intnum;

charname[20];

charc;

struct(

intgrade1;

intgrade2;

}s;

);

structstudentsw,*pw;

*pw=w;

下列赋值语句不正确的是0

A、num=1002;

B、w.grade1=85;

C、pw->num=1002;

D、w.s.grade2=85;

【答案】B

【解析】本题主要考查的是结构体变量的嵌套定义,也就是说一个结构体变量

也可以是一个结构体。在本题中student这个结构体中包含了结构体s。所以

对结构体变量w中grade1成员的引用是w.s.grade1或w->s->grade1u

35、若有定义和语句:int**pp,*p,a=20,b=10;

pp=8p;

p=&a;

p=&b;

printf(H%d,%d\n",*p,**pp);

则输出结果是。

A、20,10

B、20,20

C、10,20

D、10,10

【答案】D

36、执行下面程序片段的结果是。intx=23;

printf("%2dn,x-);

)

while(!x);

A、打印出321

B、打印出23

C、不打印任何内容

D、陷入死循环

【答案】B

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

A、构成C程序的基本单位是函数

B、可以在一个函数中定义另一个函数

C、main。函数必须放在其他函数之前

D、所有被调用的函数一定要在调用之前进行定义

【答案】A

38、有以下程序

mainO

{

intx[8]={8,7,6,5,0,0},*s;

s=x+3;

printf(w%d\nH,s[2]);

}

执行后输出结果是O

A、随机值

B、0

C、5

D、6

【答案】B

39、若有定义:intc[4][5],(*cp)[5];和语句cp二c;,则能正确引用c数组元

素的是.

A、cp+1

B、*(cp+3)

C、*(cp+1)+3

D、*(*cp+2)

【答案】D

40、以下scanf函数调用语句中不正确的是

structpupil

{

charname[20];

intage;

intsex;

)

pup[5],*p=pup;

A、scanf(n%s'r,pup[0].name);

B、scanf("%d,r,&pup[0].age);

C、scanf(M%d'r,p->age);

D、scanf("%d&(p->sex));

【答案】C

41、c语言中的标识符第一个字符。

A、必须为字母

B、必须为下划线

C、必须为字母或r划线

D、可以是字母,数字和下划线中任一种字符

【答案】C

42、已知year为整型变量,不能使表达式

(year%4==0&&year%100!=o)Iyear%400==0的值为"真"的数据是一

A、1990

B、1992

C、1996

D、2000

【答案】A

43、设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句:if(a<

b)if(c==d)y=0;elsey=l;该语句所表示的含义是。

A、y=0,a

y=l,a2b

B、y=0,a

y=l,a2b且c#d

C、y=0,a

y=l,aVB且CWD

D、y=0,a

y=l,cWd

【答案】C

44、有以下程序段:

intx=3;

do

(

printf(“%3d",x-=2);

}

while(!(—x));

程序段的输出结果是o

A、1

B、30

C、12

D、死循环

【答案】C

45、设有下面的程序段:chars[]="china0;char*p=s;则下列叙述正确的

是—O

A、数组s中的内容和指针变量p中的内容相等

B、s和p完全相同

C、s数组长度和p所指向的字符串长度相等

D、*p与s[0]相等

【答案】D

46、经过以下语句定义后,表达式z+=x>y?++x:++y的值为________。

intx=l,y=2,z=3;

A、2

B、3

C、6

D、5

【答案】C

47、以下函数按每行8个输出数组中的数据

voidfun(int*w,intn)

(

inti;

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

{

printf,w[i]);

)

printf("\nv);

}

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

A、if(i/8==0)printf(a\nff);

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

C、if(i%8=0)printf(“\n”);

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

【答案】C

48、调试程序是指对程序进行

A、编辑

B、编译

C、查错和排错

D、连接

【答案】C

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

A、charst[4][5]={"ABCDEff);

B、chars[5]={'Af,'B1,'C*,fD',rE'};

C、char*s="ABCDE";

D、char*s;scanf("%sM,*s);

【答案】C

50、下列叙述中正确的是o

A、C语言编译时不检善语£

B、C语言的子程序有过程和函数两种

C、C语言的函数可以嵌套定义

D、C语言中,根据函数能否被其它源文件调用,被区分为内部函数和外部函数

【答案】D

南京财经大学C语言期末(二)

考试方式:【闭卷】考试时间:【60分钟】总分:【100分】

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

1、在标准ascii码表中,已知英文字母a的十进制码值是65,英文字母a的十进

制码值是°

A、95

B、96

C、97

D、91

[答案]C

【解析】a的十进制码值比A大32。

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

A、指针

B、引用

C、传值

D、常值

【答案】B

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

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

3、若a是数值类型,则逻辑表达式(a=l)||(a!=D的值是。

A、1

B、0

C、2

D、不知道a的值,不能确定

【答案】A

4、以下程序段.x=-l;

do

(

x=x*x;

}

while(!x);

A、是死循环

B、循环执行二次

C、循环执行一次

D、有语法错误

【答案】C

5、下列字符串中,不可以用作c标识符的是o

A、y_2006

B、_FESTJI

C、Return

D、switch

【答案】D

【解析】在C中,变量标识符必须是以大小写字母、下画线开始,由数字或者

字母下画线等组成的一个字符串,其中C++关键字不能作为标识符,不能包含

-、+、*、/等运算符号。C++变量区分大小写,麻以Retrun不是关键字,而是

一个合法变量;swith为关键字,所以不能定义为标示符。

6、大写字母b的ascii码值是。

A、65

B、66

C、41H

D、97

【答案】B

【解析】字母A对应的ASCII码值是1000001,即65,因此字母B对应的ASCII

码值是66o

7、若有说明:int/][3]={{1,2,3},{4,5},{6,7)};则数组4的第一维的大小

为:()

A、2

B、3

C、4

D、无确定值

【答案】B

8、为了要计算s=10!(10的阶乘),则以下对s的定义正确的是o标

识符由字母,数字和下划线组成且第一个字符必须为字母或下划线auto自动变

量register寄存器变量extern外部变量static静态变量

A、ints

B、unsigneds

C、shorts

D、longs

【答案】D

9、下列哪个是c语言的有效标识符

A、_Nol

B、No.1

C、12345

D、int

【答案】A

【解析】标识符是一个以字母或下划线开始的,由字母、下划线和数字组成的

字符串,标识符不能与任意关键字同名。

10、若有运算符:〉、一、〈V、%、sizcof,则它们按优先级(由高至低)的正

确排列顺序为_______O

A、%、sizeofx>、VV、=

B、sizeofx%、>、=、<<

C、sizeofx<<x>、%、=

D、sizeofx%、VV、>、=

【答案】D

11>合法的main。函数命令参数形式是________。

A、main(inta,char*c[])

B、main(intarc,char**arv)

C、main(intargc,char*argv)

D、main(intargv,char*argc[])

【答案】C

12、c语言的编译系统对宏定义的处理是o

A、在程序连接时进行的

B、在程序运行时进行的

C、在对源程序中的箕它语句进行编译前进行的

D、和C程序中的其它语句同时进行编译的

[答案]C

【解析】所谓“编译预处理”就是在C编译程序对C源程序进行编译前,由编

译预处理程序对这些编译预处理命令进行处理的过程。宏定义属于预处理命令,

在对源程序中的其它语句进行编译前进行的。本题答案为C选项。

13、已知三个字符为a、z和8,按它们的ascii码值升序排序,结果是

A、8,a,Z

B、a,8,Z

C、a,Z,8

D、8,Z,a

【答案】D

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

句中,含有的实参个数是.

A、3

B、4

C、5

D、有语法错误

【答案】B

15、有以下程序

main()

{

intm=0256,n=256;

printf(r%o%o\n",m,n);

}

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

A、02560400

B、0256256

C、256400

D、400400

[答案]c

【解析】以0为开头的整数表示八进制整数,所乂按八进制输出时,m的结果

为256,而根据十进制数和八进制数之间的转化,十进制数256转化为八进制

数时,应该是400。

16、以下for语句中不是死循环的是o

A^for(inti=0;i<l;i++);

B、for(inti=0;i++);

C、for(inti=l;i>0;++i);

D、for(;;);

【答案】A

【解析】考查循环语句for的使用。

[解题要点]for循环的一般格式为for(初始化部分;终止条件判断部分;迭代

部分){循环体;}说明如下:for循环开始时,首先执行初始化操作,然后判断

终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。

完成一次循环后,重新判断终止条件。

[错解分析]在for语句中,如果省略了终止条件判断部分,开且在语句中没有

break,或者是终止条件判断部分始终没有终止,都将出现死循环。

[考点链接]for循环语句可由while循环语句来代替。

17、若有下列定义,则对a数组元素的正确引用是ointa[5],*p=a;

A、*(p+5)

B、*p+2

C、*(ai2)

D、*&a[5]

【答案】C

18、以下程序运行后的输出结果是

main(){

charc;

intn=100;

floatf=10;

doublex;

x=f*二n/=(c=50);

printf(n%dn,x);

}

A、220.000000

B、100,20.000000

C、240.000000

D、10040.000000

【答案】A

【解析】对于c语言中的赋值运算符,必须遵循乂下规则:赋值运算符的优先

级别只高于逗号运算符,比其他任何运算符的优先级都低,并且具有自右向左

的结合性。因此先得到变量C的值为50,变量n经过计算结果为2,最后通过

变量f的值10和n的值2相乘得到变量x的值,为20.000000。因此选项A)正

确。

19、若使用一位数组名作为函数实参,则以下正确的说法是。

A、必须在主调函数中说明此数组的大小

B、实参数组类型与形参数组类型可以不匹配

C、在被调函数中,不需要考虑形参数组的大小

D、实参数组名与形参数组名必须一致

【答案】C

20、若有以下语句:

typedefstructs

(

intg;

charh;

}t;

以下叙述中正确的是o

A、可用S定义结构体变量

B、可用T定义结构体变量

C、S是struct类型的变量

D、T是structS类型的变量

【答案】B

21、设x,y,z,s均为int型变量,且初值均为1,则执行语句s=++xI++y&&+-z

后,则s的值为:

A、不定值

B、2

C、1

D、0

【答案】C

22、有定义:"inta=2,b=3,c=4;",则下列选项中值为0的表达式是_______0

A、(!a==l)&&(!b-0)

B、(a<B)&&!C||1

C、a&&b

D、a||(b+b)&&(c­a)

【答案】A

23、通常适用于从被调用函数中将一个值传回主一周函数的参数传递方式是

A、利用返回值数据传递方式

B、利用形参与实参传递数据的方式

C、利用全局变量传递数据的方式

D、以上都不对

【答案】A

24、若变量已正确定义,有以下程序段i—。;

doprintf("%d,",i);

while(i++);

printf("%d",i)其输出结果是________。

A、0,0

B、0,1

C、1,1

D、程序进入无限循环

【答案】B

25、在函数声明中,下面哪项是不必要的—

A、函数参数的类型和参数名

B、函数名

C、函数的类型

D、函数体

【答案】D

【解析】本题考核函教的原型声明格式。解析此题时,要注意函数定义和函数

声明的区别。

①C中每一个函数的定义都是由4个部分组成的,即函数类型、函数名、函

数参数表和函数体。

②函数的声明是为了消除函数定义的位置影响。不管函数是在何处定义的,

只要在调用前进行函数的声明,就可保证函数调用的合法性。

③函数原型的说明格式为:

V类型〉〈函数名〉(V形参表》);

26、下列语句的输出结果是()。

printf(,,%d\nM,(int):2.5+3.0)/3);

A、有语法错误不能通过编译

B、2

C、1

D、0

【答案】C

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

划线处应填写的是_______O

^defineN5

voidfun(intx[N])

{

intm;

for(m=N-t;m>=0;m-)scanf("%d二_______);

)

A、%&X[++m]

B、

C、x+(m++)

D、x+m

【答案】D

28、软件设计中模块划分应遵循的准则是o

A、低内聚低耦合

B、高内聚低耦合

C、低内聚高耦合

D、高内聚高耦合

【答案】B

29、对下述程序的判断中,正确的是o

main()

(

char*p,s[256];

p=s;

while(strcmp(s,*theend"))

printf(ninputthestring:,F);

gets(s);

while(*p)putchar(*p++);

}

A、此程序循环接收字符串并输出,直到接收到字符串“theend”为止

B、此程序循环接收字符串,接收到字符串“theend”则输出,否则程序终

C、此程序循环接收字符串并输出,直到接收字符串“theend”为止,但因

为代码有错误,程序不能正常工作

D、此程序循环接收字符串并将其连接在一起,直到接收字符串“theend”

为止,输出连接在一起的字符串

【答案】C

30、执行以下程序后,test,txt文件的内容是(若文件能正常打开)o

^include<stdio.h>

main()

(

file*fp;

char*sl=Mfortran*',*s2="basic”;

if((fp=fopen(r,test,txt",Hwb"))==null)

(

printf("can'topentest.txtfile\nr);

exit(1);

)

fwrite(si,7,1,fp);

/*把从地址si开始的7个字符写到fp所指文件中*/fseek(fp,

01,seekset);

/*文件位置指针移到文件开头*/fwrite(s2,5,l,fp);

fclose(fp);

}

A、Basican

B、BasicFortran

C、Basic

D、FortranBasic

【答案】A

31、有以下程序:

int*f(int*x,int*y){

if(*x<*y)returnx;

elsereturny;

)

main()

inta=7,b=8,*p,*q,*r;

p=&a;

q=&b;

r=f(p,q);

printf("%d,%d,%d\n",*p,*q,*r);

}

执行后输出结果是。

A、7,8,8

B、7,8,7

C、8,7,7

D、8,7,8

【答案】B

【解析】本题定义了一个返回值为指针的函数f(),此函数有两个指针型的形

参x和y,该函数的功能,是返回x和y指向的变量中值较小的那个指针变

量。主函数中定义了两个指针变量p和q,并让它们指向变量a和b,调用函数

f(),返回指向的变量喧较小的指针变量,r的值为指针变量p的值(变量a的

地址),因此最后输出的*p、*q和*r的值是7,8和7。所以,B选项为所选。

32、设c语言中,int类型数据占2个字节,则long类型数据占

A、1个字节

B、2个字节

C、4个字节

D、8个字节

【答案】C

33、若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据

的程序段是______O

A、*p=&a;scanf(M%ld,r,p);

B、p=(long*)malloc(8);scanf(M%ld",p);

C、scanf("机d”,p=&a);

D、scanf("机d",&a);

【答案】A

34、有如下定义

structperson

(

charname[9];

intage;

}

structpersonclass[10]={"john\17,,fpaul",19,"mary",18,

"adam",16);

根据上述定义,能输出字母a的语句是o

A、printfC^cXn'1,class[3].name);

B、printf(w%c\nH,class[3].name[0]);

C、printf(w%c\nH,class[4].name[l]);

D、printf("%c\n\class[4].name[O]);

【答案】B

35、以下语句段执行后的输出结果是o

#include<stdio.h>

main()

(

intk=3;

if(k)printfelseprintf("&&&&");

)

A、###

B、&&&&

C、###&&&&

D、有语法错误,不能执行

【答案】D

【解析】在C语言中语句结束时应该以分号结尾,程序中的第1个

printf("###")输出语句后面少了一个分号(;),因此执行程序时会出错。

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

main()

(

intx=l,y=O,a=O,b=O;

switch(x)

(

case1:switch(y)

(

case0:a++;

break;

casel:b++;

break;

}

case2:a++;

b++;

break;

)

printf(,'%d,%d\n'r,a,b);

)

A、2,1

B、2,2

C、1,1

D、21

【答案】A

37、有以下程序

main()

inta[3][2]={0},(*ptr)[2],i,j;

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

{

ptr=a+i;

scanf(H%d",ptr);

ptr++;

}

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

(

for(j=0;j<2;j++)printf(w%2dw,a[i][j]);

printf(',\n'3;

若运行时输入:123V回车,,则输出结果是_____

A、产生错误信息

B、10

C、12

D、10203020000030

【答案】B

【解析】本题定义了一个二维数组a,又定义了一个指针变量ptr,它用于指向

包含2个元素的一维数组,在第一个for循环中,语句"ptr=a+i;"用于将指针

变量ptr指向第i行的数组元素,通过两次循环,分别给二维数组a的第0行

的第1个元素和第1行的第1个元素赋了值1和2。

38、有以下程序

voidf(int*q)

(

inti=0;

for(;i<5;i++)(*q)++;

}

main()

{

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

f(a);

for(i=0;i<5;i+-)printf("%d,\a[i]);

}

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

A、2,2,3,4,5,

B、6,2,3,4,5,

C、1,2,3,4,5,

D、2,3,4,5,6,

【答案】B

39、已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组

array的错误定义方式为。inta[3][4];

f(a);

A、f(intarray[][6])

B、f(intarray[3][])

C、f(intarray[][4])

D、f(intarray[2][5])

【答案】B

40、有以下程序:

structstu

(

charnum[10];

floatscore[3];

};

main()

(

structstus[3]={{"2002r\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("%6.2f\n\sum);

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

A、260

B、270

C、280

D、285

【答案】B

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

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

s[0]二{"20021〃,90,95,85},s[l]={”20022',95,80,75},s[2]:

{"20023”,100,95,90}。

41、c风格的注释*c风格的注释,也称块注释或多行注释,以开始,以

______结束。

A、/*和*/

B、{和}

C、[和]

D、(和)

【答案】A

42、若已定义x和y为double类型,则表达式x=l,y=x+3/2的值是。

A、1

B、2

C、2.0

D、2.5

【答案】C

43、c语言中逻辑表达式的值为o

A、0或1

B、非零值或零值

C、true或false

D、'true'或'false'

【答案】A

44、下列选项中均属于c语言合法的标识符是3

A、Int

#sub

break

B、_3ab

FOR

Long

C、3a

printf

a_b

D、WORD

auto

include

【答案】B

【解析】选项A含有非法字符'#'、break属于C语言关键字都不是合

法标识符;选项C中力以数字开头不是合法标识符;选项D中的auto是C语

言关键字不属于合法标识符;故应该选择B。

45、若定义的函数为float*fun()……,则函数的返回值是。

A、float型数据

B、void型数据

C、float型指针

D、void型指针

【答案】C

46、执行以下语句后a的值为o

inta,b,c;

a=b=c=l;

++a||++b&&++c;

A、错误

B、0

C、2

D、1

【答案】C

47、下列哪个数组定义是正确的o

A、inta[5)5];

B、INTa[10];

C、inta[n];

D、inta[3+2];

【答案】D

48、关于标识符,下列选项中描述错误的是o

A、标识符只能由字母、数字和下划线组成

B、标识符不能以二划线作为第一个字符

C、标识符不能以数字作为第一个字符

D、标识符不区分入小写字母

【答案】D

【解析】标识符区分大小写字母.

49、判断两个字符串是否相等,正确的表达方式是o

A、while(si==s2)

B、while(sl=s2)

C、while(strcmp(si,s2)==0)

D、while(strcmp(si,s2)=0)

【答案】C

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

A、C语言中的文件是流式文件,因此只能顺序存取数据

B、打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被

覆盖

C、在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,

才能读到第1个数据

D、当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据会失

【答案】D

【解析】如果以写方式打开一个已经存在的文件,则在打开时将该文件删除,然

后重新建立一个同名的新文件。

南京财经大学C语言期末(三)

考试方式:【闭卷】考试时间:【60分钟】总分:【100分】

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

1、以下关于c语言标汛符的描述中,正确的是。

A、标识符可以由汉字组成

B、标识符只能以字母开头

C、关键字可以作为用户标识符

D、Area与area是不同的标识符

【答案】D

2、若变量已正确说明为floal类型,要通过语句

scanf(H%f%f给a赋予10.0,b赋予22.0,c赋予33.0,不正

确的输入形式是O

A、102233

B、10.0,22.0,33.0

C、10.022.033.0

D、10V回车>22V回车>33V回车〉

【答案】B

【解析】用scanf()读取从键盘输入的数据时,口间不能加逗号,要用空格隔

3、有以下程序

main()

(

inti;

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

switch(i)

(

case1:printf("%d",i);

case2:printf(,,%dM,i);

default:printf(v%d",i);

)

)

执行后输出的结果是o

A、011122

B、012

C、012020

D、120

【答案】A

【解析】当执行switch语句时,首先计算紧跟其后一对括号中的值,然后在语

句体内寻找与该值吻合的case标号。若相等,则执行该标号后开始的各语句,

包括在其后的所有case和default后的语句,直到switch语句体结束。

4、有以下程序:

#include<stdio.h>

main()

inti=5;

do{

if(i%3==l)

if(i%5==2){

printf(H*%dH,i);

break;

)

i++;

)

while(i!=0);

printf("\n");

)

程序的运行结果是_______。

A、*7

B、*3*5

C、*5

D、*2*6

【答案】A

【解析】本题考查的是break语句。do…while循环是“先执行,后判断”,

所以无论条件如何,它都至少会执行一遍。程序首先初始化变量i为5,然后

进入do…while循环体,首先判断(i%3=l),因为5%3=2,所以if条件不满

足,跳过下面的if语句,执行i++,i变为6。第1遍循环结束,判断(i!R)

为真,继续循环。现在设3二6%3=0,所以if语句还是不被执行,继续i+十,i

变为7,仍然满足(i!R),继续循环。第3遍循环设3=7%3=1,满足条件

(i%3=l),继续判断条件i%5=2成立,即输出*7,然后执行break语句跳出循

环。

5、已知:intn=10;那么下列语句中错误的是________o

A、int*p=newlong[n];

B、intp[n];

C、int*p=newlong(n);

D、intp[10];

【答案】B

6、执行下列语句后变量x和y的值是________oy=10;x=y++;

A、x=10,y=10

B、x=ll,y=ll

C、x=10,y=ll

D、x=ll,y=10

【答案】C

7、若有定义:intaa[8];则以下表达式中不能代表数组元aa[l]的地址的是

A、&aa[O]+l

B、&aa[l]

C、&aa[O]++

D、aa+1

【答案】C

8、以下叙述正确的是。

A、在C程序中,每行中只能写一条语句

B、若a是实型变量,C程序中允许赋值a=lD,因此实型变量中允许存放整

型数

C、C程序中,无论是整数还是实数,都能被准确无误地表示

D、在C程序中,%是只能用于整数运算的运算符

【答案】D

9、设有以下程序段:inta[5]=0,*p,*q;p=a;q二a;则下列选项中,合法的运

算是o

A、p+q

B、p-q

C、p*q

D、p%q

【答案】B

【解析】本题考核指针的运算。C语言中,指向同一字符串的指针之间能且只

能进行减运算,减运算后返回的是一整型数,表示指针之间的地址偏移量。

10、若a=l,b=2贝I]ab的值是()。

A、0

B、1

C、2

D、3

【答案】D

11>有以下函数:charfun(char*p)

(

returnp;

}

该函数的返回值是O

A、无确功的值

B、形参P中存放的地址值

C、一个临时存储些元的地址

D、形参P自身的地址值

【答案】A

12、”对下面程序段:

ttdefineA3

ttdefineB(a)((A+l)*a)...x=3*(A+B(7));正确的判断是。"

A、程序错误,不许嵌套宏定义

B、程序错误,宏定义不许有参数

C、x=93

D、x=21

【答案】C

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

#include<stdio.h>

voidfun(int*s,int*p){

staticintt=3;

*p=s[t];

t一;

}

main()

{

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

intx;

for(k=0;k<4;k+-){

fun(a,&x);

printf(H%d,n,x);

}

)

A、5,4,3,2

B、2,3,4,5,

C、2,2,2,2,

D、5,5,5,5,

【答案】A

【解析】分析fun函教程序段,可知fun函数要实现的功能是将s中第(t+1)个

元素以前的元素逆置赋给数组P。由于fun中函数定义了静态变量t=3,因此,

在主函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数

组x,最后输出x数组。

14、#define能作简单的替代,用宏来替代计算多项式5*X*x4-5*x+5的值的函

数f,正确的宏定义语句为()。

A、^definef(x)5*x*x+5*X+5

B、#definef5*x*x+5*x+5

C、^definef(a)(5*a”a+5*a+5)

D、#define(5*x*x+5+x+5)f(x)

【答案】C

15、以下程序运行后的输出结果是。

main()

(

char*s="abcdc";

s+=2;

printf("%ld\nM,s);

)

A、cde

B、字符c的ASCH码值

C、字符c的地址

D、出错

【答案】C

16、下面程序

main()

(

inty=9;

for(;y>0;y-)

(

if(y%3=0)

(

printf('%cT,-y);

continue;

)

)

}

的输出是O

A、741

B、852

C、963

D、875421

【答案】B

17、若调用一个函数,且此函数中没有return语句,则正确的说法是________。

A、该函数没有返回值

B、该函数返回若二个系统默认值

C、能返回一个用户所希望的函数值

D、返回一个不确定的值

【答案】D

18、以下程序的输出结果是.

#include<stdio.h>

voidmain()

(

inti,x[3][3]={1,2,3,4,5,6,7,8,9};

for(i=0;i<3;i+-)printf("%d,n,x[i][i]>;

printf("\n");

)

A、1,5,9,

B、1,4,7,

C、3,5,7,

D、3,6,9,

【答案】A

19、设有以下定义和语句:charstr[20]—"program",*p;p=str:则以下叙述

中正确的是_______o

A、*P与str[0]的值相等

B、str与P的类型完全相同

C、str数组长度和P所指向的字符串长度相等

D、数组str中存放的内容和指针变量P中存放的内容相同

【答案】A

20、若有以下说明语句:

structstudent

(

intnum;

charname[];

floatscore;

}stu;

则下面的叙述不正确的是:()

A、struct是结构体类型的关键字

B、structstudent是用户定义的结构体类型

C、num,score都是结构体成员名

D、stu是用户定义的结构体类型名

【答案】D

21、以下数值中,不正确的八进制数或十六进制数是o

A、0x16

B、016

C、-16

D、Oxaaaa

【答案】C

22、设x的值为4,则未达式y=(++x)+(++x)+(++x)后,y的值是。

A、12

B、18

C、16

D、21

【答案】D

23、以下叙述正确的是________。

A、C程序总是以main。作为程序执行的起始行

B、main。函数若天带参数,其后面的一对圆括号可省略

C、函数体内的定义语句和可执行语句允许任意交替出现

D、C语言中的语句之间必须用分号作为分隔符

【答案】A

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

A、只是表达形式不同

B、do…while结构中的语句

温馨提示

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

评论

0/150

提交评论