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

下载本文档

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

文档简介

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

一、单选题(20题)1.在一个源文件中定义的全局变量的作用域为:()

A.本程序的全部范围B.本函数的全部范围C.从定义该变量的位置开始到本文件结束D.以上说法都不正确

2.有以下程序

#include<stdio.h>

intfun(intx,inty)

{if(x==y)return(x);

elsereturn((x+y)/2);

}

main()

{inta=4,b=5,c=6;

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

}

程序运行后的输出结果是A.3B.6C.8D.12

3.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;则与上述程序段功能等价的赋值语句是()。

A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;

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

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

5.下列程序执行后的输出结果是()。voidfunc(int*a,intb[]){b[0]=*a+b;}main{inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A.6B.7C.8D.9

6.以下选项中不属于字符常量的是

A.′C′B.′′C′′C.′\xCC′D.′\072′

7.图的深度优先遍历类似于二叉树的_______。

A.先序遍历B.中序遍历C.后序遍历D.层次遍历

8.以下选项中表示一个合法的常量是(说明:符号口表示空格)()。

A.9口9口9B.0XabC.123E0.2D.2.7e

9.

10.下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}

A.sum=18B.sum=10C.sum=9D.sum=25

11.下列程序的输出结果是

#include"stdio.h"

#defineN3

#defineM3

voidfun(inta[M][N])

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

main()

{inta[M][N];

inti,j;

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

for(j=0;j<N;j++)

a[i][j]=i+j-(i-j);

fun(a);}A.A.3B.4C.5D.6

12.设有以下语句:charstr1[]="string"mstr2[8],*str3,*str4=="string";则______不是对库函数的正确调用。

A.strcpy(str1,"HELLO1");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLO3");

D.strcpy(str4,"HELLO4");

13.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}

A.16B.2C.9D.1

14.下列4个关于C语言的结论中错误的是()。

A.可以用do…while语句实现的循环一定可以用while语句实现

B.可以用for语句实现的循环一定可以用while语句实现

C.可以用while语句实现的循环一定可以用for语句实现

D.do…while语句与while语句的区别仅是关键字“while”出现的位置不同

15.

16.以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成错误的原因是()。A.定义语句“inti,max;”中max未赋初值

B.赋值语句“max=MIN;”中,不应给max赋MIN值

C.语句“if(max<x[i])max=x[i];”中判断条件设置错误

D.赋值语句“max-MIN;”放错了位置

17.在下列定义语句中,编译时会出现编译错误的是()。

A.chara=‘\x2d’;B.chara=‘\n’;C.chara=‘a’;D.chara=“aa”;

18.以下描述中正确的是

A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B.do-while循环由d。开始,用while结束,在while(表达式)后面不能写分号

C.在do-while循环体中,是先执行一次循环,再进行判断

D.do-while循环中,根据情况可以省略while

19.在一个被调用函数中,关于return语句使用的描述,()是错误的。

A.被调用函数中可以不用return语句

B.被调用函数中可以使用多个return语句

C.被调用函数中,如果有返回值,就一定要有return语句

D.被调用函数中,一个return语句可以返回多个值给调用函数

20.若有如下形式的函数:intfun(inta[],int*p,intn){…}调用函数之前需要对函数进行声明,则以下选项中错误的是()。

A.intfun(int,int,int);

B.intfun(inta[],int*p,intn);

C.intfun(inta[],int*,int);

D.intfun(int[],int*,int);

二、2.填空题(20题)21.在计算机领域中,通常用英文单词“Byte'’表示【】。

22.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

printf("%d\n",k);}

23.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

24.执行以下程序段后,s的值为【】。

staticcharch[]="600";

inta,s=0;

for(a=0;ch[a]>='0'&&ch[a]<='9';a++)

s=10*s+ch[a]-'0';

25.能把计算机处理好的结果转换成为文本、图形、图像或声音等形式并输送出来的设备称为【】设备。

26.计算机病毒除有破坏性、潜伏性和激发性外,还有一个最明显的特性是【】

27.有以下程序:

intf(intn)

{if(n=1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

}

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

28.阅读下面程序,则执行后的输出结果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

29.以下fun函数的功能是:累加数组元素中的值,n为数组中元素的个数,累加的和值放入x所指的存储单元中。请填空。

fun(intb[],intn,int*x)

{intk,r=0;

for(k=0,k<n;k++)r=【】;

【】=r;

}

30.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

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

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y;

【】;

}

31.结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。

32.数据模型包括数据结构、()和数据条件。

33.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。

34.若有说明chars1[]="Thatgirl",s2[]="isbeautiful";则使用函数strcmp(s1,s2)后,结果是______。

35.若a的值为1,则表达式!a‖++a的值是______。

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

main()

{charc='z';

printf("%c",c-25);}

37.有以下程序:

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若运行时输入:1234<回车>,程序的输出结果是【】。

38.阅读下列程序,则在执行后,程序的运行结果为#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}

