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

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

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

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

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

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

二级C语言-4-2

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

一、选择题

1. 

下列选项中不属于软件生命周期开发阶段任务的是  。

∙A.软件测试 

∙B.概要设计 

∙C.软件维护 

∙D.详细设计

A  B  C  D  

    分值:

2

答案:

C

[解析]软件的生命周期可分为软件定义、软件开发及软件运行维护3个阶段。

其中软件定义阶段的主要工作有可行性研究与计划制定和需求分析等;软件开发阶段的主要工作有概要设计、详细设计和测试等;软件运行维护阶段的主要工作是软件的运行及后期的维护等。

2. 

以下函数返回a所指数组中最大值所在的下标值,在下画线处应填入的内容是

  fun(int*a,intn)

  { inti,j=0,p;

   p=j;

   for(i=j;i<n;i++)

     if(a[i]>a[p])______;

  return(p);

  }

∙A.i=p 

∙B.a[p]=a[i] 

∙C.p=j 

∙D.p=i

A  B  C  D  

    分值:

2

答案:

D

[解析]该题目要求的是最大数的位置(下标)。

程序通过对a所指数组中的元素进行逐个比较,记录最大数的下标i,并把该下标记录在变量p中,所以,如果a[i]>a[p]关系成立,则应该把i的值赋给p,这样才满足题目的要求。

3. 

在C语言中,函数的隐含存储类别是()

∙**

∙**

∙**

D.无存储类别

A  B  C  D  

    分值:

1

答案:

A

4. 

有三个关系R、S和T如下:

  

  由关系R和S通过运算得到关系T,则所使用的运算为

∙A.并 

∙B.自然连接 

∙C.笛卡儿积 

∙D.交

A  B  C  D  

    分值:

1

答案:

D

[解析]在关系运算中,交的定义如下:

设R1和R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则为交运算,结果仍为度等于n的关系,其中,交运算的结果既属于R1,又属于R2。

5. 

已知a的ASCⅡ码为97,执行下面两个语句后,输出的结果为______。

  charc1=97;c2=98;

  printf("%d%c",c1,c2);

∙A.97 98 

∙B.97 b 

∙C.a 98 

∙D.a b

A  B  C  D  

    分值:

1

答案:

B

[解析]整型数据和字符数据可以通用,变量c1和c2被定义为字符型,语句c1=97和c2=98的作用相当于执行c1='a'和c2='b'两语句。

在输出语句中,%d%c是输出格式符,要求在相应位置上分别输出一个整数和一个字符。

6. 

下列选项中,能正确定义数组的语句是

∙A.intnum[0..2008]; 

∙B.intnum[]; 

∙C.intN=2008;  intnum[N]; 

∙D.#defineN2008  intnum[N];

A  B  C  D  

    分值:

2

答案:

D

[解析]定义数组时,数组大小只能是常量。

选项C中是变量,选项B中没有指定数组大小,所以选项C和B错误的。

选项A的表示方法显然是错误的。

选项D中的N是符号常量,满足数组定义的语法要求。

7. 

下列定义不正确的有______。

∙A.#definePI 3.141592 

∙B.#defineS345; 

∙C.intmax(x,y); intx,y; {} 

∙D.intmax(int,int);

A  B  C  D  

    分值:

1

答案:

C

[解析]定义函数时,函数头后不能加分号。

8. 

有以下程序:

  #include<stdio.h>

  voidfun(char*c,intd)

  {  *c=*c+1;d=d+1;

  printf("%c,%c,",*c,d);

  }

  main()

  { charb='a',a='A';

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

  }

  程序运行后的输出结果是

∙A.b,B,b,A 

∙B.b,B,B,A 

∙C.a,B,B,a 

∙D.a,B,a,B

A  B  C  D  

    分值:

2

答案:

A

[解析]函数fun的第一个参数传指针,可以将更改后的值传回调用函数,第二个参数传值,不能将更改后的值传回调用函数,故选A)。

9. 

以下叙述中正确的是( )。

∙A.调用printf函数时,必须要有输出项 

∙B.使用putchar函数时,必须在之前包含头文件stdio.h 

∙C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出 

∙D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码

A  B  C  D  

    分值:

1

答案:

B

[解析]本题考查了C语言的一些基本概念。

printf()函数可以只有控制项而没有输出项,例如,printf("Hello!

");,所以选项A)不正确。

C语言中不支持整数以十二进制输出,因此选项C)不正确。

