2021年江苏省扬州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年江苏省扬州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年江苏省扬州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年江苏省扬州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年江苏省扬州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

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

文档简介

2021年江苏省扬州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下选项中,合法的一组C语苦数值常量是()。

A.28.5e-3-0xf

B.12OXa234.5

C.1774c1.5Oabc

D.0x8A10,0003.e5

2.

3.设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为()。A.6B.8C.9D.12

4.设有定义:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若变量均已正确赋初值,则以下语句中错误的是()。

A.t1=t2;

B.t2.num1=tl.numl;

C.t2.mark=tl.mark;

D.t2.num2=tl.num2;

5.

6.在执行()操作时,需要使用队列做辅助存储空间。

A.查找哈希(Hash)表B.深度优先搜索网C.前序(根)遍历二叉树D.广度优先搜索网

7.递归式的先序遍历一个n节点,深度为d的二叉树,则需要栈空间的大小为()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

8.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。

A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车

9.设二叉树的中序序列为BCDA,前序序列为ABCD,则后序序列为()。

A.CBDAB.DCBAC.BCDAD.ACDB

10.已知一算术表达式的中缀形式为A+B*C–D/E,后缀形式为ABC*+DE/–,其前缀形式为()。

A.–A+B*C/DEB.–A+B*CD/EC.–+*ABC/DED.–+A*BC/DE

11.在目标串T[0,n-1]=”xwxxyxy”中,对模式串p[0,m-1]=”xy”进行子串定位操作的结果_______

A.0B.2C.3D.5

12.有下列程序:

程序执行后的输出结果是()。

A.30B.35C.40D.32

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

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

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

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

D.线性表可以是空表

14.

15.有以下程序:main{inti,j;for(j=10;j<11;j++){for(i=9;i<j;i++)if(!(j%i))break;if(i==j-1)printf("%d",j);}}输出结果是()。A.11B.10C.9D.1011

16.下面程序段的时间复杂度为()。

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

17.设x和y均为bool量,则x&&y为真的条件是()。

A.它们均为真B.其中一个为真C.它们均为假D.其中一个

18.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

19.以下程序中,while循环的循环次数是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}

A.1B.10C.6D.死循环,不能确定次数

20.若用一个大小为6的数值来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()。

A.1和5B.2和4C.4和2D.5和1

二、2.填空题(20题)21.以下程序的输出结果是______。

main()

{inta=1,b=2;

a=a+b;b=a-b;a=a-b;

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

}

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

23.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

ginclude"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

pfintf("Enterx:");scanf("%lf"&x);

y1=fun([10]);y2=fun([11]);

pin

24.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。

25.在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为【】。

26.以下程序运行后的输出结果是______。

main()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2==0)

*p='*';

p++;i++;

}

puts(a);

}

27.软件设计模块化的目的是______。

28.数据结构分为线性结构和非线性结构,线性表、栈和队列都属于【】。

29.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【】和选择排序等。

30.有以下程序段,且变量已正确定义和赋值。

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k/1));