39.设一棵二叉树的中序遍历结果为ABCDEFG,前序遍历结果为DBACFEG,则后序遍历结果为【】。

40.实体联系模型是一种常用的高级概念数据模型,而______是实体联系模型中的核心。

三、1.选择题(20题)41.有以下程序:#include<string.h>voidf(charp[][10],intn){chart[10];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[5][10]={"abc","aabdfg","abbd","dedbe","cd"};f(p,5);printf("%d\n",strlen(p[0]));}程序运行后的输出结果是()。

A.2B.4C.6D.3

42.下面程序段中的循环体的执行次数是()。for(i=4;i<0;i--)for(j=1;j<=4;j++)sum=sum+j;

A.4B.0C.12D.16

43.没有如下定义:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正确的赋值语句是

A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;

44.关系代数运算是以______为基础的运算。

A.关系运算B.谓词运算C.集合运算D.代数运算

45.用链表表示线性表的优点是()。

A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序和逻辑顺序相同

46.有以下程序:#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf("%d\n",i);}执行后输出结果是

A.28B.22C.16D.4

47.下列变量说明语句中,正确的是______。

A.chara=b=c;B.chara;b;c;C.intx;z;D.intx,z;

48.SQL语言又称为______。

A.结构化定义语言B.结构化控制语言C.结构化查询语言D.结构化操纵语言

49.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是______。main(){unsignedinta=31,b=66;pfintf("%c\n,a|b);}

A.66B.98C.bD.B

50.整型变量x和y的值相等,且为非。值,则以下选项中,结果为0的表达式是()

A.x||yB.x|yC.x&yD.xy

51.设a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的结果为______。

A.4B.3C.2D.1

52.有以下程序:structS{intn;inta[20];};voidf(int*a,intn){inti;for(i=0;i<n-1;i++)a[i]+=i;}mainf(){inti;structSs{10,{2,3,1,6,8,7,5,4,10,9}};if(s.a,s.n);for(i=0;i<s.n;i++)printf("%d",s.a[i]);}程序运行后的输出结果是()。

A.2,4,3,9,12,12,11,11,18,9

B.3,4,2,7,9,8,6,5,11,10

C.2,3,1,6,8,7,5,4,10,9

D.1,2,3,6,8,7,5,4,10,9

53.下列语句执行后的结果是______。y=5;p=;x=*p++;

A.x=5,y=5B.x=5,y=6C.x=6,y=5D.x=6,y=6

54.下面四个选项中,均是不合法的用户标识符的选项是()。

A.AP_0doB.floatla0_AC.b-agotointD._123tempint

55.设有声明语句chara='\72';,则变量a______。

A.包含1个字符B.包含2个字符C.包含3个字符D.声明不合法

56.以下能正确定义一维数组的选项是

A.inta[5]={0,1,2,3,4,5};

B.chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};

C.chara={′A′,′B′,′C′};

D.inta[5]="0123";

57.在数据库设计中,将E-R图转换成关系数据模型的过程属于()A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段

58.在下列选项中,没有构成死循环的是()。

A.inti=100;while(1){i==i0+1;if(i>100)break;}

B.for(;;);

C.intk=10000;do{k++;}while(k>10000);

D.ints=36;while(s)--s;

59.执行下列程序后,输出的结果是()。#include<stdio.h>#defineS(X)X*Xvoidmain(){inta=9,k=3,m=2;a/=S(k+m)/S(k+m);printf("%d",a);}

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

60.已有定义inta=-2;和输出语句printf("%81x",a);以下正确的叙述是()。

A.整型变量的输出形式只有%d一种

B.%x是格式符的一种,它可以适用于任何一种类型的数据

C.%x是格式符的一种,其变量的值按十六进制输出,但%81x是错误的

D.%81x不是错误的格式符,其中数字8规定了输出字段的宽度

四、选择题(20题)61.设fun函数的定义形式为voidfun(charch,floatx){…}则下列对函数fun的调用语句中,正确的是()。

A.fun("abc",3.0);

B.t=fun(D.16.5);

C.fun(65,2.8);

D.fun(32,32);

62.

63.

64.

65.软件按功能可以分为应用软件、系统软件和支撑软件(工具软件)。下面属于应用软件的是().

A.学生成绩管理系统B.C语言编译程序C.UNIX操作系统D.数据库管理系统

66.有以下程序

67.在数据管理技术发展的三个阶段中,数据共享最好的是()。

A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同

68.利用fseek函数可实现的操作是()。

A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确

69.

A.包含l个字符B.包含2个字符C.包含3个字符D.说明不合法,c的值不确定

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

A.

B.

C.

D.

71.当c的值不为0时,在下列选项中不能正确将c的值赋给变量a、b的是()。A.A.a=b=c;B.(a=c)C.(a=c)&&(b=c);D.(b=c);

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

main()

{char*s="12134211";

intv1=0,v2=0,v3=0,v4=0,k;

for(k=0;s[k];k++)

switch(s[k])

{case’1’:v1++;

case’3’:v3++;

case’2’:v2++;

defaule:v4++;

}

printf("v1=%d,v2=%d,v3=%d,v4=%d\n,v1,v2,v3,v4);

}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=4,v2=7,v3=5,v4=8

73.

74.

75.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是A.C语言程序仅可以编译执行B.C语言程序仅可以解释执行C.C语言程序既可以编译执行又可以解释执行D.以上说法都不对

76.

77.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式输出数组右上半三角

1234

678

1112

16

则在程序下划线处应填入的是()。

A.i-1B.iC.i+1D.4一i

78.有以下定义语句,编译时会出现编译错误的是()。

A)

B)