getchar()函数从键盘读入一个字符,而不管该字符为数字还是字母,因此输入ASCII码的话,只能读到第1个数字字符,所以选项D)不正确。

故应该选择B),putchar是C语言中的库函数,使用时必须包含stdio.h。

10. 

以下程序的输出结果是

  #include<stdio.h>

  inta[3][3]={1,3,5,7,9,11,13,15,17,},*p;

  main()

  { p=(int*)malloc(sizeof(int));

  f(p,a);

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

  free(p);}

  f(int*s,intp[][3])

  { *s=p[1][1];}

∙A.1 

∙B.7 

∙C.9 

∙D.13

A  B  C  D  

    分值:

2

答案:

C

[解析]本题考查了二维数组元素引用的方法。

题中用动态存储分配函数malloc分配了一个int型数据长度大小的内存,然后指针p指向这段内存,函数f()中对p所指向的数据进行了赋值,p[1][1]为二维数组第二行第二列的元素,对应于实参a的元素9,所以输出结果为9。

11. 

设有intx=11;则表达式(x++*1/3)的值是______。

∙A.3 

∙B.4 

∙C.11 

∙D.12

A  B  C  D  

    分值:

1

答案:

B

12. 

若有以下程序段

  int m=0xabc,n=0xabc;

  m-=n;

  printf("%X\n".m);

  执行后输出结果是

∙A.0X0 

∙B.0x0 

∙C.0 

∙D.0XABC

A  B  C  D  

    分值:

1

答案:

C

[解析]本题考核的知识点是C语言中的自反赋值运算符。

 “m-=n”相当于“m=m-n”,两个相等的数相减,其值为0。

所以,C选项为所选。

13. 

在以下给出的表达式中,与while(E)中的(E)不等价的表达式是______。

∙A.(E>0||E<0) 

∙B.(E==0) 

∙C.(!

E==0) 

∙D.(E!

=0)

A  B  C  D  

    分值:

1

答案:

B

[解析]while语句中条件表达式E的值不为0即为真,认为满足条件,所以与B选项中表达式的含义正好相反,选择B选项。

14. 

有以下程序

  #include<stdio.h>

  voidfun(int*s,intn1,intn2)

  {

   inti,j,t;

   i=n1;j=n2;

   while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}

  }

  main()

  {

   inta[10]={1,2,3,4,5,6,7,8,9,0),k;

   fun(a,0,3);fun(a,4,9);fun(a,0,9);

   for(k=0;k<10;k++)printf("%d",a[k]);printf("\n");

  }

  程序运行的结果是  。

∙** 

∙** 

∙** 

**

A  B  C  D  

    分值:

1

答案:

C

[解析]fun()函数的功能为使数组中的元素逆序。

15. 

以下语句或语句组中,能正确进行字符串赋值的是________。

∙A.char*sp;*sp="right!

";

∙B.chars[10];s="right!

";

∙C.chars[10];*s="right!

";

∙D.char*sp="right!

";

A  B  C  D  

    分值:

2

答案:

D

16. 

有以下程序:

  #include<stdio.h>

  main()

  {FILE*pf;

  char*s1="China",*s2="Beijing":

  pf=fopen("abc.dat","wb+");

  fwrite(s2,7,1,pf);

  rewind(pf); /*文件位置指针回到文件开头*/

  fwrite(s1,5,1,pf);

  fclose(pf);

  }

  以上程序执行后abc.dat文件的内容是  。

∙A.China 

∙B.Chinang 

∙C.ChinaBeijing

∙D.BeijingChina

A  B  C  D  

    分值:

2

答案:

B

[解析]本题考查函数fwrite的使用。

函数fwrite的调用形式为:

intfwrita(char*pt,unsignedn,FILE*fp);其功能是把pt所指向的n*size个字节输出到fp所指文件中,第二次调用该函数时,从文件的第一个位置开始写入,之前已有的会被覆盖掉,如果第二次写入的长度没有第一次的长,则后面短出的部分保留原样。

17. 

下列叙述中正确的是______。

∙A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构 

∙B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况 

∙C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况 

∙D.循环队列中元素的个数是由队头指针和队尾指针共同决定的

A  B  C  D  

    分值:

4

答案:

D

[解析]循环队列有队头和队尾两个指针,但是循环队列仍是线性结构的,所以A错误;在循环队列中只需要队头指针与队尾两个指针来共同反映队列中元素的动态变化情况,所以B与C错误。