printf("s=%f\n\",s);

请填空,使下面程序段的功能与之完全相同。

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

printf("s-=%f\n\n",s);

31.以下程序中,fun函数的功能是求3行4列二维数组每行元素的最大值。请填空。

voidfun(int,int,int(*)[4],int*);

main()

{

inta[3][4]={{12,41,36,28},{19,33,15,27),{3,27,19,1}},b[3],i;

fun(3,4,a,B);

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

printf("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

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

{

x=ar[i][0];

for(i=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

______=X;

}

}

32.通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【】。

33.下列程序的输出结果是【】。

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

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

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

34.以下程序运行后的输出结果是【】。

#include<string.h>

cbar*ss(char*s)

{char*p,t;

p=s+1;t=*s;

while(-p){*(p-1)=*p;p++;}

*(p-1)=t;

returns;

}

main()

{char*p,str[10]="abcdefgh";

p=ss(str);

printf("%s\n",p);

}

35.已知字符'A'的ASCII码为65,以下程序运行后的输出结果是【】。

#include<stdio.h>

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

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

}

36.以下程序运行后的输出结果是()。structNODE{intk;structNODE*link;};main(){structNODEm[5],*p=m,*q=m+4;inti=0:while(p!=q){p->k=++i;p++;q->k=1++;q--;}q->k=i:for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");}

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

charstr[]="ABCD",*p=str;

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

38.数据的安全性是指保护数据以防止【】用户的使用造成的数据泄密和破坏。

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

#include<stdlib.h>

main()

{char*s1,*s2,m;

s1=s2=(char*)malloc(sizeof(char));

*s1=15;*s2=20;m=*s1+*s2;

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

}

40.数据的独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,这称为______。

三、1.选择题(20题)41.下列程序的运行结果是()。#include<stdio.h>voidsub(int*s,int*y){staticintm=4:*y=s[m];m--;}voidmain(){inta[]={1,2,3,4,5},k,x;printf("\n");for(k=0;k<=4;k++){sub(a,&x);printf("%d,",x);}}

A.5,4,3,2,1,B.1,2,3,4,5,C.0,0,0,0,0,D.4,4,4,4,4,

42.有以下程序

#include<string.h>

main()

{charp[20]={′a′,′b′,′c′,′d′},q[]="abc",r[]="abcde";

strcat(p,r);strcpy(p+strlen(q),q);

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

}

程序运行后的输出结果是

A.9B.6C.11D.7

43.数据的完整性是指数据的正确性、有效性和______。

A.可维护性B.独立性C.安全性D.相容性

44.以下程序的输出结果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20

45.将E-R图转换到关系模式时,实体与实体间的联系可以表示成()。

A.属性B.关系C.键D.域

46.下列二维数组初始化语句中,正确且与语句floata[][3]={0,3,8,0,9};等价的是

A.floata[2][]={{0,3,8},{0,9}};

B.floata[][3]={0,3,8,0,9,0};

C.floata[][3]={{0,3},{8,0},{9,0}};

D.floata[2][]={{0,3,8},{0,9,0}};

47.有以下程序:main(){unsignedchara,b,c;a=0x3;b=a|0x8;c=b<<1;printf("%d%d\n",b,C);}程序运行后的输出结果是()。

A.-1112B.-6-13C.1224D.1122

48.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。

A.地址传递B.单向值传递C.由实参传递给形参,再由形参传递给实参D.传递方式由用户指定

49.若有定义inta=5,b=7;,则表达式a%=(b%2)运算后,a的值为()。

A.0B.1C.11D.3

50.下列选项中,不能用作标识符的是A._1234_B._1_2C.int_2_D.2_int_

51.x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是

A.INPUTx、v、z;

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

C.scanf("%d%d%d",x,y,z);

D.read("%d%d%d",&x,&y,&z);

52.有程序段:intal,a2;Charcl,c2;scanf("%d%c%d%c",&a1,&cl,&a2,&c2);若要求a1、a2、c1、c2的值分别为10、20、A、B,正确的数据输入()

A.10A20B<CR>B.10A20B<CR>C.10A20B<CR>D.10A20B<CR>

53.函数的值通过return语句返回,下面关于return语句的形式描述错误的是

A.return表达式;

B.return(表达式);

C.一个return语句可以返回多个函数值

D.一个return语句只能返回一个函数值

54.有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x>10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序的输出结果是

A.0.000000B.0.250000C.0.500000D.1.000000

55.以下程序运行后,输出结果是______。main(){char*d[]={"ab","cde"};printf("%x",d[1]);}

A.cdeB.字符c的AScII码值C.字符c的地址D.出错

56.以下程序段的执行结果为#definePLUS(X,Y)X+Ymain(){intx=1,y=2,z=3,sum;sum=PLUS(x+y,z)*PLUS(y,z);printf("SUM=%d",sum);}

A.SUM=9B.SUM=12C.SUM=18D.SUM=28

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

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

58.下列有关数据库的描述,正确的是______。

A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件

59.调用gets和puts函数时,必须包含的头文件是

A.stdio.hB.stdlib.hC.defineD.以上都不对

60.数据处理的最小单位是()。

A.数据B.数据元素C.数据项D.数据结构

四、选择题(20题)61.有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是

A.12B.15C.16D.20

62.

执行下述程序后,输出的结果是()。

#include<stdio.h>

#defineS(X)X*X

voidmain

{inta=9,k=3,m=2;

a/=S(k+m)/s(k+m);

printf("%d",a);

}

A.1B.4C.9D.0

63.

64.

65.有以下程序:

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

A.0B.3C.7D.8

66.计算机能直接执行的程序是()。A.可执行程序B.目标程序C.汇编程序D.源程序

67.有以下程序:

main()

{intp[7]={11,13,14,15,16,17,18},i=0,k=0;

while(i<7&&p[i]%2){k=k+p[i++];i++}

Printf("%d\n",k);

}

执行后输出的结果是()。

A.57B.39C.24D.11

68.有三个关系R,S和T如下:

其中关系T由关系R和S通过某种操作得到,该操作为()。A.选择B.投影C.交D.并

69.

70.

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

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

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

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

D.上述3种说法都不对

72.

73.若有下列定义(设int类型变量占2个字节):inti=8,j=9;则下列语句:printf("i=%%d,j=%%d\n",i,j);输出的结果是()。A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

74.有以下程序:

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

A..3,2,1,B.1,2,3,4,5,6,C.1,1,1,1,1,lD.6,6,6,6,6,6,

75.

下列程序的输出结果是()。

#include<stdio.h>

main()

{inti,S=0;

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

if(!(i%2)&&!(i%3))s+=i;

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

}

A.4B.39C.45D.6

76.设有图书(图书编号,书名,第一作者,出版社.、读者(借书证号,姓名,单位,职称.和借阅(借书证号,图书编号,借书日期,还书日期.三张表,则表借阅的关键字(键或码.为()。

A.借书证号,图书编号

B.图书编号,借书日期

C.借书日期,还书日期

D.借书证号,借书日期

77.以下不能正确定义二维数组的选项是()。

A.

B.

C.

D.

78.有以下程序程序运行后的输出结果是()。

79.如下程序的输出结果是()。

A.69825B.63825C.6385D.693825

80.以下叙述中错误的是()。

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

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

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

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

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

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

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

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。程序中将m个人的成绩存放在score数组中,请编写函数fun(),它的功能是将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为10、20、30、40。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.B

2.D

3.CC。R为n元关系,有P个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。

4.C结构体不能通过结构体名字整体赋值,通过结构体名.成员名的方式赋值。所以C选项错误。

5.B

6.D

7.D

8.D

9.B二叉树的前序序列为ABCD,由于前序遍历首先访问根节点,可以确定该二叉树的根节点是A。再由中序序列为BCDA,可知以A为根节点的该二叉树只存在左子树,不存在右子树,故后序序列为DCBA。本题答案为B选项。

10.D

11.C

12.A程序定义一个整型变量y和整型二维数组x,并对x赋初值。接着调用函数fun,在函数fun中,第1个for循环将数组a的第0列和第N-1列的所有元素累加到y中;第2个for循环将数组a的第0行的2、3和第N-1行的3、2累加到y中,再将y返回。所以fun函数的功能是将数组a的行列下标为0、N-1的所有元素累加起来,即将1,2,3,4,2,3,3,2,4,3,2,1累加,输出30。本题答案为A选项。

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

14.D

15.B本题考多循环的使用,当j=10,i=9时,循环成立,第一个if条件为假,第二个if条件i==j-1成立,则输出j的值为10,接者执行i++后,i为10;当i为10,for循环不成立,退出内层循环,此时执行j++后,j为11,循环不成立,退出循环。

16.A

17.A

18.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次。

19.D解析:break语句只能在循环体和switch语句体内使用,当break出现在switch语句体内时,其作用只是跳出该switch语句体。当break出现在循环体中,但不在switch语句体内时,则在执行break后,跳出本层循环体.而continue语句的作用是结束本次循环,即跳过本次循环中余下尚未执行的语句,接着再一次进行循环的条件判定。本程序中,变量i的初始值为0,判断while后面括号内表达式的值为真,执行循环体内的if语句,判断if后面括号内表达式的值为真,执行“continue;”语句.因continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判断,所以i的值未发生变化,循环条件仍然为真,if语句也仍然成立,因此循环将无止境地进行下去。所以,4个选项中D为所选。

20.B

21.21

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

23.用x+8代替函数fun(doublex)中形式参数x。用sin(x)代替函数fun(doublex)中形式参数x。

24.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。

25.数据字典数据字典解析:在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为数据字典。

26.*2*4*6*8**2*4*6*8*解析:程序中定义了一个字符数组a,并初始化为123456789,接着定义了一个指针p并让它指向数组a,紧接着执行了一个while循环,此循环的作用是:当i为偶数时,将“*”赋给a[i],p指向数组末尾,循环结束,此时数组中a[0]、a[2]、a[4]、a[6]和a[8]的值都为“*”,所以最后调用puts()函数输出的a的值为*2*4*6*8*

27.降低复杂性降低复杂性

28.线性结构线性结构解析:本题考查了数据结构的基本概念。与栈类似,队列也是线性表,可以采用链式存储结构,所以带链的队列属于线性结构。

29.交换排序交换排序解析:常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)。注意:常见的排序方法及其作用机制和区别。

30.k<=n或n>=kk++k<=n或n>=k\r\nk++解析:while语句和for语句的作用都是循环控制语句的执行,两者之间是可以互相转换的。将while(EXP)转换为for语句可以写成for(;EXP;);将for(EXP1;EXP2;EXP3)转换为while语句可以写成:EXP1;while(EXP2){...EXP3;}。故本题的两个空分别应填写for语句的第2和第3个表达式。即k<=n或n>=k和k++。当然也可写成与之等价的其他形式。

31.br[i]或*(br+i)br[i]或*(br+i)解析:求最大值算法要求输入的一般是一系列数,例如一个数组,而输出只有一个值。计算时通常的做法是,首先将这一系列数的笫1个值保存到结果变量中,然后用一个指针或循环变量从头(或从第2个值)至尾遍历这一系列数,每次比较结果变量和被遍历的值,如果该值比结果大,则将该值保存到结果中。本题中,3行4列二维数组a显然是算法的输入值,而传给函数fun()的3和4在函数中起到限制循环次数的作用,所以它们代表输入数据的行列数.而传递给函数的一维数组b即没有初始化,最后又要输出它,所以数组b肯定是用来保存每行的最大值。在函数中是一个二重循环,外循环首先将ar[i][0]赋给x,然后内循环中比较x和ar[il刚,若x比较小就让x=ar[i][j],这就说明x是保存结果的临时变量.最后应该将x的值输出到数组b中,也就是形参br的相应位置。故在空格处应该填的内容为br[i]或者写成指针方式*(br+i)。

32.软件生命周期软件生命周期解析:软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。

33.66解析:条件运算符的优先级高于赋值运算符,因此本题先计算关系表达式(*ptr+y)<x)?*(ptr+y):x的值,再赋给变量z。当y=0时,*(ptr+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=2,所以z=2;当y-1时,*(ptr+y)=4,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以z=4;当y=2时,*(ptr+y)=6,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=6,所以z=6;循环结束。因此输出z的结果为6。

34.bcdefghabcdefgha解析:while循环的功能把字符从第二个元素开始左移一位,并将原第一个元素赋给最后一个元素。

35.67G67G解析:由于\'5\'-\'3\'=2,所以a=\'A\'+\'5\'-\'3\'=\'C\',按'%d'格式输出\'C\'的ASCII码为67;同理,\'6\'-\'2\'=4,b=a+\'6\'-\'2\'=\'C\'+4=\'G\',按'%c'格式输出为\'G\'。

36.13431

37.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d”格式输出的,即输出其相应ASCII码值68。

38.(非法)不合法(非法)不合法

39.4040解析:本题中指针s1和s2都指向同一个内存中的地址。因此语句“*s2=20;”执行后,*\u3000s1=*s2=20。所以m最后的值为40。

40.物理独立性物理独立性解析:数据的独立性是指数据和应用程序相互独立,分为物理独立性和逻辑独立性。其中物理独立性是指数据的物理结构(包括存储结构、存取方式)改变时,不需要修改应用程序。而逻辑独立性是指当逻辑结构改变时,不需要修改应用程序。

41.A解析:本题考查的是静态变量以及函数的实参与形参之间的地址值传递。sub()函数数中定义的变量m是一个静态变量,系统可为其分配固定的存储空间,重复使用时,变量的值保留;所以当mam()函数中的for循环中语句sub(a,&x);执行时,sub函数中m的值依次是4,3,2,1,0;因为变量x进行的是地址值传递,所以最后依次输出的是数组a的元素a[4]、a[3]、a[2]、a[1]、a[0]。

42.B解析:strcpy()函数的功能是将字符串q复制到从p[3]位置开始的存储单元,同时复制字符串结束标志'\\0'到p[6]中。函数strlen()返回的是字符串中不包括'\\0'在内的实际长度,故本题答案为B)

43.D解析:数据模型应该反映和规定本数据模型必须遵守的、基本的、通用的完整性约束条件。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态及其状态的变化,以保证数据的正确性、有效性和相容性。

44.B

45.B解析:将E-R图转换成指定RDBMS中的关系模式是数据库逻辑设计的主要工作。从E-R图到关系模式的转换是比较直接的,实体和联系都可以表示成关系。

46.B解析:在选项B)中,因为数组的第一维的数目不明确,所以理解会有歧义,可以理解为1行3列,或者2行3列等。所以选项B)错误。注意:数组中元素的引用。

47.D解析:将a的值用二进制表示:00000011。a与Ox8(二进制表示为00001000)按位或,得到结果00001011赋值给b,b的值为11。再将b左移一位得到:00010110,赋值给c,c的值为22。所以最后输出的b,c的值为11,22。

48.B解析:C语言以定,实参变量对形参变量的数据传递是“单向值传递”,只由实参传绐形参。在内存中,实参单元与形参单元是不同的单元。调用结束后,实参单元仍保留并维持原值。

49.A解析:本题考查'%'运算符的使用。运算符'%'要求两个运算对象都为整型,其结果是整数除法的余数。本题中表达式ao%=(b%2)等价于a=a%o(b%2)=5%(7%2)=5%1=0。

50.D解析:本题考核的知识点是用户的标识符。在C语言中,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或者下划线,如:acd,d_ad、_adf124,_124等都是合法的标识符号.而2asdf、_sd/=都不是合法的标识符.在C语言中大写字母和小写字母被认为是两个不同的字符,如:ACD和acd是两个不同的标识符号。选项D中用下划线作为第一个字符,这是不合法的,故选项D不正确,所以,4个选项中选项D符合题意。

51.B解析:scanf函数的一般格式是:

scanf(格式控制,地址表列)

该格式中,地址表列中应是变量地址,而不是变量名。注意:调用putchar和getchar函输出和输入字符。

52.A

53.C解析:return语句中的表达式的值就是所求的函数值,此表达式值的类型必须与函数首部所说明的类型一致。如果类型不一致,则以函数值的类型为准,由系统自动进行转换。一个return语句只能返回一个值。

54.D

55.C解析:指针数组中的每一个元素都相当于一个指针变量。一维指针数组的定义形式为:类型名*数组名[数组长度],在本题main函数中定义指针数组d,它有两个元素,其初值分别是“ab”、“cde”的首地址。d[1]的值为“cde”的首地址。%x是指以十六进制数形式输出整数。

56.B解析:本题考查带参数的宏定义及应用方法,这种宏不只是进行字符串的替换,还要进行参数的替换。

格式为:#define宏名(参数表)字符串

我们先看一个简单的带参数的宏定义:#defineX(A,B)A*B*B并且在程序中有语句:y=X(4,3);经过替换后变为y=4*3*3;这就是带参数的宏定义的使用方法。注意:宏是按原形替换,本题替换后为sun=1+2+3*2+3;。

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

58.C解析:数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有“集成”、“共事”之特点。

59.A解析:gets函数和puts函数是库函数,必须包含的头文件是stdio.h。

60.C解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。

61.A解析:此题考查的是编译预处理命令以及自加运算符。F(a++,b++)先取a和b的值,参加运算,再把a和b的值分别加1,所以F(a++,b++)=F(3,4)=3*4=12。

62.D

\n本题j=要是考查带参数的宏的定义,过程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。

\n

63.B

64.B

65.B本题中遇到“\”字符循环结束,所以只统计“\”之前的数字字符,所以为3。

66.A计算机能直接执行的程序是二进制的可执行程序,其他的不能直接执行。

67.D循环的条件是i<7并且p[i]是奇数,当i=0时,i<7,p[i]=11,满足条件,所以k=0+11=11,然后i++,i++,所以i=2,p[2]=14,为偶数,退出循环,这时k还是11.

68.D

69.D

70.D

71.C本题考查对面向对象的理解,面向对象的程序设计是对象模拟问题领域中的实体,各对象之间相对独立,相互依赖性小,通过消息来实现对象之间的相互联系。

72.C

73.B本题考查函数的输出格式。在printf函数,格式说明符中有两个“%”说明;将第1个%后面的字符原样输出,并不输出其对应r的变量值。

74.Afopen(”data.chit“,”w+”);W+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件存在则建立该文件。rewind(fp);使文件fp的I位置指针指向文件开始。fprintf(fp,”%d\n”,a[5一i]);将8[i]输出到fp指向的文件中。fseanf(fp,”%d”,&k);将fp读I入到变量k中,第一个for循环将数组中元素倒着输入到fp指l向的文件中,rewind()则指向文件开始,因此打印是数组a的I倒叙。故打印为6,5,4,3,2,1。答案为A选项。

75.D

\nif语句的条件是当i既是3的倍数又是2的倍数时成立,所以此程序实现的功能是将10以内既是3的倍数又是2的倍数的数相加。

\n

76.A\n在二维表中凡能唯一标识元组的最小属性集称为关键字,关键字具有标识元组、建立元组间联系等重要作用。此题中,(借书证号,图书编号)是表借阅的主键,借书证号、图书编号分别是外键,借书证号是读者表的主关键字,图书编号是图书表的主关键字。

\n

77.D本题的考查点是二维数组的定义和初始化。

选项A)定义的数组中各元素实际上是这样的:

1,0

2.O

选项B)定义的数组中各元素实际上是这样的:

1,2

3.4

选项c)定义的数组中各元素实际上是这样的:

1,0

2.3

选项D)错在省略了第2维的长度。C中在对数组进行初始化时,如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。