A.

B.

79.(56)下列不属于软件调试技术的是()

A.强行排错法

B.集成测试法

C.回溯法

D.原因排除法

80.下列选项中不合法的十六进制数是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

五、程序改错题(1题)81.下列给定程序中函数fun()的功能是:求出如下分数序列的前n项之和,结果通过函数值返回。例如,若n=5,则应输出8.391667。请改正程序中的错误,使其得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。例如,若二维数组中的数据为:132333431424344415253545则一维数组中的内容应该是132333431424344415253545。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C

2.B

3.B解析:本题考核的知识点是for循环次数的计算.本程序中for循环的次数为c-1+1共循环了c次,而每循环一次s的值加1,所以s的值为s+c.而最开始s的值为a,故4个选项中选项B符合题意.

4.B

5.A本题考查函数的调用,从主函数传递到调用函数中,*a的值为0,因此当执行完调用函数后,b[0]的值为6。

6.B解析:在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量,而选项B)是用双引号括起来的字符,表示一个字符串常量。

7.A

8.B当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面数要为整数。

9.D

10.B解析:本题考查带参数的宏的定义及相关运算:S=m+n+m+n*k=1+2+1+2*3=10。

11.B

12.C解析:C语言中:strcpy(st1,st2);,其两个参数均为字符指针或字符数组,选项C中的目的串指针str3没有指向具体有效的存储单元,故是错误的调用。

13.D解析:本题考查带参数的宏调用。a/=SQR(k+m)/SQR(k+m)进行宏替换后得:a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)=10/(2+2+0+2+1)=10/7/1。

14.D解析:本题考查几个循环语句的关系。①do…while语句、while语句、for语句所实现的循环可以相互替代;②do…while语句和while语句的区别是do…while语句至少执行一次。

15.A

16.D“max=MIN;”语句应放在for循环之前,否则每次循环时都重新赋值,值没有变化。

17.DD选项中将字符串常量“aa”赋给字符变量a是错误的。故本题答案为D选项。

18.C解析:do-while语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。

19.D

20.AC语言中,函数声明的函数名、返回值类型和参数列表必须与函数定义相同。其中参数列表中可以省略参数名。题干中,fun函数返回整型,3个参数分别是:整型指针、整型指针、整型。选项A中,第1个参数应该是整型指针类型,第2个参数也应该是指针类型,错误;其他选项都正确。故本题答案为A选项。

21.字节字节

22.k=p;k=p;解析:为要寻找数组中的最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查是从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k)更大时,应该用p更新k。所以在空框处应填入代码“k=p;”。

23.静态分析静态分析解析:程序测试分为静态分析和动态测试。其中,静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

24.600600解析:程序中for循环的条件是当前字符大于或等于字符\'0\'且小于或等于字符\'9\'的ASCII码值,则s=10*s+ch[a]-\'0\'。计算结果是将字符串'600'转换为整型数600。

25.输出输出

26.传染性或传播性传染性或传播性

27.33解析:i=1时,f(1)=1,j=j+f(1)=0+1=1;i=2时,f(2)=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此时循环结束,程序运行后的输出结果是3。

28.33解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf('%d\\n',z);语句。

29.r+b[k]*x

30.&a&bmaxintxyreturn(z)

31.模块化模块化

32.数据操作数据操作解析:数据模型就是现实世界的反映,数据模型所描述的内容有3个部分,它们是数据结构、数据操作与数据约束。

33.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。

34.-1-1解析:strcmp(s1,s2)函数的作用是:对字符数组s2和字符数组s1进行比较。如果s1<s2,则返回负数;如果s1==s2,则返回0;如果s1>s2,则返回正数。

35.11解析:逻辑运算中,非1即0,非0即1,!a=0,++a为逻辑1,所以0和1相或结果为1。

36.aa解析:“z”的ASCII码值为122,经过c-25运算后得97,以字符形式输出是a。

37.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。

38.D

39.ACBEGFDACBEGFD解析:①确定根节点。在前序遍历中,首先防问根结点,因此可以确定前序序列DBACFEG中的第一个结点D为二叉树的根结点。

②划分左子树和右子树。在中序遍历中,访问根结点的次序为居中,首先访问访问左子树上的结点,最后访问右子树上的结点,可知,在中序序列ABCDEFG中,以根结点D为分界线,子序列ABC在左子树中,子序列EFG在右子树中。如下图所示。