18. 

有以下程序:

  voidchange(intk[]){k[0]=k[5];)

  main()

  {intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;

  while(n<=4)(change(&x[n]);n++;}

  for(n=0;n<5;n++)printf("%d",x[n]);

  printf("\n");

  }

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

∙A.678910 

∙B.13579 

∙C.12345 

∙D.62345

A  B  C  D  

    分值:

2

答案:

A

[解析]本题主要考查数组元素的地址作为实参,当n=0时,把x[0]的地址传递给被调函数change(),即把形参k和实参x指向同一个存储单元,执行被调函数后k[0]=6,即x[0]=6;当n=1时,执行被调函数后x[1]=7,以此类推,最后得到x数组的值为6,7,8,9,10。

19. 

设有定义:

intk=1,m=2;noatf=7;则下列选项中错误的表达式是  。

∙A.k=k>=k 

∙B.-k++ 

∙C.k%int(f) 

∙D.k>=f>=m

A  B  C  D  

    分值:

1

答案:

C

[解析]在C语言中,求余运算符“%”两边的运算对象都应为整型数据,所以需要对变量f进行强制类型转换,正确的写法为k%(int)f。

在C语言中,逻辑运算符与赋值运算符、算术运算符、关系运算符之间从高到低的运算优先次序是:

!

(逻辑“非”)、算术运算符、关系运算符、&&(逻辑“与”)、‖(逻辑“或”)、赋值运算符。

根据运算符的优先级与结合性,对于选项A),先计算k>=k的值(为真,即1),再用1对k进行赋值。

对于选取项B),先计算k什的值,再对其取负数。

对于选项D),先计算k>=f的值(为假,即0),再用0与m进行比较,故最终结果为0。

20. 

以下选项中,不能正确赋值的是______。

∙A.chars1[10];s1="chest"; 

∙B.chars2[]={'C','t','e','s','t'}; 

∙C.chars3[20]="Chest";   

∙D.char*s4="Ctest\n"

A  B  C  D  

    分值:

1

答案:

A

[解析]语言中不能将字符串常量直接赋给数组。

但在赋初值时可以。

21. 

下列叙述中正确的是  。

∙A.算法的执行效率与数据的存储结构无关 

∙B.算法的空间复杂度是指算法程序中指令(或语句)的条数 

∙C.算法的有穷性是指算法必须能在执行有限个步骤之后终止 

∙D.以上3种描述都不对

A  B  C  D  

    分值:

2

答案:

C

[解析]算法的执行效率与数据的存储结构密切相关。

算法的空间复杂度是指算法执行过程中所需的存储空间。

22. 

下列叙述中不正确的是  。

∙A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 

∙B.在C的函数中,最好使用全局变量 

∙C.外部变量可以在函数之间传递数据 

∙D.自动变量实质上是一个函数内部的局部变量

A  B  C  D  

    分值:

2

答案:

B

[解析]编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。

在考虑内存不定的情况下,最好使用全局变量。

23. 

以下有4组用户标识符,其中合法的一组是______。

∙A.For   -sub  Case 

∙B.4d  DO  Size 

∙C.f2_G3  IF  abc 

∙D.WORD  void  define

A  B  C  D  

    分值:

2

答案:

C

[解析]选项A中有非法标识符-sub,选项B中有非法标识符4d,选项D中有C语言保留字void。

24. 

对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是

∙A.快速排序 

∙B.冒泡排序 

∙C.直接插入排序 

∙D.堆排序

A  B  C  D  

    分值:

2

答案:

D

[解析]在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都为n(n-1)/2,堆排序需要的比较次数为nlog2n。

25. 

有下列函数:

  intfun(char*s)

  {char*t=s;

  while(*t++);

  return(t-s);

  }

  该函数的功能是  。

∙A.比较两个字符串的大小 

∙B.计算s所指字符串占用内存字节的个数 

∙C.计算s所指字符串的长度 

∙D.将s所指字符串复制到字符串t中

A  B  C  D  

    分值:

2

答案:

C

[解析]在函数fun(char*s)中,首先用字符指针变量t指向s,而循环语句while(*t++);的功能是使指针变量t指向字符串变量s的末尾,这时退出循环,因而语句return(t-s);返回的就是字符串s所指字符串的长度。

26. 

已有定义:

chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是

∙A.数组a和b的长度相同 

∙B.a数组长度小于b数组长度 