78.A涵数返回的结构体为在涵数里赋值的结构体,所以选择A)。

79.C考查通过指针引用字符串数组中的元素。通过行指针P来实现数组元素的引用。用格式说明符%s进行整串输入与输出。

本题中,每行字符指针跳跃式右移动,隔2个移动一次,s存放处理的累计和。

第一行中

s指针行下标变化,转向第二行

第二行中

得出结果S=6385

80.Dc语言的可执行程序是由一系列机器指令组成的。用C语言编写的源程序必须经过编译生成二进制目标代码,再经过连接才能运行,并且可以脱离c语言集成开发环境。故答案为D)。

81.

【解析】因为t是指向一个动态存储空间,因此其是指针,而不是其中的内容,故把“*t=calloc(m,sizeof(STU))”改为“t=(structss*)calloc(m,sizeof(STU));”,而题目要求把学生的全部内容互换,因此即整个结构体,故把“t[k].num=b[j].hum;”改为“t[k]=b[j];”。

82.1intfun(intscore[],intm,intbe-low[])2{3inti,j=0;4floatav=0.0;5for(i=0;i<m;i++)6av=av+score[i]/m;/*求平均值*/</m;i++)<m;i++)7for(i=0;i<m;i++)gif(score[i]</m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分数<>8低于平均分,则将此分数放入below数::组中*/</av)p*如果分数<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分数<>9below[j++]=score[i];</av)p*如果分数<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分数<>10returnj;/*</av)p*如果分数<></m;i++)</m;i++)<m;i++)<m;i++)<av)p*如果分数<>返回低于平均分的人数*/U}要计算低于平均分的人数,首先应该求出数组score中各元素的平均值。然后通过for循环语句和if条件语句找出低于平均值的分数。该题第1个循环的作用是求出平均值av,第2个循环的作用是找出数组score中低于平均值的成绩记录并存入below数组中。</av)p*如果分数<></m;i++)</m;i++)2021年江苏省扬州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下选项中,合法的一组C语苦数值常量是()。