③确定左子树的结构。对于左子树ABC,位于前序序列最前面的一个结点为了树的根结点,根据前序遍历结果,B为该了树的根结点,中序序列中位于该根结点前面的结点构成左子树上的结点子序列,位于该根结点后面的结点构成右子树上的结点子序列,所以A为该左子树的左结点,C为右结点。现在可确定左子树结构如下:

④确定右子树的结构。同理,可知右子树的结构。

本二叉树恢复的结果如图所示。

根据后序遍历的原则,该二叉树后序遍历的结果为ACBEGFD。

40.实体联系图或E-R图实体联系图或E-R图解析:实体联系图(B-R图)是实体联系模型中的核心。由于E-R图描述的是数据流图中数据存储及其之间的关系,因此它是数据库观念设计的最常用的工具。

41.C解析:本题考核的是二维字符数组按行存放字符串、二维数组名作为函数的参数以及字符串的排序。主函数中定义了一个二维字符串数组p并按行赋值,调用f()函数,将字符串从小到大排序,strcmp()函数的功能是对两个字符串作向右逐个字符比较,直到出现不同的字符或遇到“\\0”为止。如果全部字符都相同,则认为相等;若出现不同的字符.则以第一个不相同的字符的比较结果为准。由此可知最小的字符串是“aabdfg”,排序后存放在p[0]中,最后在主函数中输出p[0]的长度。

42.B解析:本题是一个双重循环,而外循环的循环条件i<O在刚开始的时候就不满足(i的初值为4),所以循环体一次也不会执行。故应该选择B。

43.C解析:data是一结构体变量,a是它的成员,因此引用a域的正确方法是:data.a,取它的地址赋值给指针变量p的语句应该是:p=&data.a。选项A,将a的地址直接赋给了p,而忽略了a为结构体内部的一个成员,而不是一单独的变量,故选项A不正确;选项B在p=data.a表达式中右边为一个结构体变量的成员不是地址,而左边为一指针应该将一地址赋给它,改选项B不正确:选项D表达式*p=data.a是将结构体变量中的成员a的值赋给指针p所指向的变量值,而不是使指针p指向data中的a域,故选项D不正确;4个选项中只有C正确。

44.C解析:关系代数是以集合代数为基础女发展起来的,它是以关系代数作为运算对象的一组高级运算的集合。它的基本操作是并、交、差、笛卡尔积,另外还包括针对数据库环境专门设计的操作,包括对关系进行垂直分割(投影)、水平分割(选择)、关系的结合(连接)等。

45.C【解析】在链表中因为除了存放数据元素之外,还要存放指针,所以链表花费的存储空间要比顺序表还要多,在插入和删除数据元素时,只需要移动相应的记录指针即可,在链表中,数据的物理结构与逻辑结构不一定相同,因为是靠指针来实现对数据的指定的,所以不能进行随机存取。

46.A解析:本题考核的知识点是宏定义的简单应用。本题中首先将所有的宏替换掉,则表达式为i=4+4*4+4/2+2*2+2,故最后输出的i的值为28。所以,4个选项中选项A符合题意。

47.D解析:同时说明多个变量为同一类型时,变量之间应用逗号分隔。故D为正确选项。

48.CC。【解析】SQL语言的全称为StructuredQueryLanguage,它是一种介于关系代数与关系演算之间的结构化查询语言,是一种面向数据库的通用数据处理语言规范。它包含数据查询语言、数据操纵语言、数据定义语言和数据控制语言4个部分。

49.C解析:位运算符“|”的作用是按位或,即两个二进制数的相应位中只要有—个为1,该位的结果值为1。最后以字符型输出,98对应的字符“b”。

50.D

51.D

52.A

53.A解析:p=&y使指针p指向y,x=*p++使x=y,P指向下一个数据。

54.C解析:C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字,b-a中'-'不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法用户标识符的选项是C)。

55.A解析:转文字符常量'\\xx'可以把'\\'后面的数字转换为对应的ASCII字符。

56.B解析:选项A)中,定义的初值个数大于数组的长度;选项C)中,数组名后少了中括号;选项D)中,整型数组不能赋予字符串。

57.B数据库应用系统的逻辑设计包括数据库逻辑结构设计、数据库事务概要设计和应用程序概要设计三方面。数据库逻辑结构设计的主要步骤为:将E—R图转换为初始关系模式,对初始关系模式进行优化,检查关系表对数据库事务的支持性,确定关系模式完整性约束,设计基于关系模式的用户视图。

58.D

59.D解析:本题主要是考查带参数的宏定义及其相关运算。本题中宏运算过程如下:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。

60.D解析:整型变量的输出形式有:%d,%o,%x,%u等,%x是以十六进制无符号形式输出整数。十六进制数同样也可以像%md一样按%mlx输出指定宽度的长整型数。