∙C.a数组长度大于b数组长度 

∙D.上述说法都不对

A  B  C  D  

    分值:

1

答案:

C

[解析]a数组存放的是字符串,系统会自动在字符串的最后加上一个“\0”,所以a数组的长度为4,而b数组的长度为3,故a数组长度大于b数组长度。

27. 

在关系数据库模型中,通常可以把( )称为属性,其值称为属性值。

∙A.记录 

∙B.基本表 

∙C.模式 

∙D.字段

A  B  C  D  

    分值:

1

答案:

D

[解析]数据库表中字段转化为属性,把记录的类型转化为关系模式。

28. 

执行以下程序时输入1234567<CR>,则输出结果是

  #include<stdio.h>

  main()

  {inta=1,b;

  scanf("%3d%2d",&a,&b);

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

  }

∙A.12367 

∙B.12346 

∙C.12312 

∙D.12345

A  B  C  D  

    分值:

1

答案:

D

[解析]scanf函数中的格式控制说明为“%3d%2d”,分别选中输入中的3位和2位,因此a=123,b=45。

因此正确答案为D)。

29. 

以下能正确定义的数组并正确赋初值的语句是

∙A.intN=5,b[N][N];        

∙**a[1][2]={{1},{3}};    

C.intc[2][]={{1,2},{3,4}};    

∙D.intd[3][2]={{1,2},{3,4}};

A  B  C  D  

    分值:

1

答案:

D

[解析]本题考核的知识点是二维数组的定义以及数组元素初始化。

选项A中,数组的长度使用了变量N,而在c中是不能用变量来定义数组的的长度的,故选项A错误。

在c语言中,给二维数组赋初值时,行数不能超过定义的行数,每行的初值个数不能超过定义时的列数,故选项B错误。

选项C数组的第二维下标缺省,而在C中,数组的第二维下标不能缺省,故选项C错误。

所以,D选项为所选。

30. 

为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为    

∙A.PAD图 

∙B.N-S图 

∙C.结构图 

∙D.数据流图

A  B  C  D  

    分值:

1

答案:

B

31. 

若有语句:

char*line[5];,以下叙述中正确的是  。

∙A.定义line是一个数组,每个数组元素是一个基类型为char的指针变量 

∙B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 

∙C.定义line是一个指针数组,语句中的*号称为间址运算符 

∙D.定义line是一个指向字符型函数的指针

A  B  C  D  

    分值:

2

答案:

A

[解析]C语言中[]比*优先级高,因此line先与[5]结合,形成line[5]形式,这是数组形式,它有5个元素,然后再与line前面的“+”结合,表示此数组是一个指针数组,每个数组元素都是一个基类型为char的指针变量。

32. 

下列叙述中正确的是

∙A.在面向对象的程序设计中,各个对象之间具有密切的联系 

∙B.在面向对象的程序设计中,各个对象都是公用的 

∙C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小 

∙D.上述三种说法都不对

A  B  C  D  

    分值:

2

答案:

C

[解析]本题考查了面向对象的基本概念。

  [解题要点]在面向对象程序设计中所使用的对象,其数据和操作是作为平等伙伴出现的。

因此,对象具有很强的自含性,此外,对象所固有的封装性,使得对象的内部实现与外界隔离,具有较强的独立性。

  [考点链接]对象的定义。

33. 

在数据库设计中,将E-R图转换为关系模式的过程属于  。

∙A.需求分析阶段 

∙B.逻辑设计阶段 

∙C.概念设计阶段 

∙D.物理设计阶段

A  B  C  D  

    分值:

1

答案:

B

[解析]数据库设计阶段主要包括需求分析、概念设计、逻辑设计和物理设计。

其中,逻辑设计的主要工作是将E-R图转换为关系模式。

34. 

有以下程序

  main()

  { intx[]={1,3,5,7,2,4,6,0},i,j,k;

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

  for(j=2;j>=i;j--)

  if(x[j+1]>x[j]) {k=x[j]; x[j]=x[j+1]; x[j+1]=k; }

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

  for(j=4;j<7-i;j++)

  if(x[j]>x[j+1])

  {k=x[j];x[j]=x[j+1]; x[j+1]=k; }

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

  printf("%d",x[i]);

  printf("\n");

  }

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

∙A.75310246 

∙B.01234567 

∙C.76310462

∙D.13570246

A  B  C  D  

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

当前位置:首页 > 人文社科 > 法律资料

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

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