2022-2023年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第1页
2022-2023年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第2页
2022-2023年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第3页
2022-2023年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第4页
2022-2023年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年内蒙古自治区兴安盟全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下程序的输出结果是()。#defineM(x,y,z)x*y+zmain(){inta=l,b=2,c=3;printf("%d\n",m(a+b.b+c,c+a));}A.19B.17C.15D.12

2.若有定义和语句:int**pp),*P,a=20,b=10;pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,*PP);则输出结果是()。A.20,10B.20,20C.10,20D.10,10

3.在面向对象方法中,不属于“对象”基本特点的是A.一致性B.分类性C.多态性D.标识唯一性

4.设变量已正确定义并赋值,以下正确的表达式是()。A.x=y+z+5.++yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.0

5.

6.树是结点的集合,它的根结点数目是()。

A.有且只有1B.1或多于1C.0或1D.至少2

7.

8.在进行单元测试时,常用的方法是

A.采用白盒测试,辅之以黑盒测试B.采用黑盒测试,辅之以白盒测试C.只使用白盒测试D.只使用黑盒测试

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

A.54321

B.12345

C.12345

D.543210main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d"",k);}

10.设一个广义表中结点的个数为n,则求广义表深度算法的时间复杂度为____。

A.O(1)B.O(n)C.O(n2)D.O(log2n)

11.

12.用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。

A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都要修改D.队头,队尾指针都可能要修改

13.以下关于C语言的叙述中正确的是()。

A.C语言中的注释不可以夹在变量名或关键字的中间

B.C语言中的变量可以在使用之前的任何位置进行定义

C.在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致

D.C语言的数值常量中夹带空格不影响常量值的正确表示

14.以下符号中不能作为标识符的是()。A._256B.voidC.scanfD.Struct

15.下列关于宏的叙述中正确的是()。

A.宏替换没有数据类型限制

B.宏定义必须位于源程序中所有语句之前

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

D.宏调用比函数调用耗费时间

16.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

17.允许对队列进行的操作有()。

A.对队列中的元素排序B.取出最近进队的元素C.在队头元素之前插入元素D.删除队头元素

18.设有定义“intk=3,i=2;”,以下选项中,变量k的值与其他3个不同的是()。

A.k-=i;B.k=--i;C.k=i-1;D.k=i--;

19.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'3'){case0:case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+3);case4:putchar(c+3);break;}}printf("\n");}从第一列开始输入数据(<CR>代表…个回车符):3845<CR>,则狴序输出结果为()。

A.77889B.77868C.776810D.7.78866e+007

20.树的度为3,且有9个度为3的节点,5个度为1的节点,但没有度为2的节点。则该树中的叶子节点数为()。

A.18B.33C.19D.32

二、2.填空题(20题)21.以下程序的功能是找出三个字符串中的最大串。

【】

#include<stdio.h>

main()