61.C由题目的已知条件函数fun的定义形式voidfun(charch,floatx){…)可知第一个形参为字符型,所以A不符合,第二个形参为精度型,所以D不符合,函数fun定义为void型(无论返回值型),故其没有返回值,所以选项B错误。选项C的第一个实参的类型为字符型,第二个实参的类型为单精度型,与函数fun的形式参数的类型相符合,所以选项C为正确答案。

62.D

63.A

64.C

65.A软件按功能可以分为:应用软件、系统软件、支撑软件。操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件,因此B)、C)、D)都是系统软件,只有A)是应用软件。

66.Af函数是值传递,不会改变main函数中t的值,所以结果为A)。

67.C数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C)。

68.D解析:改变文件位置指针函数fseek()的功能:①改变文件的位置指针;②辅助实现文件的顺序读写;③辅助实现文件的随机读写。

69.AC语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个”\”开头的字符。其中,”\

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

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

1,0

2.O

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

1,2

3.4

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

1,0

2.3

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

71.C选项A是先将a的值赋给变量b,再将变量b的值赋给变量c,不合题意;B选项中由于c的值不为0,在将c的值赋给变量a后,表达式a=c的值为1,不再对表达式b=c计算;对于c选项,表达式a=c的值为1,再求表达式b=c的值为1,然后进行逻辑与运算;D选项将b的值赋给c后再赋给e,故选择C选项。

72.Dk=0,s[k]=1,v1++,v2++,v3++,v4++;k=1,s[k]=2,v2++,v4++;k=3,s[k]=1,……,直到k=8,s[k]=0.退出循环

73.C

74.D

75.A\n解释程序是将源程序(如BASIC)作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。编译程序是把高级语言(如FORTRAN、COBOL、Pascal、C等)源程序作为输入,进行翻译转换,产生出机器语言的目标程序,然后再让计算机执行这个目标程序,得到计算结果。

\n

76.D

77.B

\n本题中要求输出右上半角的数,对角线上的数的下标相同,所以j=i。

\n

78.Caa是字符串,字符串的表示要用双引号,可以赋值给字符数组和字符指针变量,但字符串不能赋值给字符变量,只能给字符变量赋值单个字符。

79.B

80.C十六进制是以“0x、0X”开头的字符串,字符串中只能含有0~9这l0个数字和a、b、C、d、e、f这6个字母。

81.(1)错误:fun(intn)

正确:doublefun(intn)

(2)错误:s=s+(Double)a/b;

正确:s=s+(double)a/b;

【解析】本题考查函数的定义规则。函数定义的一般形式为类型标识符函数名(形式参数表列){函数体}。fun()函数中,最后返回的是变量s,由变量s的定义可知,返回值是double型,所以fun()函数定义时应明确注明标识符double类型。Double为书写问题,写程序时切记书写格式。

82.

【解析】要将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,可以首先通过行循环,然后列循环取出二维数组中的每一个元素,并将其放入一维数组中,最后将一维数组的长度通过形参返回到主函数当中。

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

一、单选题(20题)1.在一个源文件中定义的全局变量的作用域为:()

A.本程序的全部范围B.本函数的全部范围C.从定义该变量的位置开始到本文件结束D.以上说法都不正确

2.有以下程序

#include<stdio.h>

intfun(intx,inty)

{if(x==y)return(x);

elsereturn((x+y)/2);

}

main()

{inta=4,b=5,c=6;

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

}

程序运行后的输出结果是A.3B.6C.8D.12

3.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;则与上述程序段功能等价的赋值语句是()。

A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;

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

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

5.下列程序执行后的输出结果是()。voidfunc(int*a,intb[]){b[0]=*a+b;}main{inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A.6B.7C.8D.9

6.以下选项中不属于字符常量的是

A.′C′B.′′C′′C.′\xCC′D.′\072′

7.图的深度优先遍历类似于二叉树的_______。

A.先序遍历B.中序遍历C.后序遍历D.层次遍历

8.以下选项中表示一个合法的常量是(说明:符号口表示空格)()。

A.9口9口9B.0XabC.123E0.2D.2.7e

9.

10.下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}

A.sum=18B.sum=10C.sum=9D.sum=25

11.下列程序的输出结果是

#include"stdio.h"

#defineN3

#defineM3

voidfun(inta[M][N])

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

main()

{inta[M][N];

inti,j;

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

for(j=0;j<N;j++)

a[i][j]=i+j-(i-j);

fun(a);}A.A.3B.4C.5D.6

12.设有以下语句:charstr1[]="string"mstr2[8],*str3,*str4=="string";则______不是对库函数的正确调用。

A.strcpy(str1,"HELLO1");

B.strcpy(str2,"HELLO2");

C.strcpy(str3,"HELLO3");

D.strcpy(str4,"HELLO4");

13.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}

A.16B.2C.9D.1

14.下列4个关于C语言的结论中错误的是()。

A.可以用do…while语句实现的循环一定可以用while语句实现

B.可以用for语句实现的循环一定可以用while语句实现

C.可以用while语句实现的循环一定可以用for语句实现

D.do…while语句与while语句的区别仅是关键字“while”出现的位置不同