A.28.5e-3-0xf

B.12OXa234.5

C.1774c1.5Oabc

D.0x8A10,0003.e5

2.

3.设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为()。A.6B.8C.9D.12

4.设有定义:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若变量均已正确赋初值,则以下语句中错误的是()。

A.t1=t2;

B.t2.num1=tl.numl;

C.t2.mark=tl.mark;

D.t2.num2=tl.num2;

5.

6.在执行()操作时,需要使用队列做辅助存储空间。

A.查找哈希(Hash)表B.深度优先搜索网C.前序(根)遍历二叉树D.广度优先搜索网

7.递归式的先序遍历一个n节点,深度为d的二叉树,则需要栈空间的大小为()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

8.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。

A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车

9.设二叉树的中序序列为BCDA,前序序列为ABCD,则后序序列为()。

A.CBDAB.DCBAC.BCDAD.ACDB

10.已知一算术表达式的中缀形式为A+B*C–D/E,后缀形式为ABC*+DE/–,其前缀形式为()。

A.–A+B*C/DEB.–A+B*CD/EC.–+*ABC/DED.–+A*BC/DE

11.在目标串T[0,n-1]=”xwxxyxy”中,对模式串p[0,m-1]=”xy”进行子串定位操作的结果_______

A.0B.2C.3D.5