{inti;

charstring[20],str[3][20];

(i=0;i<3;i++)gets(【】);

if(strcmp(str,str[0],str[1]>0)strcpy(string,str[0]);

elsestrcpy(string,str[1]);

if(strcmp(str[2],string)>【】)srtcpy(string,str[2]);

printf("Thelargeststringis\n%s\n",string);

}

22.下面程序的输出结果是【】。

charb[]="ABCD";

main()

{char*chp;

for(chp=b;*chp;chp+=2)printf("%s",chp);

printf("\n");

}

23.在一棵二叉树上第6层的结点个数最多是______个。

24.在面向对象程序设计中,从外面看只能看到对象有外部特征,而不知道也无须知道数据的具体结构以及实现操作的算法,这称为对象的______。

25.在程序设计阶段应该采取______和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。

26.以下程序的输出结果是【】。

#include<stdio.h>

main()

{inti;

for(i='a';i<'f';i++,i++)printf("%c",i-'a'+'A');

printf("\n");

}

27.某二叉树中度为2的结点有n个,则该二叉树中有【】个叶子结点。

28.已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元______。

29.数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。

30.一个算法的空间复杂度是指该算法所耗费的【】。

31.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。

main()

{inti,a[20],sum,count;

sum=count=0;

for(i=0;i<20;i++)scanf("%d",(【】);

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

{if(a[i]>0)

{count++;

sum+=(【】);

}

}

printf("sum=%d,count=%dhn",sum,count);

}

32.下面程序的运行结果是【】。

main()

{inti=0,j=10,k=2,s=0;

for(;;)

{i+=k;

if(i>j)

{printf("%d\n",s);

break;}

s+=i;}}

33.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是______。

34.以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大值,输出到屏幕上。请填空。

main()

{intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;py=&y;pz=&z;pmax=&max;

【】;

if(*pmax<*py)*pmax=*py;

if(*pmax<*pz)*pmax=*pz;

printf("max=%d\n",max);}

35.算法的复杂度主要包括【】复杂度和空间复杂度。

36.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。

intfun(intn)

{intm=0,f=1,i;

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

m+=i*f;

f=【】;

returnm;

}

main()

{printf("m=%d\n",【】);}

37.以下程序的输出结果是()。

#include<stdio.h>

voidfun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(3);printf("\n");

}

38.已定义charch='$';inti=1,j;,执行j!=ch&&i++以后,i的值为______。

39.对于长度为n的顺序存储的线性表,当随机插入和删除—个元素时,需平均移动元素的个数为【】。

40.当所有结点的权值都相等时,用这些结点构造的二叉排序树是【】。

三、1.选择题(20题)41.以下程序运行后的输出结果是______。intd=1;fun(intp){staticintd=d;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

42.下列叙述中,正确的是

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

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

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

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

43.有以下函数:intfun(char*s){char*t=s;while(*t++);return(t-s)该函数的功能是______。

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

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

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

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

44.关系数据库管理系统能实现的专门关系运算包括()。

A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表

45.以下不属于对象的基本特点的是()

A.分类性B.多态性C.继承性D.封装性

46.数据库系统的核心是()

A.数据库B.数据库管理系统C.模拟模型D.软件工程

47.设有数组定义:chararray[]="China";则数组array所占的空间为()个字节。

A.4B.5C.6D.7

48.在C语言中,函数返回值的类型最终取决于()。

A.函数定义时的函数首部所说明的函数类型

B.return语句中表达式值的类型

C.调用函数时主调函数所传递的实参类型

D.函数定义时形参的类型

49.结构化程序设计的核心和基础是()。

A.结构化分析方法B.结构化设计方法C.结构化设计理论D.结构化编程方法

50.有以下程序:#include<stdio.h>main(){inti,s=0;for(i=1;i<10;i+=2)s+=i+1;printf("%d\n",s);}程序执行后的输出结果是()。

A.正整数1~9的累加和B.正整数1~10的累加和C.正整数1~9中奇数之和D.正整数1~10中偶数之和

51.下列工具中为需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

52.下列叙述中正确的是A.C语言中既有逻辑类型也有集合类型

B.C语言中没有逻辑类型但有集合类型

C.C语言中有逻辑类型但没有集合类型

D.C语言中既没有逻辑类型也没有集合类型

53.有以下程序:intf(intb[][4]){inti,j,s=0;for(j=0;i<4;i++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4,},{0,2,4,6},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(a));}执行后的输出结果是()。

A.12B.11C.18D.16

54.以下语句或语句组中,能正确进行字符串赋值的是______。A.char*sp;*sp="right!";

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

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

D.char*sp="right!";

55.设有定义:charp[]={'1','2','3'},*q=p;,以下不能计算出一个char型数据所占字节数的表达式是

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

56.数据库设计包括两个方面的设计内容,它们是()

A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计

57.下列叙述中,正确的一条是()

A.语句“goto12;”是合法的

B.for(;;)语句相当于while(1)语句

C.if(表达式)语句中,表达式的类型只限于逻辑表达式

D.break语句可用于程序的任何地方,以终止程序的执行

58.以下选项中可以作为C语言中合法整数的是______。

A.10110BB.386C.0XffaD.x2a2

59.有以下程序:main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,B);}程序运行后的输出结果是()。