15.

16.以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;i<n;i++){max=MIN;if(max<x[i])max=x[i];)returnmax;}造成错误的原因是()。A.定义语句“inti,max;”中max未赋初值

B.赋值语句“max=MIN;”中,不应给max赋MIN值

C.语句“if(max<x[i])max=x[i];”中判断条件设置错误

D.赋值语句“max-MIN;”放错了位置

17.在下列定义语句中,编译时会出现编译错误的是()。

A.chara=‘\x2d’;B.chara=‘\n’;C.chara=‘a’;D.chara=“aa”;

18.以下描述中正确的是

A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B.do-while循环由d。开始,用while结束,在while(表达式)后面不能写分号

C.在do-while循环体中,是先执行一次循环,再进行判断

D.do-while循环中,根据情况可以省略while

19.在一个被调用函数中,关于return语句使用的描述,()是错误的。

A.被调用函数中可以不用return语句

B.被调用函数中可以使用多个return语句

C.被调用函数中,如果有返回值,就一定要有return语句

D.被调用函数中,一个return语句可以返回多个值给调用函数

20.若有如下形式的函数:intfun(inta[],int*p,intn){…}调用函数之前需要对函数进行声明,则以下选项中错误的是()。

A.intfun(int,int,int);

B.intfun(inta[],int*p,intn);

C.intfun(inta[],int*,int);

D.intfun(int[],int*,int);

二、2.填空题(20题)21.在计算机领域中,通常用英文单词“Byte'’表示【】。

22.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

printf("%d\n",k);}

23.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

24.执行以下程序段后,s的值为【】。

staticcharch[]="600";

inta,s=0;

for(a=0;ch[a]>='0'&&ch[a]<='9';a++)

s=10*s+ch[a]-'0';

25.能把计算机处理好的结果转换成为文本、图形、图像或声音等形式并输送出来的设备称为【】设备。

26.计算机病毒除有破坏性、潜伏性和激发性外,还有一个最明显的特性是【】

27.有以下程序:

intf(intn)

{if(n=1)return1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

}

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

28.阅读下面程序,则执行后的输出结果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

29.以下fun函数的功能是:累加数组元素中的值,n为数组中元素的个数,累加的和值放入x所指的存储单元中。请填空。

fun(intb[],intn,int*x)

{intk,r=0;

for(k=0,k<n;k++)r=【】;

【】=r;

}

30.理解下面的程序,填空完善程序。

main()

{inta,b,c;

scanf("%d%d",【】);

c=【】(a,b);

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

}

intmax(x,y)

【】;

{intz;

if(x>y)z=x;

elsez=y;

【】;

}

31.结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。

32.数据模型包括数据结构、()和数据条件。

33.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。

34.若有说明chars1[]="Thatgirl",s2[]="isbeautiful";则使用函数strcmp(s1,s2)后,结果是______。

35.若a的值为1,则表达式!a‖++a的值是______。

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

main()

{charc='z';

printf("%c",c-25);}

37.有以下程序:

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若运行时输入:1234<回车>,程序的输出结果是【】。

38.阅读下列程序,则在执行后,程序的运行结果为#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}

39.设一棵二叉树的中序遍历结果为ABCDEFG,前序遍历结果为DBACFEG,则后序遍历结果为【】。

40.实体联系模型是一种常用的高级概念数据模型,而______是实体联系模型中的核心。

三、1.选择题(20题)41.有以下程序:#include<string.h>voidf(charp[][10],intn){chart[10];inti,j;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(strcmp(p[i],p[j])>0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[5][10]={"abc","aabdfg","abbd","dedbe","cd"};f(p,5);printf("%d\n",strlen(p[0]));}程序运行后的输出结果是()。

A.2B.4C.6D.3

42.下面程序段中的循环体的执行次数是()。for(i=4;i<0;i--)for(j=1;j<=4;j++)sum=sum+j;

A.4B.0C.12D.16

43.没有如下定义:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正确的赋值语句是

A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;

44.关系代数运算是以______为基础的运算。

A.关系运算B.谓词运算C.集合运算D.代数运算

45.用链表表示线性表的优点是()。

A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序和逻辑顺序相同

46.有以下程序:#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf("%d\n",i);}执行后输出结果是

A.28B.22C.16D.4

47.下列变量说明语句中,正确的是______。

A.chara=b=c;B.chara;b;c;C.intx;z;D.intx,z;

48.SQL语言又称为______。

A.结构化定义语言B.结构化控制语言C.结构化查询语言D.结构化操纵语言

