二级C语言276真题含答案与解析交互.docx

上传人:b****6 文档编号:13845256 上传时间:2023-06-17 格式:DOCX 页数:27 大小:25.58KB
下载 相关 举报
二级C语言276真题含答案与解析交互.docx_第1页
第1页 / 共27页
二级C语言276真题含答案与解析交互.docx_第2页
第2页 / 共27页
二级C语言276真题含答案与解析交互.docx_第3页
第3页 / 共27页
二级C语言276真题含答案与解析交互.docx_第4页
第4页 / 共27页
二级C语言276真题含答案与解析交互.docx_第5页
第5页 / 共27页
二级C语言276真题含答案与解析交互.docx_第6页
第6页 / 共27页
二级C语言276真题含答案与解析交互.docx_第7页
第7页 / 共27页
二级C语言276真题含答案与解析交互.docx_第8页
第8页 / 共27页
二级C语言276真题含答案与解析交互.docx_第9页
第9页 / 共27页
二级C语言276真题含答案与解析交互.docx_第10页
第10页 / 共27页
二级C语言276真题含答案与解析交互.docx_第11页
第11页 / 共27页
二级C语言276真题含答案与解析交互.docx_第12页
第12页 / 共27页
二级C语言276真题含答案与解析交互.docx_第13页
第13页 / 共27页
二级C语言276真题含答案与解析交互.docx_第14页
第14页 / 共27页
二级C语言276真题含答案与解析交互.docx_第15页
第15页 / 共27页
二级C语言276真题含答案与解析交互.docx_第16页
第16页 / 共27页
二级C语言276真题含答案与解析交互.docx_第17页
第17页 / 共27页
二级C语言276真题含答案与解析交互.docx_第18页
第18页 / 共27页
二级C语言276真题含答案与解析交互.docx_第19页
第19页 / 共27页
二级C语言276真题含答案与解析交互.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

二级C语言276真题含答案与解析交互.docx

《二级C语言276真题含答案与解析交互.docx》由会员分享,可在线阅读,更多相关《二级C语言276真题含答案与解析交互.docx(27页珍藏版)》请在冰点文库上搜索。

二级C语言276真题含答案与解析交互.docx

二级C语言276真题含答案与解析交互

二级C语言-276

(总分100,做题时间90分钟)

选择题

1. 

软件生命周期中,花费最多的阶段是______。

A 详细设计

B 软件编码

C 软件测试

D 软件维护

    分值:

2.5

答案:

D

[解析]本题考查对软件生命周期的理解,软件生命周期整体上可分为定义阶段、开发阶段和维护阶段。

其中定义阶段包括可行性研究与计划制订和需求分析;开发阶段包括概要设计、详细设计、开发和测试;维护阶段是一个单独阶段,不包含在开发阶段内,它是所花费用最多的一个阶段。

2. 

视图设计一般有3种设计次序,下列不属于视图设计次序的是______。

A 自顶而下

B 由内向外

C 由外向内

D 自底向上

    分值:

2.5

答案:

C

[解析]视图设计的设计次序分3种:

自顶向下、自底向上和由内向外。

它们为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握。

3. 

在深度为5的满二叉树叶中,叶子结点的个数为______。

A 32

B 31

C 16

D 15

    分值:

2.5

答案:

C

[解析]根据二叉树的性质及定义,一棵深度为k且有2k-1个结点的二叉树为满二叉树。

满二叉树的叶子结点为最后一层的结点数,又根据满二叉树的性质,在满二叉树的第i层上至多有2i-1个结点,因此深度为5的满二叉树的叶子结点数为25-1=16个。

4. 

下列数据结构中,能用二分法进行查找的是______。

A 顺序存储的有序线性表

B 结性链表

C 二叉链表

D 有序线性链表

    分值:

2.5

答案:

A

[解析]二分法查找只用于顺序存储的有序线性表,而顺序查找用于顺序存储的非有序线性表和线性链表。

5. 

以下叙述中错误的是______。

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

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

C 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

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

    分值:

2.5

答案:

C

[解析]数组下标从0开始,当数组元素的下标超出了定义的范围时,系统不会出“下标越界”的信息,运行会出错,因此在编程时务必检查下标是否越界。

6. 

以下只有在使用时才为该类型变量分配内存的存储类型说明是______。

A auto和static

B auto和register

C register和static

D extern和register

    分值:

2.5

答案:

B

[解析]在用静态static与外部extern定义变量时,系统立刻给其分配内存,而定义自动类auto与强制放入寄存器register类型变量时,只有当使用时才分配内存。

7. 

若变量已正确定义为int型,要给a、b、c输入数据,正确的输入语句是______。

A read(a,b,c);

B scanf("%d%d%d",a,b,c);

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

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

    分值:

2.5

答案:

D

[解析]scanf是键盘输入语句,%d是打印十进制文件,&x就是把你从键盘输入的值赋给x后面依此类推,因此正确答案为D。

8. 

若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式a<b?

a:

c<d?

c:

d的值是______。

A 1

B 2

C 3

D 4

    分值:

2.5

答案:

C

[解析]本题考查三目运算符a<b?

a:

c<d?

c:

d也可写成a<b?

a:

(c<d?

c:

d),所以根据优先级,先算括号内的,c小于d为真取c的值,再看a小于b为假,所以取c的值。

9. 

下列叙述中错误的是______。

A 线性表是由n个元素组成的一个有限序列

B 线性表是一种线性结构

C 线性表的所有结点有且仅有一个前件和后件

D 线性表可以是空表

    分值:

2.5

答案:

C

[解析]线性表可以是空表,在线性表中,第一个结点没有前驱结点(前件),最后一个结点没有后继结点,其他结点有且只有一个前驱点(后继点)。

10. 

下列叙述中正确的是______。

A 用E-R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系

B 用E-R图只能表示实体集之间一对一的联系

C 用E-R图只能表示实体集之间一对多的联系

D 用E-R图表示的概念数据模型只能转换为关系数据模型

    分值:

2.5

答案:

A

[解析]用E-R图可以描述实体及其相互之间的联系,还可以描述多个实体集之间的联系和一个实体集内部实体之间的联系。

用E-R图表示的概念数据模型不仅能转换为关系数据模型,还可以转换为其他数据模型,如网状模型和层次模型等。

所以A的说法正确。

11. 

有以下程序:

#include<stdio.h>

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10),*p=a;

printf("%d\n",*(p+2));

}

程序的输出结果是______。

A 3

B 4

C 1

D 2

    分值:

2.5

答案:

A

[解析]*p=a;p指向首地址,*(p+2))往后移动两个元素,指向3,所以正确答案为A。

12. 

表示关系X<=Y<=Z的C语言表达式为______。

A (X<=Y)&&(Y<=Z)

B (X<=Y)AND(Y<=Z)

C (X<=Y<=Z)

D (X<=Y)&(Y<=Z)

    分值:

2.5

答案:

A

[解析]题中X<=Y<=Z的意思为X<=Y并且Y<=Z,在C语言中,要表示“且”的关系,应用“与”逻辑运算符,即“&&”,故选择A选项。

13. 

设有如下定义:

intarr[]={6,7,8,9,10};

int*ptr;

ptr=arr;

*(ptr2)=2;

printf("%d,%d\n",*ptr,*(ptr2));

则下列程序段的输出结果为______。

A 8,10

B 6,8

C 7,9

D 6,2

    分值:

2.5

答案:

D

[解析]程序中ptr指针指向数组arr的首地址,*ptr=arr[0]=6,*(ptr2)=2,故选D。

14. 

若变量a、b、t已正确定义,要将a和b中的数进行交换,以下选项中不正确的语句组是______。

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;

    分值:

2.5

答案:

C

[解析]C项开始a=t,a的值就没了,a的值就被t的值代替,最后b=a,b中的值拿到的是t中的值。

15. 

数字字符0的ASCII值为48,运行以下程序的输出结果是______。