A.6,1B.2,1C.6,0D.2,0

60.下列程序的输出结果是()。#include<stdio.h>intb=2;intfunc(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&a);printf("%d\n",res);}

A.4B.6C.8D.10

四、选择题(20题)61.若k是int类型变量,且有以下for语句:

for(k=-1;k<O;k++)printf("****\n");

下面关于语句执行情况的叙述中正确的是()。、

A.循环体执行一次

B.循环体执行两次

C.循环体一次也不执行

D.构成无限循环‘

62.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

63.下列叙述中错误的是()。

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

B.线性表是一种线性结构

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

D.线性表可以是空表

64.下列叙述中正确的是()。

A.为了建立一个关系,首先要构造数据的逻辑关系

B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项

C.一个关系的属性名表称为关系模式

D.一个关系可以包括多个二维表

65.下面对C语言的描述中,正确的是

A.函数一定有返回值,否则无法使用函数

B.C语言函数既可以嵌套定义又可以递归调用

C.在C语言中,调用函数时,只能将实参的值传递给形参

D.C语言程序中有调用关系的所有函数都必须放在同一源程序文件中

66.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。

A.函数的实参和其对应的形参共占同一存储单元

B.形参只是形式上的存在,不占用具体存储单元

C.同名的实参和形参占同一存储单元

D.函数的形参和实参分别占用不同的存储单元

67.(52)栈和队列的共同点是()

A.都是先进后出B.都是先进先出

C.只允许在端点处插入和删除元素

D.没有共同点

68.

69.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)执行后的输出结果是()。A.5,5B.5,11C.11,11D.11,5

70.下面各选项中,均是C语言中合法标识符的选项组是

A.forchinatoB.long_123short56_do

C.voidunion_342D.text_023_3ew

71.

72.在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。

A.aut0和register

B.extem和register

C.auto和static

D.static和register

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

A.c语言规定必须用main作为主函数名,程序将从此开始执行

B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

C.c语言程序将从源程序中第一个函数开始执行、

D.main的各种大小写拼写形式都可以作为主函数名,如MAIN,Main等

74.HTTP协议的消息有()两种类型。

A.发送消息和接收消息B.请求消息和响应消息C.消息头和消息体D.实体消息和控制消息

75.

76.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

77.以下关于结构化程序设计的叙述中正确的是()。A.在C语言中,程序的模块化是利用函数实现的

B.结构化程序使用sotoi吾句会很便捷

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

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

78.

(19)关系表中的每一横行称为一个()

A.元组

B.字段

C.属性

D.码

79.排序的一个重要目的是为了对已排序数据进行

A.合并B.打印输出C.查找D.分类

80.以下选项中,当x为大于l的奇数时,值为0的表达式是()。

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:根据输入的:个边长(整型值),判断能否构成三角形:若能构成等边三角形,则返回3;若是等腰三角形,则返回2;若能构成三角形则返回l;若不能,则返回0。

例如,输入3个边长为3,4,5,实际输入时,数与数之间以Enter键分隔而不是逗号。

请修改程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdio.h>

#include<math.h>

intproc(inta,intb,intc)

{

if(a+b>c&&b-c>a&&a+c>b)

{

if(a==b&&b==c)

//****found****

return1;

elseif(a==b||b==C||a==c)

return2;

//****found****

elsereturn3;

}

elsereturn0;

}

voidmain

{

inta,b,c,shape;

printf("\nInputa,b,c:");

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

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

shape=proc(a,b.c):

printf("\n\nTheshape:%d\n",shape);

}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹析下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写程序,实现矩阵(3行、3列)的转置(即行列互换)。例如,若输入下面的矩阵:100200300400500600700800900则程序输出:100400700200500800300600900注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:11#include<stdio.h>2#include<conio.h>3#include<stdlib.h>4voidfun(intarray[3][3])5{67}8voidmain()9{10FILE*wf;11inti,j;12intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};13system("CLS");14for(i=0;i<3;i++)15{for(j=0;j<3;j++)16printf("%7d",array[i][j]);17printf("\n");18}19fun(array);20printf("Convertedarray:\n");21for(i=0;i<3;i++)22{for(j=0;j<3;j++)23printf("%7d",array[i][j]);24printf("\n");25}26/*********found*********/27wf=fopen("out.datn,"w");28for(i=0;i<3;i++)29{for(j=0;j<3;j++)30fprintf(wf,"%7dn,array[i][j]);31fprintf(wf,"\n");32}33fclose(wf);34/*********found********/35}