49.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是______。main(){unsignedinta=31,b=66;pfintf("%c\n,a|b);}

A.66B.98C.bD.B

50.整型变量x和y的值相等,且为非。值,则以下选项中,结果为0的表达式是()

A.x||yB.x|yC.x&yD.xy

51.设a=1,b=2,c=3,d=4,则表达式a<b?a:c<d?a:d的结果为______。

A.4B.3C.2D.1

52.有以下程序:structS{intn;inta[20];};voidf(int*a,intn){inti;for(i=0;i<n-1;i++)a[i]+=i;}mainf(){inti;structSs{10,{2,3,1,6,8,7,5,4,10,9}};if(s.a,s.n);for(i=0;i<s.n;i++)printf("%d",s.a[i]);}程序运行后的输出结果是()。

A.2,4,3,9,12,12,11,11,18,9

B.3,4,2,7,9,8,6,5,11,10

C.2,3,1,6,8,7,5,4,10,9

D.1,2,3,6,8,7,5,4,10,9

53.下列语句执行后的结果是______。y=5;p=;x=*p++;

A.x=5,y=5B.x=5,y=6C.x=6,y=5D.x=6,y=6

54.下面四个选项中,均是不合法的用户标识符的选项是()。

A.AP_0doB.floatla0_AC.b-agotointD._123tempint

55.设有声明语句chara='\72';,则变量a______。

A.包含1个字符B.包含2个字符C.包含3个字符D.声明不合法

56.以下能正确定义一维数组的选项是

A.inta[5]={0,1,2,3,4,5};

B.chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};

C.chara={′A′,′B′,′C′};

D.inta[5]="0123";

57.在数据库设计中,将E-R图转换成关系数据模型的过程属于()A.需求分析阶段B.逻辑设计阶段C.概念设计阶段D.物理设计阶段

58.在下列选项中,没有构成死循环的是()。

A.inti=100;while(1){i==i0+1;if(i>100)break;}

B.for(;;);

C.intk=10000;do{k++;}while(k>10000);

D.ints=36;while(s)--s;

59.执行下列程序后,输出的结果是()。#include<stdio.h>#defineS(X)X*Xvoidmain(){inta=9,k=3,m=2;a/=S(k+m)/S(k+m);printf("%d",a);}

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

60.已有定义inta=-2;和输出语句printf("%81x",a);以下正确的叙述是()。

A.整型变量的输出形式只有%d一种

B.%x是格式符的一种,它可以适用于任何一种类型的数据

C.%x是格式符的一种,其变量的值按十六进制输出,但%81x是错误的

D.%81x不是错误的格式符,其中数字8规定了输出字段的宽度

四、选择题(20题)61.设fun函数的定义形式为voidfun(charch,floatx){…}则下列对函数fun的调用语句中,正确的是()。

A.fun("abc",3.0);

B.t=fun(D.16.5);

C.fun(65,2.8);

D.fun(32,32);

62.

63.

64.

65.软件按功能可以分为应用软件、系统软件和支撑软件(工具软件)。下面属于应用软件的是().

A.学生成绩管理系统B.C语言编译程序C.UNIX操作系统D.数据库管理系统

66.有以下程序

67.在数据管理技术发展的三个阶段中,数据共享最好的是()。

A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.三个阶段相同

68.利用fseek函数可实现的操作是()。

A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确

69.

A.包含l个字符B.包含2个字符C.包含3个字符D.说明不合法,c的值不确定

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

A.

B.

C.

D.

71.当c的值不为0时,在下列选项中不能正确将c的值赋给变量a、b的是()。A.A.a=b=c;B.(a=c)C.(a=c)&&(b=c);D.(b=c);

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

main()

{char*s="12134211";

intv1=0,v2=0,v3=0,v4=0,k;

for(k=0;s[k];k++)

switch(s[k])

{case’1’:v1++;

case’3’:v3++;

case’2’:v2++;

defaule:v4++;

}

printf("v1=%d,v2=%d,v3=%d,v4=%d\n,v1,v2,v3,v4);

}

A.v1=4,v2=2,v3=1,v4=1

B.v1=4,v2=9,v3=3,v4=1

C.v1=5,v2=8,v3=6,v4=1

D.v1=4,v2=7,v3=5,v4=8

73.

74.

75.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是A.C语言程序仅可以编译执行B.C语言程序仅可以解释执行C.C语言程序既可以编译执行又可以解释执行D.以上说法都不对

76.

77.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式输出数组右上半三角

1234

678

1112

16

则在程序下划线处应填入的是()。

A.i-1B.iC.i+1D.4一i

78.有以下定义语句,编译时会出现编译错误的是()。

A)

B)

A.

B.

79.(56)下列不属于软件调试技术的是()

A.强行排错法

B.集成测试法

C.回溯法

D.原因排除法

80.下列选项中不合法的十六进制数是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

五、程序改错题(1题)81.下列给定程序中函数fun()的功能是:求出如下分数序列的前n项之和,结果通过函数值返回。例如,若n=5,则应输出8.391667。请改正程序中的错误,使其得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。例如,若二维数组中的数据为:132333431424344415253545则一维数组中的内容应该是132333431424344415253545。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C

2.B

3.B解析:本题考核的知识点是for循环次数的计算.本程序中for循环的次数为c-1+1共循环了c次,而每循环一次s的值加1,所以s的值为s+c.而最开始s的值为a,故4个选项中选项B符合题意.