main()

{chara="1",b="2";

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

A 3,2

B 50,2

C 2,2

D 2,50

    分值:

2.5

答案:

C

[解析]b++是先用表达式的值然后自增1,因此表达式值为"2",b为"3";b-a="3"-"1"=2,因此最后输出的结果为2,2,前一个为字符2,后一个为数字2。

16. 

设有如下定义:

int(*ptr)();

则以下叙述中正确的是______。

A ptr是指向一维组数的指针变量

B ptr是指向int型数据的指针变量

C ptr是指向函数的指针,该函数返回一个int型数据

D ptr是一个函数名,该函数的返回值是指int型数据的指针

    分值:

2.5

答案:

C

[解析]本题中int(*ptr)()的含义是指向函数的指针变量,其为指向函数的指针变量,该函数返回一个int型数据,故选择C选项。

17. 

设有定义的语句:

“charc1=92,c2=92;”,则以下表达式中的值为零的是______。

A c1^c2

B c1&c2

C ~c2

D c1|c2

    分值:

2.5

答案:

A

[解析]当值相同时按位异或,则为0,按位或与按位与时仍不变,负数也为非0。

18. 

以下程序的输出结果是______。

voidfun(int*a,inti,intj)

{intt;

if(i<j)

{t=a[i];a[i]=a[j];a[j]=t;

i++;j--;

fun(a,i,j);

}

}

main()

{intx[]={2,6,1,8},i;

fun(x,0,3);

for(i=0;i<4;i++)printf("%2d",x[i]);

printf("\n");

}

A 1,2,6,8

B 8,6,2,1

C 8,1,6,2

D 8,6,1,2

    分值:

2.5

答案:

C

[解析]本题用了函数调用,fun中if语句成立则进行i,j的交换,用到主函数中则为把下标0、3,1、2互换,因此,当执行完后x的数组为8,1,6,2,故选择C选项。

19. 

若变量已正确定义为float型,要通过输入语句:

scanf("%f%f%f",&a,&b,&c);给a赋值11.0,b赋值22.0,c赋值33.0,不正确的输入形式是______。

A 112233

B 11.0,22.0,33.0

C 11.022.033.0

D 1122

    分值:

2.5

答案:

B

[解析]B选项中不应该加“,”号。

20. 

有以下程序:

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序运行后,若从键盘输入(从第1列开始)

123<回车>

45678<回车>

则输出结果是______。

A 1267

B 1256

C 1278

D 1245

    分值:

2.5

答案:

D

[解析]scanf函数读取的是char型数据,所以回车时输入的换行符也是有效字符。

于是c1,c2,c3,c4的内容分别是1,2,3,"\n"。

21. 

执行下面的程序后,a的值为______。

main()

{inta,b;

for(a=1,b=1;a<=10;a++)

{if(b%3==1)

{b+=3;

continue;}

b-=5;}}

A 7

B 8

C 9

D 10

    分值:

2.5

答案:

D

[解析]本题考查continue的用法,continue语句的作用是结束本次循环,直接进行下次循环。

所以在程序中,只有当a=10时,才退出循环,故选择D选项。

22. 

以下程序执行后sum的值是______。

main()

{inti,sum;

for(i=1;i<6;i++)sum+=i;

printf("%d\n",sum);

}

A 15

B 14

C 不确定

D 0

    分值:

2.5

答案:

C

[解析]sum+=i等价于sun+i,在本题中sum没有赋初值,而题中只输出sum的值,因此整个结果为不确定值。

23. 

若有运算符:

>、=、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为______。

A %、sizeof、>、<<、=

B sizeof、%、>、=、<<

C sizeof、<<、>、%、=

D sizeof、%、<<、>、=

    分值:

2.5

答案:

D

[解析]主要考查运算符的优先级。

sizeof的优先级最高,其次是%<<、>,优先级最低的是“=”。

24. 

为表示关系:

x≥y≥z,应使用的C语言表达式是______。

A (x>=y)&&(y>=z)

B (x>=y)AND(y>=x)

C (x>=y>=z)

D (x>=y)&(y>=z)

    分值:

2.5

答案:

A

[解析]C语言中用“&&”作两个表达式的连接。

25. 

执行下列程序中的输出语句后,a的值是______。

main()

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A 17

B 37

C 6

D 13

    分值:

2.5

答案:

C

[解析]本题考查逗号表达式。

程序输出时输出一个%d,所以输出第一个a的值与后续无关。

26. 

若i、j已定义成int型,则下列程序段中内循环体的总执行次数是______。

for(i=6;i>0;i--)

for(j=0;j<4;j++){…}

A 20

B 24

C 25

D 30

    分值:

2.5

答案:

B

[解析]本题考查for循环的使用。

对于第1个for循环,任何一个i,内层j的循环都要使j=0到3,j=4时不符合,所以退出j循环;然后i减1,j仍然要从0~3,j=4时退出j循环直到i变成0,退出i循环。

第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

27. 

设有程序段:

intk=12;

while(k=1)k=k-1;

则下列描述中正确的是______。

A while循环执行10次

B 循环是无限循环

C 循环体语句一次也不执行

D 循环体语句执行一次

    分值:

2.5

答案:

C

[解析]本题考查while,while循环表达式k=1是个赋值表达式而不是逻辑表达式,k的初值为12不符合循环条件,所以循环体语句一次也不执行。

28. 

在执行完下列的C语言句段之后,则B的值是______。

chara="A";

intb;

B=((34&&56)&&(a<"b"));

A 0

B 1

C TRUE

D FALSE

    分值:

2.5

答案:

B

[解析]本题考查3个知识点:

将一个字符赋给一个字符变量时,是将该字符对应的ASCII码存储到内存单元中;常见ASCII码的值如A和a;只要逻辑与运算符&&的两个运算对象都为真时,返回值就是1。

29. 

有下列函数定义:

fun(floath)

{printf("%f,%f\n",h,h*h);}

该函数的类型是______。

A int类型

B float类型

C void类型

D 函数无类型说明,定义有错

    分值:

2.5

答案:

A

[解析]本题考查函数值的类型,在函数定义时,由于函数没有说明其类型,系统默认一律自动按整型(int)处理。

30. 

有下列程序段:

intn,t=1,s=0;

scanf("%d",&n);

do{s=s+t;t=t-2;}while(t!

=n);

为使此程序段不陷入循环,从键盘输入的数据应该是______。

A 任意正奇数

B 任意负偶数

C 任意正偶数

D 任意负奇数

    分值:

2.5

答案:

D

[解析]本题主要考查do-while循环,因为变量t的初始值等于1,经过第一次do-while循环后,执行t=t-1这条语句一次,所以变量t的值为-1,判断关系表达式t!

=n是否成立,如果关系表达式成立,则执行第二次循环,如果关系表达式不成立,退出循环。

由此可见,只要输入变量n的值为负奇数,则一定会使t!

=n成立,故退出do-while循环。

31. 

若有说明语句:

double*p,a;则通过scanf语句正确给输入项读入数据的程序段是______。

A *p=&a;scanf("%1f",p);

B *p=&a;scanf("%f",p);

C p=&a;scanf("%1f",*p);

D p=&a;scanf("%1f",p);

    分值:

2.5

答案:

D

[解析]double*p,a定义了一个指向双精度型的指针变量p和双精度型变量a,p=&a表示将变量a的地址赋给指针变量p;scanf("%1f",p)表示用键盘输入的数赋给指针变量p所指向的地址单元中,scanf()函数要求在输入double型数据时,格式控制符必须用%1f。

否则,数据不能正确输入。

所以选项D正确。

32. 

下列程序的输出结果是______。

#include<stdio.h>

main()

{inta[2][3]={{1,2,3},{4,5,6}},(*p)[3],i;p=a;

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

{if(i<2)

p[1][i]=p[1][i]-1;

else

p[1][i]=1;

}

printf("%d\n",a[0][1]+a[1][1]+a[1][2]);

}

A 8

B 7

C 12

D 9

    分值:

2.5

答案:

B

[解析]本题考查for循环及if…else语句嵌套,第1次执行for循环,p[1][0]=p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,p[1][2]=1,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。

33. 

若有以下程序:

#include<stdio.h>

voidprtv(int*x)

{printf("%d\n",++*x);}

main()

{inta=25;

prtv(&a);

}

程序的输出结果是______。

A 23

B 24

C 25

D 26

    分值:

2.5

答案:

D

[解析]先取a变量的地址,送入子程序。

然后输出的时候是++*X,其中的*X的意思是25,也就是a的值,然后加++,就是26。

最后,输出26。

34. 

设x=015,则x=x^017的值是______。

A 00001111

B 11111101

C 00000010

D 11000000

    分值:

2.5

答案:

C

[解析]本题考查按位异或运算,异或就是相同为0,不同为1(化为二进制00001101),017的二进制为0000011111,两者异或结果为00000010。

35. 

若fp是指向某文件的指针,且尚未读到文件末尾,则函数feof(fp)的返回值是______。

A EOF

B -1

C 非零值

D 0

    分值:

2.5

答案:

D

[解析]本题考查feof(tp)函数,其功能是:

测试所指的文件的位置指针是否已达到文件尾,如果已达到文件尾,则函数返回非0值;否则返回0,表示文件未结束。

36. 

设变量a、b、c、d和y都已正确定义并赋值。

若有以下if语句:

if(a<b)

if(c==d)y=0;

elsey=1;

该语句所表示的含义是______。

A y=0,a<b且c=dy=1,a≥b

B y=0,a<b且c=dy=1,a≥b且c≠d

C y=0,a<b且c=dy=1,a<b且c≠d

D y=0,a<b且c=dy=1,c≠d

    分值:

2.5

答案:

C

[解析]语句“if(c==d)y=0;elsey=1;”是if(a<b)语句的一个子句。

所以整个语句表达式的意思是:

在a<b的情况下,如果c=b,则y=0,否则y=1;如果a<b,则执行第2个if语句,如果c等于d,那么y=0,如果c不等于d,那么y=1,所以,选项C为正确答案。

37. 

下列程序的运行结果是______。

#include<stdio.11>

voidmain()

{ints=0,k;

for(k=7;k>1;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 无输出结果

    分值:

2.5

答案:

B

[解析]运行程序,当k=7时switch(7)执行case:

7,s++后s=1,break跳出。

k--,k=7继续循环switch(6),执行case6;直接跳出循环,k--变成5,继续循环switch(5),执行case5后面的语句s+=2,也相当于s=s+2,此时s为3,break跳出,k变为4,继续循环,执行case4为空,继续执行case7;s++为4跳出循环,k--变为3,继续循环,执行case3,空语句往下执行case6,跳出,k--为2,继续循环,执行case2;空语句往下执行case3,空语句再执行case7,跳出循环,k--为1不符合循环,退出,此时s=4。

38. 

运行下列程序时,若输入的数据为“1,2,3”,则输出结果是______。

main()

{floata,b,c,t;

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

if(a<b)

{t=a;a=b;b=t;}

if(a<c)

{t=a;a=c;c=t;}

it(b<c)

{t=b;b=c;c=t;}

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

}

A 1.002.003.00

B 1.003.002.00

C 132

D 3.000002.000001.00000

    分值:

2.5

答案:

D

[解析]本题考查if语句。

第1个if语句,如果a<b,则a与b交换;第2个if语句,如果a<c,则a与c交换;第3个if语句,如果b<c,则b与c交换。

3个if语句结合起来实现的功能就是将a、b、c按从大到小排序。

39. 

下列叙述中正确的是______。

A 只能在循环体内和switch语句体内使用break语句

B cotinue语句的作用是结束整个循环的执行

C 在循环体内使用break语句或continue语句的作用相同

D 从多层循环嵌套中退出时,只能使用goto语句

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2