参考答案

1.DM(a+b,b+C,c+a)=a+b*b+c+c+a=1+2*2+3+3+1=12,注意x*y+z而不是(x)*(y)+z。

2.D本题考查指针变量的赋值。**PP是定义一个指针变量,语句pp=&p是将pp指向指针P,*P和**PP都是指针P所指的内存空间的内容,即b的值。

3.A对象具有如下特性:标识唯一性、分类性、多态性、封装性、模块独立性。

4.A[解析]B)与D)选项中取模运算符%的左右两个操作数均应为整数,所以B)、D)错误。C)选项中不能将x+z的值赋给表达式y*5.所以C)错误。

5.B

6.A树形结构是一类重要的非线性数据结构。树是n(n≥0)个结点的集合,对应任意一棵非空树,它具有以下几点重要的性质。

①有且仅有一个特定的称为根的结点。

②当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,TM,其中每一个集合本身又是一棵树,称为子树。

因此,本题的正确答案有且只有一个。

7.B

8.A解析:单元测试的步骤如下:

①理解需求和设计。清楚被测试模块在整个软件中所处的位置。一个原则是:好的设计,各模块只负责完成自己的事情,层次与分工明确。单元测试时,可以不测试不属于被测模块所负责的功能,以减少测试用例的冗余。

②概览源代码。浏览源代码,初步检查源代码的编码风格与规范,大致估算测试工作量,确定模块的复杂程度,初步制定测试的优先级等。

③精读源代码。认真阅读和分析代码,理解代码的业务逻辑,检查代码与设计是否相符,仔细研究逻辑复杂的模块,可采用一些检查列表来检查程序可能会出现的问题。

④设计测试用例。综合运用白盒测试方法(并结合黑盒测试方法)设计测试用例,包括功能测试、性能测试等,要达到一定的测试覆盖率。本题正确答案为选项A。

⑤搭建单元测试环境。这个阶段主要就是写桩模块和驱动模块,然后驱动模块想办法获取被测试模块对数据的处理结果,并判定返回的实际结果与测试用例的预

期结果是否一致,通过测试框架来记录执行的结果,对于出现的错误,还需统计错误的信息,供执行完之后分析。

⑥执行测试。运行写好的驱动模块完成对被测试模块的测试。

⑦补充和完善测试用例。在测试过程中不断补充测试用例,直到满足要求为止。

⑧分析结果,给出评价。根据测试的结果分析、查找错误的原因,并找到解决的办法。测试结束之后,根据测试过程的数据统计,给出被测试对象评价。

9.B

10.D

11.A

12.D

13.B解析:C语言中注释可以放在任何位置,选项A错误;C语言中的变量只要在使用之前定义即可,位置可以是使用前的任何位置,故选项B正确;C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选项C错误;C语言数值常量中不允许存在空格,选项D错误。

14.B

15.A宏定义写在函数的花括号外,作用域为其后的程序,通常在文件的最开头,所以B选项错|误。宏名一般用大写字母,但不是必须用大写字母,所以C选项错误。宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值),所以D选项错误。故本题答案为A选项。

16.A解析:本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列5种:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

17.D

18.D选项A是复合的赋值运算符,等价于“k=k-i”,所以k的值为1;选项B中前缀自减运算符首先将i的值自减1,然后将自减后的值赋给k,所以k和i的值都是1;选项C中k的值为1;选项D中后缀自减运算符将i的值先赋给k,然后i自减1,所以k的值为2。故本题答案为D选项。