12.有下列程序:

程序执行后的输出结果是()。

A.30B.35C.40D.32

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

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

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

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

D.线性表可以是空表

14.

15.有以下程序:main{inti,j;for(j=10;j<11;j++){for(i=9;i<j;i++)if(!(j%i))break;if(i==j-1)printf("%d",j);}}输出结果是()。A.11B.10C.9D.1011

16.下面程序段的时间复杂度为()。

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

17.设x和y均为bool量,则x&&y为真的条件是()。

A.它们均为真B.其中一个为真C.它们均为假D.其中一个

18.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

19.以下程序中,while循环的循环次数是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}

A.1B.10C.6D.死循环,不能确定次数

20.若用一个大小为6的数值来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()。

A.1和5B.2和4C.4和2D.5和1

二、2.填空题(20题)21.以下程序的输出结果是______。

main()

{inta=1,b=2;

a=a+b;b=a-b;a=a-b;

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

}

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

23.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

ginclude"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

pfintf("Enterx:");scanf("%lf"&x);

y1=fun([10]);y2=fun([11]);

pin

24.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。

25.在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为【】。

26.以下程序运行后的输出结果是______。

main()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2==0)

*p='*';

p++;i++;

}

puts(a);

}

27.软件设计模块化的目的是______。

28.数据结构分为线性结构和非线性结构,线性表、栈和队列都属于【】。