4.B

5.A本题考查函数的调用,从主函数传递到调用函数中,*a的值为0,因此当执行完调用函数后,b[0]的值为6。

6.B解析:在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量,而选项B)是用双引号括起来的字符,表示一个字符串常量。

7.A

8.B当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面数要为整数。

9.D

10.B解析:本题考查带参数的宏的定义及相关运算:S=m+n+m+n*k=1+2+1+2*3=10。

11.B

12.C解析:C语言中:strcpy(st1,st2);,其两个参数均为字符指针或字符数组,选项C中的目的串指针str3没有指向具体有效的存储单元,故是错误的调用。

13.D解析:本题考查带参数的宏调用。a/=SQR(k+m)/SQR(k+m)进行宏替换后得:a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)=10/(2+2+0+2+1)=10/7/1。

14.D解析:本题考查几个循环语句的关系。①do…while语句、while语句、for语句所实现的循环可以相互替代;②do…while语句和while语句的区别是do…while语句至少执行一次。

15.A

16.D“max=MIN;”语句应放在for循环之前,否则每次循环时都重新赋值,值没有变化。

17.DD选项中将字符串常量“aa”赋给字符变量a是错误的。故本题答案为D选项。

18.C解析:do-while语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。

19.D

20.AC语言中,函数声明的函数名、返回值类型和参数列表必须与函数定义相同。其中参数列表中可以省略参数名。题干中,fun函数返回整型,3个参数分别是:整型指针、整型指针、整型。选项A中,第1个参数应该是整型指针类型,第2个参数也应该是指针类型,错误;其他选项都正确。故本题答案为A选项。

21.字节字节

22.k=p;k=p;解析:为要寻找数组中的最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查是从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k)更大时,应该用p更新k。所以在空框处应填入代码“k=p;”。

23.静态分析静态分析解析:程序测试分为静态分析和动态测试。其中,静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

24.600600解析:程序中for循环的条件是当前字符大于或等于字符\'0\'且小于或等于字符\'9\'的ASCII码值,则s=10*s+ch[a]-\'0\'。计算结果是将字符串'600'转换为整型数600。

25.输出输出

26.传染性或传播性传染性或传播性

27.33解析:i=1时,f(1)=1,j=j+f(1)=0+1=1;i=2时,f(2)=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此时循环结束,程序运行后的输出结果是3。

28.33解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf('%d\\n',z);语句。

29.r+b[k]*x

30.&a&bmaxintxyreturn(z)

31.模块化模块化

32.数据操作数据操作解析:数据模型就是现实世界的反映,数据模型所描述的内容有3个部分,它们是数据结构、数据操作与数据约束。

33.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。

34.-1-1解析:strcmp(s1,s2)函数的作用是:对字符数组s2和字符数组s1进行比较。如果s1<s2,则返回负数;如果s1==s2,则返回0;如果s1>s2,则返回正数。

35.11解析:逻辑运算中,非1即0,非0即1,!a=0,++a为逻辑1,所以0和1相或结果为1。

36.aa解析:“z”的ASCII码值为122,经过c-25运算后得97,以字符形式输出是a。

37.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。

38.D

39.ACBEGFDACBEGFD解析:①确定根节点。在前序遍历中,首先防问根结点,因此可以确定前序序列DBACFEG中的第一个结点D为二叉树的根结点。

②划分左子树和右子树。在中序遍历中,访问根结点的次序为居中,首先访问访问左子树上的结点,最后访问右子树上的结点,可知,在中序序列ABCDEFG中,以根结点D为分界线,子序列ABC在左子树中,子序列EFG在右子树中。如下图所示。

③确定左子树的结构。对于左子树ABC,位于前序序列最前面的一个结点为了树的根结点,根据前序遍历结果,B为该了树的根结点,中序序列中位于该根结点前面的结点构成左子树上的结点子序列,位于该根结点后面的结点构成右子树上的结点子序列,所以A为该左子树的左结点,C为右结点。现在可确定左子树结构如下:

④确定右子树的结构。同理,可知右子树的结构。

本二叉树恢复的结果如图所示。

根据后序遍历的原则,该二叉树后序遍历的结果为ACBEGFD。

40.实体联系图或E-R图实体联系图或E-R图解析:实体联系图(B-R图)是实体联系模型中的核心。由于E-R图描述的是数据流图中数据存储及其之间的关系,因此它是数据库观念设计的最常用的工具。

41.C解析:本题考核的是二维字符数组按行存放字符串、二维数组名作为函数的参数以及字符串的排序。主函数中定义了一个二维字符串数组p并按行赋值,调用f()函数,将字符串从小到大排序,strcmp()函数的功能是对两个字符串作向右逐个字符比较,直到出现不同的字符或遇到“\\0”为止。如果全部字符都相同,则认为相等;若出现不同的字符.则以第一个不相同的字符的比较结果为准。由此可知最小的字符串是“aabdfg”,排序后存放在p

温馨提示

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

评论

0/150

提交评论