19.A

20.C设叶子结点数为〃,则该树的结点数为n+9+5=n+\n14,根据树中的结点数=树中所有结点的度之和+1,得9×3+0×2+5×1+n×0+1=n+14,则n=19。本题选择C选项。

21.#include<string.h>str[i]0

22.ABCDCD

23.3232解析:根据二叉树的性质,在二叉树的第K层上,最多有2k-1个结点。所以,第6层的结点数最多为32。

24.封装性封装性解析:对象具有下列5个基本特点:①标识惟一性;②分类性:③多态性;④封装性;⑤模块独立性好。其中,封装性是指从外面看只能看到对象的外部特征,对象的内部特征即处理能力的实行和内部状态,对外是不可见的,对象的内部状态只能由其自身改变。

25.自顶向下自顶向下解析:在程序设计时,应先考虑总体,后考虑细节,逐步使问题具体化,对复杂的问题,应该设计一些子目标作为过渡,上述方法概括为:自顶向下,逐步细化。

26.ACEACE解析:在本题中,for循环体每执行完一次,变量i的值自加两次。i的初值为“a”,执行一次循环后变为“c”,之后再变成“e”,当其变为“g”时,循环条件若不满足,循环终止,故本题共输出3个字符。表达式“i-'a'+'A'”即表示输出i对应的大写字母,结果为ACE。

27.n+1n+1解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为0的结点多一个。

28.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函数只有一个参数,该参数指定了需要分配多少字节的内存。然后将分配好的内存块的首地址作为void*(未知类型指针)返回.故标准的调用形式应该写成:

p(double*)malloc(sizeof(double));

29.概念设计阶段(数据库概念设计阶段)概念设计阶段(数据库概念设计阶段)

30.存储空间存储空间解析:空间复杂度是指算法在执行过程中临时占用的存储空间大小,包括:①算法本身所占用的存储空间;②算法的输入输出数据所占用的存储空间;③算法在运行过程中临时占用的存储空间。

31.&a[i]或a+Ia[i]或*(a+i)&a[i]或a+I\r\na[i]或*(a+i)解析:主函数中一开始定义了一个长度为20的整形数组,然后通过一个循环,循环20次给它的每个元素赋初值,所以在第一个空格处应填各个元素的地址,即填&a[i]或a+i,然后再通过一个循环执行20次,每循环一次,先判断该循环是否大于0,如果大于0将其累加到变量sum中,所以第二个空格处应该填入数组元素,即应该填a[i]或*(a+i)。

32.3030解析:考查for循环的使用。题目中for(;;)表示:for循环的初始化表达式,条件表达式和修正表达式都省略了,表示进行for循环和for循环的终止都没有限制。

33.顺序存储(顺序方式存储)顺序存储(顺序方式存储)解析:二分法查找对表的要求是有序的顺序表,即第一要求是数据元素有序,第二要求是按顺序方式存储。

34.*pmax=*px*pmax=*px解析:首先将变量x的值放到max中,然后依次和变量y、z进行比较。若有比max大的数,将该数存放到max中,这样最后在max中的值就是x、y、z中的最大值。

35.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

36.-f或f*-1或-1*f或f*(-1)或(-1)*ffun(10)-f或f*-1或-1*f或f*(-1)或(-1)*f\r\nfun(10)解析:调用fun()函数计算m的值,在主函数中的空格处应该填调用fun()函数的语句。fun()函数有一个形参n,为每次参加计算的值的个数,故在主函数中的空格处应该填fun(10),回到fun()函数,函数用到了一个for循环,共循环n次,当循环第i次的时候,m的值等于m=1-2+……+[(-1)的i-1次方]*i,所以在fun()函数的空格处应该填使f改变符号的语句,故应填-f或f*-1或-1*f或f*(-1)或(-1)*f。

37.1313解析:函数fun是一个递归函数。执行fun(3);,x=3,x/2=1>0,又调用f(1),此时,x=1,x/2=0,不满足继续递归调用的条件,输出1,返回到fun(3)中,输出3。所以本题的输出结果为13。