29.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【】和选择排序等。

30.有以下程序段,且变量已正确定义和赋值。

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k/1));

printf("s=%f\n\",s);

请填空,使下面程序段的功能与之完全相同。

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

printf("s-=%f\n\n",s);

31.以下程序中,fun函数的功能是求3行4列二维数组每行元素的最大值。请填空。

voidfun(int,int,int(*)[4],int*);

main()

{

inta[3][4]={{12,41,36,28},{19,33,15,27),{3,27,19,1}},b[3],i;

fun(3,4,a,B);

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

printf("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

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

{

x=ar[i][0];

for(i=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

______=X;

}

}

32.通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【】。

33.下列程序的输出结果是【】。

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

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

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

34.以下程序运行后的输出结果是【】。

#include<string.h>

cbar*ss(char*s)

{char*p,t;

p=s+1;t=*s;

while(-p){*(p-1)=*p;p++;}

*(p-1)=t;

returns;

}

main()

{char*p,str[10]="abcdefgh";

p=ss(str);

printf("%s\n",p);

}

35.已知字符'A'的ASCII码为65,以下程序运行后的输出结果是【】。

#include<stdio.h>

main()

{chara,b;

a='A'+'5'-'3';b=a+'6'-'2';

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

}

36.以下程序运行后的输出结果是()。structNODE{intk;structNODE*link;};main(){structNODEm[5],*p=m,*q=m+4;inti=0:while(p!=q){p->k=++i;p++;q->k=1++;q--;}q->k=i:for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");}

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

charstr[]="ABCD",*p=str;

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

38.数据的安全性是指保护数据以防止【】用户的使用造成的数据泄密和破坏。

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

#include<stdlib.h>

main()

{char*s1,*s2,m;

s1=s2=(char*)malloc(sizeof(char));

*s1=15;*s2=20;m=*s1+*s2;

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

}

40.数据的独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,这称为______。

三、1.选择题(20题)41.下列程序的运行结果是()。#include<stdio.h>voidsub(int*s,int*y){staticintm=4:*y=s[m];m--;}voidmain(){inta[]={1,2,3,4,5},k,x;printf("\n");for(k=0;k<=4;k++){sub(a,&x);printf("%d,",x);}}

A.5,4,3,2,1,B.1,2,3,4,5,C.0,0,0,0,0,D.4,4,4,4,4,

42.有以下程序

#include<string.h>

main()

{charp[20]={′a′,′b′,′c′,′d′},q[]="abc",r[]="abcde";

strcat(p,r);strcpy(p+strlen(q),q);

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

}

程序运行后的输出结果是

A.9B.6C.11D.7

43.数据的完整性是指数据的正确性、有效性和______。

A.可维护性B.独立性C.安全性D.相容性

44.以下程序的输出结果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20

45.将E-R图转换到关系模式时,实体与实体间的联系可以表示成()。

A.属性B.关系C.键D.域

46.下列二维数组初始化语句中,正确且与语句floata[][3]={0,3,8,0,9};等价的是

A.floata[2][]={{0,3,8},{0,9}};

B.floata[][3]={0,3,8,0,9,0};

C.floata[][3]={{0,3},{8,0},{9,0}};

D.floata[2][]={{0,3,8},{0,9,0}};

47.有以下程序:main(){unsignedchara,b,c;a=0x3;b=a|0x8;c=b<<1;printf("%d%d\n",b,C);}程序运行后的输出结果是()。

A.-1112B.-6-13C.1224D.1122

48.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。

A.地址传递B.单向值传递C.由实参传递给形参,再由形参传递给实参D.传递方式由用户指定

49.若有定义inta=5,b=7;,则表达式a%=(b%2)运算后,a的值为()。

A.0B.1C.11D.3

50.下列选项中,不能用作标识符的是A._1234_B._1_2C.int_2_D.2_int_

51.x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是

A.INPUTx、v、z;

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

C.scanf("%d%d%d",x,y,z);

D.read("%d%d%d",&x,&y,&z);

52.有程序段:intal,a2;Charcl,c2;scanf("%d%c%d%c",&a1,&cl,&a2,&c2);若要求a1、a2、c1、c2的值分别为10、20、A、B,正确的数据输入()

A.10A20B<CR>B.10A20B<CR>C.10A20B<CR>D.10A20B<CR>

53.函数的值通过return语句返回,下面关于return语句的形式描述错误的是

A.return表达式;

B.return(表达式);

C.一个return语句可以返回多个函数值

D.一个return语句只能返回一个函数值

54.有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x>10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序的输出结果是

A.0.000000B.0.250000C.0.500000D.1.000000

55.以下程序运行后,输出结果是______。main(){char*d[]={"ab","cde"};printf("%x",d[1]);}

A.cdeB.字符c的AScII码值C.字符c的地址D.出错

56.以下程序段的执行结果为#definePLUS(X,Y)X+Ymain(){intx=1,y=2,z=3,sum;sum=PLUS(x+y,z)*PLUS(y,z);printf("SUM=%d",sum);}

A.SUM=9B.SUM=12C.SUM=18D.SUM=28

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

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

58.下列有关数据库的描述,正确的是______。

A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件

59.调用gets和puts函数时,必须包含的头文件是

A.stdio.hB.stdlib.hC.defineD.以上都不对

60.数据处理的最小单位是()。

A.数据B.数据元素C.数据项D.数据结构

四、选择题(20题)61.有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是

A.12B.15C.16D.20

62.

执行下述程序后,输出的结果是()。

#include<stdio.h>

#defineS(X)X*X

voidmain

{inta=9,k=3,m=2;

a/=S(k+m)/s(k+m);

printf("%d",a);

}

A.1B.4C.9D.0

63.

64.

65.有以下程序:

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

A.0B.3C.7D.8

66.计算机能直接执行的程序是()。A.可执行程序B.目标程序C.汇编程序D.源程序

67.有以下程序:

main()

{intp[7]={11,13,14,15,16,17,18},i=0,k=0;

while(i<7&&p[i]%2){k=k+p[i++];i++}

Printf("%d\n",k);

}

执行后输出的结果是()。

A.57B.39C.24D.11

68.有三个关系R,S和T如下:

其中关系T由关系R和S通过某种操作得到,该操作为()。A.选择B.投影C.交D.并

69.

70.

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

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

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

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

D.上述3种说法都不对

72.

73.若有下列定义(设int类型变量占2个字节):inti=8,j=9;则下列语句:printf("i=%%d,j=%%d\n",i,j);输出的结果是()。A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9

74.有以下程序:

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

A..3,2,1,B.1,2,3,4,5,6,C.1,1,1,1,1,lD.6,6,6,6,6,6,

75.

下列程序的输出结果是()。

#include<stdio.h>

main()

{inti,S=0;

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

if(!(i%2)&&!(i%3))s+=i;

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

}

A.4B.39C.45D.6

76.设有图书(图书编号,书名,第一作者,出版社.、读者(借书证号,姓名,单位,职称.和借阅(借书证号,图书编号,借书日期,还书日期.三张表,则表借阅的关键字(键或码.为()。

A.借书证号,图书编号

B.图书编号,借书日期

C.借书日期,还书日期

D.借书证号,借书日期

77.以下不能正确定义二维数组的选项是()。

A.

B.

C.

D.

78.有以下程序程序运行后的输出结果是()。

79.如下程序的输出结果是()。

A.69825B.63825C.6385D.693825

80.以下叙述中错误的是()。

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

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

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

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

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

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

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

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。程序中将m个人的成绩存放在score数组中,请编写函数fun(),它的功能是将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为10、20、30、40。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.B

2.D

3.CC。R为n元关系,有P个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。

4.C结构体不能通过结构体名字整体赋值,通过结构体名.成员名的方式赋值。所以C选项错误。

5.B

6.D

7.D

8.D

9.B二叉树的前序序列为ABCD,由于前序遍历首先访问根节点,可以确定该二叉树的根节点是A。再由中序序列为BCDA,可知以A为根节点的该二叉树只存在左子树,不存在右子树,故后序序列为DCBA。本题答案为B选项。

10.D

11.C

12.A程序定义一个整型变量y和整型二维数组x,并对x赋初值。接着调用函数fun,在函数fun中,第1个for循环将数组a的第0列和第N-1列的所有元素累加到y中;第2个for循环将数组a的第0行的2、3和第N-1行的3、2累加到y中,再将y返回。所以fun函数的功能是将数组a的行列下标为0、N-1的所有元素累加起来,即将1,2,3,4,2,3,3,2,4,3,2,1累加,输出30。本题答案为A选项。

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

14.D

15.B本题考多循环的使用,当j=10,i=9时,循环成立,第一个if条件为假,第二个if条件i==j-1成立,则输出j的值为10,接者执行i++后,i为10;当i为10,for循环不成立,退出内层循环,此时执行j++后,j为11,循环不成立,退出循环。

16.A

17.A

18.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次。

19.D解析:break语句只能在循环体和switch语句体内使用,当break出现在switch语句体内时,其作用只是跳出该switch语句体。当break出现在循环体中,但不在switch语句体内时,则在执行break后,跳出本层循环体.而continue语句的作用是结束本次循环,即跳过本次循环中余下尚未执行的语句,接着再一次进行循环的条件判定。本程序中,变量i的初始值为0,判断while后面括号内表达式的值为真,执行循环体内的if语句,判断if后面括号内表达式的值为真,执行“continue;”语句.因continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判断,所以i的值未发生变化,循环条件仍然为真,if语句也仍然成立,因此循环将无止境地进行下去。所以,4个选项中D为所选。

20.B

21.21

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

23.用x+8代替函数fun(doublex)中形式参数x。用sin(x)代替函数fun(doublex)中形式参数x。

24.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。

25.数据字典数据字典解析:在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为数据字典。

26.*2*4*6*8**2*4*6*8*解析:程序中定义了一个字符数组a,并初始化为123456789,接着定义了一个指针p并让它指向数组a,紧接着执行了一个while循环,此循环的作用是:当i为偶数时,将“*”赋给a[i],p指向数组末尾,循环结束,此时数组中a[0]、a[2]、a[4]、a[6]和a[8]的值都为“*”,所以最后调用puts()函数输出的a的值为*2*4*6*8*

27.降低复杂性降低复杂性

28.线性结构线性结构解析:本题考查了数据结构的基本概念。与栈类似,队列也是线性表,可以采用链式存储结构,所以带链的队列属于线性结构。

29.交换排序交换排序解析:常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)。注意:常见的排序方法及其作用机制和区别。

30.k<=n或n>=kk++k<=n或n>=k\r\nk++解析:while语句和for语句的作用都是循环控制语句的执行,两者之间是可以互相转换的。将while(EXP)转换为for语句可以写成for(;EXP;);将for(EXP1;EXP2;EXP3)转换为while语句可以写成:EXP1;while(EXP2){...EXP3;}。故本题的两个空分别应填写for语句的第2和第3个表达式。即k<=n或n>=k和k++。当然也可写成与之等价的其他形式。

31.br[i]或*(br+i)br[i]或*(br+i)解析:求最大值算法要求输入的一般是一系列数,例如一个数组,而输出只有一个值。计算时通常的做法是,首先将这一系列数的笫1个值保存到结果变量中,然后用一个指针或循环变量从头(或从第2个值)至尾遍历这一系列数,每次比较结果变量和被遍历的值,如果该值比结果大,则将该值保存到结果中。本题中,3行4列二维数组a显然是算法的输入值,而传给函数fun()的3和4在函数中起到限制循环次数的作用,所以它们代表输入数据的行列数.而传递给函数的一维数组b即没有初始化,最后又要输出它,所以数组b肯定是用来保存每行的最大值。在函数中是一个二重循环,外循环首先将ar[i][0]赋给x,然后内循环中比较x和ar[il刚,若x比较小就让x=ar[i][j],这就说明x是保存结果的临时变量.最后应该将x的值输出到数组b中,也就是形参br的相应位置。故在空格处应该填的内容为br[i]或者写成指针方式*(br+i)。

32.软件生命周期软件生命周期解析:软件产品从考虑其概念开始,到该软件产

温馨提示

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

评论

0/150

提交评论