38.11解析:在执行逻辑表达式“j=!ch&&i++”时,首先判断j=!ch的值,因为“ch='$'”不为0,所以“j=!ch=0”,编译系统便不再计算表达式“i++”的值,i的值不变,仍为1。

39.n/2n/2解析:删除—个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2:所以总体平均移动元素个数为n/2。

40.右子树(单支树)右子树(单支树)解析:二叉排序树对于任意新结点,若大于等于根结点,则在右子树上建立。

41.C解析:静态局部变量在编译时赋初值,即只赋韧值一次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。本题在程序开头定义了全局变量d并赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在第一次调用函数fun时,d初值为5,p由主函数传递过来的值为1,则d=d+p=5+1=6,由于d是静态局部变量,在函数调用结束后,它仍保留d=6。再次调用fun函数,d的初值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的值并返回主函数。

42.A解析:两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。

43.C解析:定义一个字符指针t,并将字符指针s的首地址赋给字符指针t;通过while语句将指针t往下移到字符串最后一个字符后面的地址,指针s始终指向首地址,将末地址减去首地址可以计算出字符串的长度。

44.B解析:此题为数据库的基本概念,可以对照办工软件的电子表格进行如下理解:选择:我们根据某条件选择出一行或多行元组(一个元组即为二维表中的一行)。投影:按字段(也称属性,比如学生关系(学号,姓名,出生年月,性别),学号、姓名…都是属性)选取一列或多列(一个二维表中所有元组在某一列或几列上截取出来)。连接:2个或2个以上的表连接组成一张新的表,通常有条件连接。比如学生关系(学号,姓名,系号),又有一张系表(系号,系名,主任),2张表可以合并为一张这样的表(学号,姓名,系号,系名,主任)。

45.C解析:对象的基本特点包括;标识惟一性、分类性、多态性、封装性和独立性等。继承性不属于对象的基本特点。

46.B解析:数据库管理系统(DataBaseManagementSystem,简称DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。

47.C解析:在定义字符数组用字符串常量进行初始化时,系统会自动在结尾加'\\0'做结束标志,所以数组array所占的空间为6个字节。

48.A解析:函数的返回值类型最终取决于定义函数时所定义的函数的类型。

49.CC。【解析】结构化程序设计的核心和基础是结构化设计理论,其中包括:结构化分析方法、结构化设计方法和结构化编程方法。

50.D解析:通过for(i=1;i<10;i+=2)可知,i取值为1~10的奇数,即1,3,5,7,9,i+1即为2,4,6,8,10。因此,程序的功能是计算并输出1~10中的偶数之和,s+=i+1就是累加这些偶数。

51.D解析:需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。

52.D解析:在C语言中没有逻辑类型,逻辑类型用整型来表示,故选项A和选项C不正确,C语言中没有集合类型,故选项B不正确。所以,D选项为所选。

53.D解析:在主函数中首先定义了一个4行4列的二维数组a,并用该数组的数组名作为实参调用函数f()。函数f()中的for循环作用,是将数组前3行中的对角线上的元素,即b[0][0]、b[1][1]、b[2][2]和第一行的第四列元素即b[0][3]累加到变量s中,s=a[0][0]+a[1][1]+a[2][2]+a[0][3]=1+2+9+4=16。然后将s的值返回在主函数中输出。

54.D解析:本题考查了考生对字符串常量的理解。字符串常量是一段以双引号括起来的字符序列,它既可以出现在对字符数组的初始化中,也可以出现在表达式中。当它用于对字符数组的初始化时,应注意系统自动为其添加的结束标志'\\0'。而当它出现在表达式中时,应该将其看作一个constchar*类型的指针常量。在选项A中,首先定义了一个字符指针sp,然后将一个字符串赋给甲所指的地址,这是错误的。因为sp是一个未经初始化的野指针,不知其指向哪儿,往一个不确定的地址中写数据很容易让程序出错。选项B首先定义了一个字符数组,然后将一个字符串赋给数组名,这是错误的。因为数组名是一个指针常量,不可以被改变。选项C首先定义了一个字符数组,然后将一个字符串赋给数组的第一个元素,这也是错误的。因为字符串在表达式中相当于一个常字符指针,将一个指针值赋给一个字符型变量是行不通的。选项D是定义一个字符指针sp,同时使其指向一个字符串常量,即将一个常字符型指针赋给sp。这是可行的。所以,4个选项中选项D符合题意。

55.A解析:在本题中,p和q同为指向字符类型数据的指针。*q和p[0]同为字符型数据。选项B)、C)和D)都符合题目的要求;选项A)计算得出的是指针类型数据所占的内存字节数。

56.A解析:模式设计和内模式设计是概念设计的两种方法。物理设计是根据特定的计算机系统,对数据的存储结构和存取方法进行设计,从而实现从逻辑结构到物理结构的转换。从系统开发的角度来看,结构特性设计和行为特性-设计是数据库应用系统所具有的两个特性。结构特性的设计,设计各级数据库模式(静态特性):行为特性的设计,改变实体及其特性,决定数据库系统的功能(动态特性)。

57.B

58.C解析:C语言中整型常量有3种表示形式:十进制、八进制和十六进制。选项A是二进制表示,错误;八进制的数字是0、1、2、3、4、5、6、7,选项B错误;十六进制整数常量用0X开头,选项D错误。

59.B解析:本题的考点是关于C语言的整数运算和逻辑运算。由于d初值为25,“a=d/10%9中d/10”整除结果是2,再用9求余结果仍是2,因此a的值为2。而对于“b=a&&(-1)”,由于a值为2不为0,-1也不为0,因此“a&&(-1)”结果为真,b值是1。输出结果应该是2、1。正确选项是B。

60.B解析:对于函数体中的语句b+=*a;其中的“*”是指针运算符,*a就是main函数中变量a的值。

61.A\n本题考查简单的for语句,程序中当k<0时循环才执行,所以答案选择A。

\n

62.D解析:文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在3个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。注意:文件系统和数据库系统各自的特点,人工管理阶段及数据库系统三代的特点。

63.CC.【解析】线性表是一种线性结构,由n(n≥0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项C.是错误的。

64.C解析:在格式化模型中,要事先根据应用的需要,确定数据之间的逻辑关系,即先对数据进行结构化。在关系模型中,不需要事先构造数据的逻辑关系,只要将数据按照一定的关系存入计算机,也就是建立关系。所以选项A错误。对于一个表示关系的二维表,其最基本的要求是表中元组的每一个分量必须是不可分的数据项,即不允许表中再有表。所以,选项B、D说法是错误的。一个关系的属性名表称为关系模式,也就是二维表的表框架,相当于记录型。因此,选项C说法正确。

65.CA选项“函数一定有返回值,否则无法使用函数”,该选项是错误的。使用一个函数并不一定要使用该函数的返回值。C语言中用void定义“无类型”的函数,即禁止在调用函数中使用被调用函数的返回值。

B选项“C语言函数既可以嵌套定义,又可以递归调用”,该选项是错误的。嵌套定义是指在定义一个函数时,其函数体内又包含另一个函数的完整定义,这个内嵌的函数只能被包含它的函数所调用。而C语言规定每个函数都是平行、独立的,不允许嵌套定义的情况出现。C语言不能嵌套定义函数,但能够嵌套调用函数,也就是在调用一个函数的过程中,又调用另一个函数。C语言允许函数的递归调用,即在调用一个函数的过程中又直接或间接地调用该函数本身。

C选项“在C语言中,调用函数时,只能将实参的值传递给形参”,该选项是正确的。函数的形参是指定义函数时函数名后面括弧中的变量名,实参是指在主调函数中调用一个函数时,函数名后面括弧中的参数。调用时将实参的值赋给形参,形参的修改不会影响实参的值。注意,这里仅仅指的是传递数值,如果以地址的方式传递参数,则形参的改变也会改变实参的值。

温馨提示

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

评论

0/150

提交评论