2022年广东省江门市全国计算机等级考试C语言程序设计_第1页
2022年广东省江门市全国计算机等级考试C语言程序设计_第2页
2022年广东省江门市全国计算机等级考试C语言程序设计_第3页
2022年广东省江门市全国计算机等级考试C语言程序设计_第4页
2022年广东省江门市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

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

文档简介

2022年广东省江门市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设二叉排序树中有n个结点,则二叉排序树的平均查找长度为()。A.O(1)

B.O(log2n)

C.O(n)

D.(n2)

2.若有说明语句:double*P,a;则能通过scanf语句正确给输入项读入数据的程序段是()。

A.*p=&a;scanf("%lf",p);

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

C.p=&a;scanf("%lf",*p);

D.p=&a;scanf("%lf",p);

3.

4.以下对C语言函数的有关描述中,正确的是

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

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

C.函数必须有返回值,否则不能使用函数

D.函数必须有返回值,返回值类型不定

5.计算机系统的组成是______。

A.主机、外设B.运算器、控制器C.硬件系统和软件系统D.CPU、内存储器

6.用单链表方式存储的线性表,存储每个结点需要两个域,一个数据域,另一个是()。

A.当前结点的所在地址B.后继结点的所在地址C.空指针域D.空闲域

7.程序设计的任务包括()。

A.编写程序代码并上机调试B.确定所用数据结构C.确定所用算法D.以上选项均正确

8.下列程序的输出结果是()。#include<stdio.h>main{inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1;case2:a+=2;default:a+=3;}}printf("%d",a);}A.19B.1C.6D.8

9.数据的逻辑关系是指数据元素的()。

A.关联B.结构C.数据项D.存储方式

10.有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);}程序的运行结果是()。

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

11.有以下程序:#include<stdio.h>main(){intt;scanf(“%d”,&t);if(t++<6)printf(“%d\n”,t);elseprintf(“%d\n”,t--);printf(“\n”);}执行时输入6并按<Enter>键,则输出结果是()。A.6B.8C.7D.5

12.

13.一个算法的语句执行次数为(2n2+2nlog2n+4n-7),则其时间复杂度为()。

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

14.

15.一个顺序栈一旦声明,其占用空间的大小()。

A.已固定B.可以变动C.不能固定D.动态变化

16.下面哪些使用的不是贪心算法()

A.单源最短路径中的Dijkstra算法

B.最小生成树的Prim算法

C.最小生成树的Kruskal算法

D.计算每对顶点最短路径的Floyd-Warshall算法

17.

18.针对二分查找算法,假设一个有序数组有136个元素,那么要查找到第10个元素,需要比较的元素为()

A.68,34,17,9,13,11,10

B.68,34,17,8,12,10

C.69,35,18,10

D.68,34,18,9,13,11,10

19.有以下程序:

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

A.45B.50C.60D.55

20.以下程序的输出结果是()。main{inta=1,b;for(b=1,b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a=3;}printf("%d\n",b);}A.A.3B.4C.5D.6

二、2.填空题(20题)21.若有下列定义和语句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

则输出结果为______。

22.计算机网络按通信距离来划分可以分为【】。

23.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

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

{if(x[m]>i){i=x[m];p0=m;}

elseif(x[m]<j){j=x[m];p1=m;}

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[p1];x[p1]=【】;【】=t;

}

main()

{inta[10],u;

for(u=0;u<10;u++)scanf("%d",&a[u]);

f(a,10);

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

printf("\n");

}

24.关系模型的3类完整性指的是【】、参照完整性、用户定义的完整性。

25.用树形结构表示实体之间联系的模型是()。

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

27.数据库系统中实现各种数据管理功能的核心软件称为【】。

28.下面的语句要使指针p指向一个double类型的动态存储单元,请填空。

p=【】malloc(sizeof(double));

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

30.若按功能划分,软件测试的方法通常分为白盒测试方法和【】测试方法。

31.有以下程序:

#include<stdio.h>

main()

{

charc;

while((c=getchar())!='?')putchar(--c);

}

程序运行时,如查从键盘输入:Y?N?<回车>,则输出的结果为______。

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

#include<stdio.h>

main()

{intfun();fun();}

fun()

{staticinta[3]={0,1,2};

inti;

for(i=0;i<3;i++)a[i]+=a[i];

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

printf("\n");}

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

main()

{inta=1,b=2;

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

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

}

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

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

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

}

35.数据结构分为逻辑结构与存储结构,线性链表属于【】。

36.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

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

#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);

}

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

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

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

voidreverse(inta[],intn)

{inti,t;

for(i=0;i<n/2;i++)

{t=a[i];a[i]=a[n+1+i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':

case'A':

case'b':

case'B':printf("good");break;

case'c':case'C':printf("pass");

case'd':case'D':printf("warn");

}

三、1.选择题(20题)41.有以下程序:main(){intx=102,y=012;printf(“%2d,%2d\n”,x,y);}执行后输出结果是()。

A.10,01B.02,12C.102,10D.02,10

42.下列程序执行后输出的结果是______。intd=1;fun(intp){intd=5;d+=p++;printf("%d,",D);}main(){inta=3;fun(A);d+=a++;printf("%d\n",D);}

A.8,12B.9,13C.8,4D.9,5

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

A.在C语言中,对二进制文件的访问速度比文本文件快

B.在C语言中,随机文件以二进制代码形式存储数据

C.语句FILEfp;定义了一个名为fp的文件指针

D.C语言中的文本文件以ASCII码形式存储数据

44.下列不是合法的C语言语句是()。

A.a=5B.{inti;i++;}C.;D.{;}

45.信息隐蔽的概念与下述______概念直接相关。

A.软件结构定义B.模块独立性C.模块类型划分D.模拟耦合度

46.下列叙述中,不属于软件需求规格说明书的作用的是()

A.便于用户,开发人员进行理解和交流

B.反映出用户问题的结构,可以作为软件开发工作的基础和依据

C.作为确认测试和验收的依据

D.便于开发人员进行需求分析

47.下列选项中不符合良好程序设计风格的是A.源程序要文档化B.数据说明的次序要规范化C.避免滥用goto语句D.模块设计要保证高耦合、高内聚

48.有以下程序:#include<string.h>main(){charstr[][20]={"Hello","beijing"},*p=str;ptintf("%\n",strlen(p+20));}程序运行后的输出结果是()。

A.0B.5C.7D.20

49.有下列程序:

main()

{intt,a=1,b=5,C=-2;

while(a>b>C)

{t=a;a=b;b=t;c++;}

printf("%d,%d,%d",a,b,C);

}

程序的输出结果是()。

A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2

50.下面的程序在编泽时产生错误,其出错原因是()。#include<stdio.h>main(){int1_case;floatprintF;printf("请输入2个数:");scanf("%d%f",&1_case,&printF);printf("%d%f\n",1_case,printF);}

A.定义语句出错,1_case不能作为变量名

B.定义语句出错,printF不能用作用户自定义标识符

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句无错,printf不能输出1_case的值

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

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

52.中国国家计算机网络设施是()

A.NCFCB.CERNETC.ISDND.Iinternet

53.已知函数的调用形式为fread(buf,size,count,fp),参数buf的含义是

A.一个整型变量,代表要读入的数据项总数

B.一个文件指针,指向要读的文件

C.一个指针;指向要读入数据的存放地址

D.一个存储区,存放要读的数据项

54.若有以下定义:intt[3][2];,能正确表示t数组元素地址的表达式是______。

A.&t[3][2]B.t[3]C.t[1]D.*t[2]

55.结构化程序设计的3种结构是()

A.顺序结构,分支结构,跳转结构

B.顺序结构,选择结构,循环结构

C.分支结构,选择结构,循环结构

D.分支结构,跳转结构,循环结构

56.若有定义语句:inta[2][3],*p[3],则以下语句中正确的是A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;

57.若有以下说明和语句:structst{intn;char*ch;};structsta[3]={5,"abc",7,"def",9,"ghk"},*p=a;则值为6的表达式是______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

58.C语言库函数fgets(str,n,fp)的功能是______。

A.从中指向的文件中读取长度n的字符串存入str指向的内存

B.从fp指向的文件中读取长度不超过n-1的字符串存入str指向的内存

C.从fp指向的文件中读取n个字符串存入str指向的内存

D.从str读取至多n个字符到文件fp

59.定义如下变量和数组:intk;inta[3][3]={9,8,7,6,5,4,3,2,1};则下面语句的输出结果是()。for(k=0;k<3;k++)printf("%d",a[k][k]);

A.753B.951C.963D.741

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

A.continue语句的作用是结束整个循环的执行

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

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

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

四、选择题(20题)61.有以下程序:

当执行程序时,按下列方式输入数据(从第l列开始,<;CR>;代表回车,注意:回车也是一个字符]12<;CR>;34<;CR>;则输出结果是()。

A.12B.123C.1234D.12343

62.下列语句中,显示没有下画线的超链接的语句是()。

A.a{text—decoration:none}

B.a{text—decoration:nounderline}

C.a{underline:none}

D.a{decoration:nounderline}

63.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

64.

若有定义和语句:

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

65.若有以下的定义:‘intt[3][2];”,能正确表示t数组元素地址的表达式是()。

A.&t[3][2]B.t[3]C.t[l]D.t[2][2]

66.负责数据库中查询操作的数据库语言是()。

A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

67.以下程序爱中,与语句:

68.

有以下程序:

main

{intx=102,y=012;

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

}

执行后输出结果是()。

A.10,01B.02,12C.102,10D.02,10

69.

70.以下选项中合法的标识符是()。A.1_2B._12C.2_1D.12__

71.

72.以下程序段中的变量已正确定义:

程序段的输出结果是()。

A.********B.****C.**D.*

73.串的长度是______。A.A.串中不同字符的个数

B.串中不同字母的个数

C.串中所含字符的个数且字符个数大于零

D.串中所含字符的个数

74.

75.

76.

77.

有以下程序:

fun(intx,inty){return(x+y);)

main

{inta=1,b=2,c=2,sum;

sum=fun((a++,b++,a+b),c++);

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

}

执行后的结果是()。

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

78.以下选项中不能作为c语言合法常量的是()。.

A.0.1e+6B.’cd’.C.”、a”D.’\011

79.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。

A.详细设计B.需求分析C.总体设计D.编程调试

80.若在定义语句:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。A.A.scanf("%d",a,b,c);B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

五、程序改错题(1题)81.下列给定程序中函数fun()的功能是:把从主函数中输人的3个数。最大的数放在a中,中间的数放在b中,最小的数放在C中。例如,若输入的数为:55,12,34,输出的结果应当是:a=55.0,b=34.0,c=12.0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编写函数proc,其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。例如,当a=25,b=43,实际输入时个数之间以Enter键分隔,调用该函数后,c=3452。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B

2.D解析:*p间接引用指针指向的变量,因此“(*p)=&a”不对。scanf()的输入变量必须为地址,因此C是错误的。

3.C

4.A解析:C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函数不能嵌套定义。函数可以没有返回值,若有返回值,则返回值类型必须确定。

5.C

6.B

7.D程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。程序设计的任务包括选项A)、B)、c)等方面。

8.A本题考查switch语句。当i一1时,执行case1,因为没有遇到break语句,所以依次往下运行,“a=a+2=2,a=a+3=5”;当i=2时,执行case2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3=10”;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a—a+2—13,a—a+3一l6:当i=4时,执行default,a=a+3=19,结束循环。

9.A

10.B内循环只循环一次就结束,第1次外循环时,t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;第2次外循环时,t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第3次外循环时,1=1+b[2][b[2][2]]=2+b[2][2]=2+2=4。故本题答案为B选项。

11.C后缀自增运算“t++”表示先运算,再自加。语句“if(t++<6)printf(“%d\\n”,t);elseprintf(“%d\\n”,t--);”中t的初值为6,则“t++<6”,条件为假,t自增至7,执行“printf(“%d\\n”,t--);”,此时t=7,输出t值为7,之后进行自减操作t=6。因此输出的结果为7。故本题答案为C选项。

12.C

13.A

14.B

15.A

16.D

17.C

18.B

19.C内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。Fun(a,5)的值是l5,再次调用后slim=15,所以Fun(b,4)=45,s=45+15=60。

20.B当b=1时,a=1,第二个if语句成立,此时a=6,返回for循环;当b=2,两个if语句都为假,此时a=3,再返回循环;当b=3,第二个if成立,此时a=8,继续循环;当b=4,第一个if成立,退出for循环体时b为4,a为8。

21.44解析:strcpy(s1,s2)函数的作用是将字符串s2中的内容拷贝到字符串s1中的内容覆盖。strlen()函数是求字符串的长度。本题实际上是要求s2字符串的长度,即是4。

22.局域网和广域网局域网和广域网

23.x[0]x[0]x[0],x[0]解析:函数f()通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1]交换位置,再将最小值x[p1]和第一个元素(x[0])进行交换,所以空白处应该填入x[0]。

24.实体完整性实体完整性解析:关系模型中的完整性是指数据库中数据的正确性和一致性。为了维护数据库中数据与现实世界的一致性,关系数据库的插入、删除、修改操作必须遵循3类完整性规则。关系模型的3类完整性指的是实体完整性、参照完整性和用户定义的完整性。

25.层次模型层次模型解析:层次模型是最早发展起来的数据库模型。层次模型的基本结构是树形结构。

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

27.数据库管理系统数据库管理系统(DBMS)

28.(double*)(double*)解析:本题考查强制类型转换。函数malloc的默认返回是void*,若要使指针指向double类型,必须进行类型转换,类型转换格式为:(数据类型*)。

29.1616解析:满二叉树的叶子结点都在最后一层,即第4层,且第4层的结点达到最大数,即25-1=16。

30.黑盒软件测试的方法有三种:动态测试、静态测试和正确性证明。设计测试实例的方法一般有两类:黑盒测试法和白盒测试法。在使用黑盒法设计测试实例时,测试人员将程序看成一个“黑盒”,即不关心程序内部是如何实现的,只是检查程序是否符合它的“功能说明”,所以使用黑盒法设计的测试用例完全是根据程序的功能说明来设计的。

31.xx解析:本题考查的知识点是while循环的程序分析;主函数中首先定义了一个字符型变量C,接着执行下面while语句,在while循环中,首先从键盘上读入一个字符Y并给赋给字符变量C,赋值表达式的值不为'?',执行输出语句,输出字符x。接着判断while中的循环条件,读入一个字符'?',并赋值给c,赋值表达式的值为'?',循环条件不再满足,退出循环。

32.0240480,2,4\r\n0,4,8解析:本题主要考查for循环语句的使用以及静态局部变量的特点。

33.21

34.99解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加1)。

35.存储结构

36.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。

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

38.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:

类型说明符*指针变量名;

39.在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},然后再执行for循环结构,将b[6],b[7]…b[9]的值相加,结果为盟。\r\n\r\n

40.passwarnpasswarn解析:n++是在执行完其所在的语句后再加1,因此,在执行case的时候,n的值依然为'c',执行case'c'后面的语句,先打印出“pass”;在执行完case'c'后,未遇到break跳出switch,便接着执行下面的语句,又打印出warn。所以此题输出结果是passwarn。

41.C解析:本题中,printf('%2d,%2d\\n',x,y)表示输出形式是十进制整数,域宽是2,而在C语言中规定:当域宽小于实际宽度时域宽不起作用,按实际宽度输出因此最后的输出值为102和10,所以,4个选项中选项C符合题意。

42.C解析:本题执行过程如下:首先调用fun函数,使得实参a的值3传递给形参p,得到局部变量d=8,打印出局部变量d的值8;返回主函数执行“d+=a++”,此处d为全局变量,所以d=1+3+4(由于本题是值传递,所以在函数run中对p值的改变并不能引起a的改变),故本题材的输出是8,4。

43.C在C语言中,文件指针实际上是指向一个结构体类型的指针,一般称这个结构体类型名为FILE,可以用此类型名来定义文件指针。定义文件类型指针变量的一般形式为:FILE*指针变量名:选项c)中少了“*”,所以选项C)错误。

44.A解析:选项A)是一个表达式,它后面没有分号结尾(C语言中规定语句必须以分号结束),所以它不是语句;选项B)用一个花括号把几条语句括起来了,这是一个复合语句;选项C)中只有一个分号,是一个空语句;选项D)是个复合语句,也是一个空语句。

45.B解析:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不合晰问的。模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。衡量软件的模块独立性的度量标准是耦合性和内聚性。一个模块的内聚性越强,则该模块的模块独立性越强。而内聚性是信息隐蔽和局部化概念的自然扩长。

46.D解析:软件需求规格说明书SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用,①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。

47.D解析:编程风格是在不影响性能的前提下,有效地编排和组织程序,以提高可读性和可维护性。更直接地说,风格就是意味着要按照规则进行编程。这些规则包括:(1)程序文档化。就是程序文档包含恰当的标识符、适当的注解和程序的视觉组织等。(2)数据说明。出于阅读理解和维护的需要,最好使模块前的说明语句次序规范化。此外,为方便查找,在每个说明语句的说明符后,数据名应按照字典顺序排列。(3)功能模块化。即把源程序代码按照功能划分为低耦合、高内聚的模块。(4)注意goto语句的使用。合理使用goto语句可以提高代码的运行效率,但goto语句的使用会破坏程序的结构特性。因此,除非确实需要,否则最好不使用goto语句。因此,本题的正确答案是D。

48.C解析:主函数中定义了一个二维字符数组并初始化,初始化后的结果为str[0]='Hello'、str[1]='Beijing',然后定义一个字符指针变量p并让它指向数组的首地址,即指向str[0],而在C语言中无论是一维还是多维数组,其元素在内存中都是顺序存放的,故p+20后指针指向str[1],所以strlen(p+20);返回的是str[1]中的字符串的长度,即Beijing的长度为7,所以最后输出的值为7,所以,4个选项中选项C符合题意。

49.A解析:本题考查while循环。先判断while循环的控制表达式是否成立,发现a>b>c不成立,所以不执行循环。直接输出a、b、c的值。

50.A解析:C语言变量名可由数字,字母,下划线构成,但首字符不能为数字。

51.D解析:本题中,i赋初值为1,并对其每次进行加2操作,即i每次均为1~10之间的奇数,s+=i+1,即s=s+i+1,相当于s等于原来的s每次加上1~10之间的偶数,直到i<lO不成立;当i=1时,s=0+1+1=2;当i=3时,s=2+3+1=2+4;当i=5时,s=2+4+5+1=2+4+6;当i=7时,s=2+4+6+7+1=2+4+6+8;当i=9时,s=2+4+6+8+9+1=2+4+6+8+10;当i=11时,i<10不成立,结束循环。所以,4个选项中选项D符合题意。

52.A

53.C解析:这是一道考查fread函数的题。buf是一个指针,fread是读入数据的存放地址;fwrite是输出数据的地址(以上指的是起始地址)。

54.C解析:选项A和B两个表达式都越界了;选项D中,*t[2]是目标变量,即—个整型值,而不是地址值。

55.BB)【解析】程序设计语言仅仅使用顺序、选择和重复(循环)三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。遵循程序结构化的设计原则,按结构化程序设计方法设计出的程序易于理解、使用和维护;可以提高编程工作的效率,降低软件的开发成本。

56.C解析:选项A中,p为数组名,其值是不能被改变的,故非法;选项B中,p[0]的类型是int*,而a是二维数组名(类型为int[][3]),两者无法赋值,故非法:选项C中,p[0]为int型指针,&a[1][2]是int型变量的地址,可以合法赋值;选项D中,p[1]是int型指针,而&a是二维数组的地址(类型为int(*)[2][3]),两者无法赋值,故非法。所以本题应该选择C。

57.D解析:根据结构变量的存储特点,p+1意味着增加地址值为结构体数组a的一个元素所占的字节数,即p++使p由a[0]指向a[1]起始地址。本题++p->n得到p指向的结构体变量中成员n的值使之加1。因为p指向数组a起始地址,p->n的值为5,再掏打自加1运行,结果为6。

58.B解析:fgets函数的作用是从指定的文件读入一个字符串。fgets(str,n,fp)冲的n为要求得到的字符的个数,但只从fp指向的文件输入n-1个字符,然后在最后加一个'\\0'字符,因此得到的字符串共有n个字符。

59.B解析:本题中的二维数组的每个元素就是一个由3个元素构成的一维数组,根据条件for(k=0;k<3;++)和要求的a[k][k]可以得出本题的答案应该是951。

60.B解析:continue是结束本次循环,直接进入到下次循环中,break用于循环语句中的作用是直接跳出本层循环,能从多层循环中退出的语句除了goto语句,exit,return等语句也能直接跳出多层循环。注意:continue和break语句在while语句中的作用。

61.D按照从键盘输入的数据可以_判断字符l给了变量a,字符2给了变量b,字符<CR>即回车给了变量c,字符3给了变量d。所以打印输出的结果为D选项。

62.A

63.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

64.D

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

\n

65.C数组的下标是从0开始的,A中越界,行下标和列下标都不能越界;B中,虽然是个地址,但是也同样越界了;选项C中表示的是第一个的首地址;选项D表示的为其元素的值,并不是地址。

66.C数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,包括查询及增加、删除、修改等操作;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等功能。因此本题答案为C)。

67.Ak=a>b?(b>C?1:o):o;a>b并且b>C,k为1,其他情况k为o,答案为A)。

68.C解析:本题中,“printf('%2d,%2d\\n',x,y)”表示以逗号隔开输出两个十进制整数,每个整数域宽是2。而在C语言中规定:当域宽小于实际宽度时域宽不起作用,按实际宽度输出,因此最后的输出值为102和10(y的初值012表示八进制整数12,等于十进制的10)。所以,4个选项中选项C符合题意。

69.C

70.B标识符命名规则:标识符必须由字母(a~z或A~z)或下划线(_)开头;标识符的其他部分可以用字母、下划线或数字(0~9)组成;大小写字母表示不同意义,如cout和Cout代表不同的标识符;在定义标识符时,虽然语法上允许用下划线开头,但是,最好避免定义用下划线开头的标识符,因为编译器常常定义一些下划线开头的标识符。因此,本题正确答案为B)。

71.C

72.D本题考察for循环语句,注意第二个for语句的后面有一个分号,即printf函数不属于循环体,无论循环执行多少次,printf(”*”)语句只执行一次。因此,本题正确答案为D)。

73.D解析:串的长度指的是串中字符的个数,且其字符个数可以为零。选项D正确。

74.A

75.C

76.D

77.C

\n表达式a++,b++,a+b是一个逗号表达式,在逗号表达式中,从左向右进行各个表达式的运算,最后一个表达式的值就是逗号表达式的结果,所以表达式a++,b++,a+b的值为5,所以fun函数中的形参x的值为5;表达式c++先把变量C的值传给形参y,然后c的值加1,所以y的值为3,因此函数fun((a++,b++,a+b),c++)的返回值为8。

\n

78.B要想表示字符串常量应该用双引号表示,即“cd”,单引号用于表示字符常量,所以B选项中的表示方法错误。

79.C解析:软件系统结构的总体设计包括:基于功能层次结构建立系统、按功能划分成模块的层次结构、确定每个模块的功能、建立与已确定的软件需求的对应关系、确定模块间的调用关系和模块间的接口、评估模块划分的质量等方面。详细设计的任务是:在使用程序设计语言编制程序以前,对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求,通常包括:功能需求、性能需求、环境需求、可靠性需求、安全保密要求、用户界面需求、资源使用需求、成本消耗需求、开发进度需求等。编程调试的任务是诊断和改正程序中潜在的错误。综上所述。软件功能分解只能发生在总体设计阶段。

80.C题中整型指针变量P存放的是变量C的地址。所以本题答案为C。

81.(1)错误:float*k;

正确:floatk;

(2)错误:if(*a>*c)

正确:if(*a<*c)

【解析】变量定义首先要判断变量的类型,给定程序的赋值语句中,k是以变量形式进行赋值的,所以k不是指针,定义为指针是不正确的;由给出程序可以看出,if语句是为了将小于*C的值放入*C中,所以应该改为“if(*a<*c)”。

82.

【解析】按题目中的要求,要得到整数c,首先要得到整数a和b的个位和十位上的数,可以通过取余和整除来实现,再将其分别乘以1000,100,10,1就可以得到所要求的整数c。

2022年广东省江门市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设二叉排序树中有n个结点,则二叉排序树的平均查找长度为()。A.O(1)

B.O(log2n)

C.O(n)

D.(n2)

2.若有说明语句:double*P,a;则能通过scanf语句正确给输入项读入数据的程序段是()。

A.*p=&a;scanf("%lf",p);

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

C.p=&a;scanf("%lf",*p);

D.p=&a;scanf("%lf",p);

3.

4.以下对C语言函数的有关描述中,正确的是

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

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

C.函数必须有返回值,否则不能使用函数

D.函数必须有返回值,返回值类型不定

5.计算机系统的组成是______。

A.主机、外设B.运算器、控制器C.硬件系统和软件系统D.CPU、内存储器

6.用单链表方式存储的线性表,存储每个结点需要两个域,一个数据域,另一个是()。

A.当前结点的所在地址B.后继结点的所在地址C.空指针域D.空闲域

7.程序设计的任务包括()。

A.编写程序代码并上机调试B.确定所用数据结构C.确定所用算法D.以上选项均正确

8.下列程序的输出结果是()。#include<stdio.h>main{inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1;case2:a+=2;default:a+=3;}}printf("%d",a);}A.19B.1C.6D.8

9.数据的逻辑关系是指数据元素的()。

A.关联B.结构C.数据项D.存储方式

10.有以下程序:#include<stdio.h>main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)t+=b[i][b[j][i]];printf(“%d\n”,t);}程序的运行结果是()。

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

11.有以下程序:#include<stdio.h>main(){intt;scanf(“%d”,&t);if(t++<6)printf(“%d\n”,t);elseprintf(“%d\n”,t--);printf(“\n”);}执行时输入6并按<Enter>键,则输出结果是()。A.6B.8C.7D.5

12.

13.一个算法的语句执行次数为(2n2+2nlog2n+4n-7),则其时间复杂度为()。

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

14.

15.一个顺序栈一旦声明,其占用空间的大小()。

A.已固定B.可以变动C.不能固定D.动态变化

16.下面哪些使用的不是贪心算法()

A.单源最短路径中的Dijkstra算法

B.最小生成树的Prim算法

C.最小生成树的Kruskal算法

D.计算每对顶点最短路径的Floyd-Warshall算法

17.

18.针对二分查找算法,假设一个有序数组有136个元素,那么要查找到第10个元素,需要比较的元素为()

A.68,34,17,9,13,11,10

B.68,34,17,8,12,10

C.69,35,18,10

D.68,34,18,9,13,11,10

19.有以下程序:

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

A.45B.50C.60D.55

20.以下程序的输出结果是()。main{inta=1,b;for(b=1,b<=10;b++){if(a>=8)break;if(a%2==1){a+=5;continue;}a=3;}printf("%d\n",b);}A.A.3B.4C.5D.6

二、2.填空题(20题)21.若有下列定义和语句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

则输出结果为______。

22.计算机网络按通信距离来划分可以分为【】。

23.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

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

{if(x[m]>i){i=x[m];p0=m;}

elseif(x[m]<j){j=x[m];p1=m;}

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[p1];x[p1]=【】;【】=t;

}

main()

{inta[10],u;

for(u=0;u<10;u++)scanf("%d",&a[u]);

f(a,10);

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

printf("\n");

}

24.关系模型的3类完整性指的是【】、参照完整性、用户定义的完整性。

25.用树形结构表示实体之间联系的模型是()。

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

27.数据库系统中实现各种数据管理功能的核心软件称为【】。

28.下面的语句要使指针p指向一个double类型的动态存储单元,请填空。

p=【】malloc(sizeof(double));

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

30.若按功能划分,软件测试的方法通常分为白盒测试方法和【】测试方法。

31.有以下程序:

#include<stdio.h>

main()

{

charc;

while((c=getchar())!='?')putchar(--c);

}

程序运行时,如查从键盘输入:Y?N?<回车>,则输出的结果为______。

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

#include<stdio.h>

main()

{intfun();fun();}

fun()

{staticinta[3]={0,1,2};

inti;

for(i=0;i<3;i++)a[i]+=a[i];

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

printf("\n");}

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

main()

{inta=1,b=2;

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

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

}

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

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

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

}

35.数据结构分为逻辑结构与存储结构,线性链表属于【】。

36.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

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

#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);

}

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

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

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

voidreverse(inta[],intn)

{inti,t;

for(i=0;i<n/2;i++)

{t=a[i];a[i]=a[n+1+i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':

case'A':

case'b':

case'B':printf("good");break;

case'c':case'C':printf("pass");

case'd':case'D':printf("warn");

}

三、1.选择题(20题)41.有以下程序:main(){intx=102,y=012;printf(“%2d,%2d\n”,x,y);}执行后输出结果是()。

A.10,01B.02,12C.102,10D.02,10

42.下列程序执行后输出的结果是______。intd=1;fun(intp){intd=5;d+=p++;printf("%d,",D);}main(){inta=3;fun(A);d+=a++;printf("%d\n",D);}

A.8,12B.9,13C.8,4D.9,5

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

A.在C语言中,对二进制文件的访问速度比文本文件快

B.在C语言中,随机文件以二进制代码形式存储数据

C.语句FILEfp;定义了一个名为fp的文件指针

D.C语言中的文本文件以ASCII码形式存储数据

44.下列不是合法的C语言语句是()。

A.a=5B.{inti;i++;}C.;D.{;}

45.信息隐蔽的概念与下述______概念直接相关。

A.软件结构定义B.模块独立性C.模块类型划分D.模拟耦合度

46.下列叙述中,不属于软件需求规格说明书的作用的是()

A.便于用户,开发人员进行理解和交流

B.反映出用户问题的结构,可以作为软件开发工作的基础和依据

C.作为确认测试和验收的依据

D.便于开发人员进行需求分析

47.下列选项中不符合良好程序设计风格的是A.源程序要文档化B.数据说明的次序要规范化C.避免滥用goto语句D.模块设计要保证高耦合、高内聚

48.有以下程序:#include<string.h>main(){charstr[][20]={"Hello","beijing"},*p=str;ptintf("%\n",strlen(p+20));}程序运行后的输出结果是()。

A.0B.5C.7D.20

49.有下列程序:

main()

{intt,a=1,b=5,C=-2;

while(a>b>C)

{t=a;a=b;b=t;c++;}

printf("%d,%d,%d",a,b,C);

}

程序的输出结果是()。

A.1,5,0B.1,5,-2C.5,1,-1D.5,1,-2

50.下面的程序在编泽时产生错误,其出错原因是()。#include<stdio.h>main(){int1_case;floatprintF;printf("请输入2个数:");scanf("%d%f",&1_case,&printF);printf("%d%f\n",1_case,printF);}

A.定义语句出错,1_case不能作为变量名

B.定义语句出错,printF不能用作用户自定义标识符

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句无错,printf不能输出1_case的值

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

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

52.中国国家计算机网络设施是()

A.NCFCB.CERNETC.ISDND.Iinternet

53.已知函数的调用形式为fread(buf,size,count,fp),参数buf的含义是

A.一个整型变量,代表要读入的数据项总数

B.一个文件指针,指向要读的文件

C.一个指针;指向要读入数据的存放地址

D.一个存储区,存放要读的数据项

54.若有以下定义:intt[3][2];,能正确表示t数组元素地址的表达式是______。

A.&t[3][2]B.t[3]C.t[1]D.*t[2]

55.结构化程序设计的3种结构是()

A.顺序结构,分支结构,跳转结构

B.顺序结构,选择结构,循环结构

C.分支结构,选择结构,循环结构

D.分支结构,跳转结构,循环结构

56.若有定义语句:inta[2][3],*p[3],则以下语句中正确的是A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;

57.若有以下说明和语句:structst{intn;char*ch;};structsta[3]={5,"abc",7,"def",9,"ghk"},*p=a;则值为6的表达式是______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

58.C语言库函数fgets(str,n,fp)的功能是______。

A.从中指向的文件中读取长度n的字符串存入str指向的内存

B.从fp指向的文件中读取长度不超过n-1的字符串存入str指向的内存

C.从fp指向的文件中读取n个字符串存入str指向的内存

D.从str读取至多n个字符到文件fp

59.定义如下变量和数组:intk;inta[3][3]={9,8,7,6,5,4,3,2,1};则下面语句的输出结果是()。for(k=0;k<3;k++)printf("%d",a[k][k]);

A.753B.951C.963D.741

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

A.continue语句的作用是结束整个循环的执行

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

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

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

四、选择题(20题)61.有以下程序:

当执行程序时,按下列方式输入数据(从第l列开始,<;CR>;代表回车,注意:回车也是一个字符]12<;CR>;34<;CR>;则输出结果是()。

A.12B.123C.1234D.12343

62.下列语句中,显示没有下画线的超链接的语句是()。

A.a{text—decoration:none}

B.a{text—decoration:nounderline}

C.a{underline:none}

D.a{decoration:nounderline}

63.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

64.

若有定义和语句:

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

65.若有以下的定义:‘intt[3][2];”,能正确表示t数组元素地址的表达式是()。

A.&t[3][2]B.t[3]C.t[l]D.t[2][2]

66.负责数据库中查询操作的数据库语言是()。

A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

67.以下程序爱中,与语句:

68.

有以下程序:

main

{intx=102,y=012;

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

}

执行后输出结果是()。

A.10,01B.02,12C.102,10D.02,10

69.

70.以下选项中合法的标识符是()。A.1_2B._12C.2_1D.12__

71.

72.以下程序段中的变量已正确定义:

程序段的输出结果是()。

A.********B.****C.**D.*

73.串的长度是______。A.A.串中不同字符的个数

B.串中不同字母的个数

C.串中所含字符的个数且字符个数大于零

D.串中所含字符的个数

74.

75.

76.

77.

有以下程序:

fun(intx,inty){return(x+y);)

main

{inta=1,b=2,c=2,sum;

sum=fun((a++,b++,a+b),c++);

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

}

执行后的结果是()。

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

78.以下选项中不能作为c语言合法常量的是()。.

A.0.1e+6B.’cd’.C.”、a”D.’\011

79.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。

A.详细设计B.需求分析C.总体设计D.编程调试

80.若在定义语句:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。A.A.scanf("%d",a,b,c);B.scanf("%d%d%d",a,b,c):

C.scanf("%d",p);

D.scanf("%d",&p);

五、程序改错题(1题)81.下列给定程序中函数fun()的功能是:把从主函数中输人的3个数。最大的数放在a中,中间的数放在b中,最小的数放在C中。例如,若输入的数为:55,12,34,输出的结果应当是:a=55.0,b=34.0,c=12.0。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编写函数proc,其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。例如,当a=25,b=43,实际输入时个数之间以Enter键分隔,调用该函数后,c=3452。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B

2.D解析:*p间接引用指针指向的变量,因此“(*p)=&a”不对。scanf()的输入变量必须为地址,因此C是错误的。

3.C

4.A解析:C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函数不能嵌套定义。函数可以没有返回值,若有返回值,则返回值类型必须确定。

5.C

6.B

7.D程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。程序设计的任务包括选项A)、B)、c)等方面。

8.A本题考查switch语句。当i一1时,执行case1,因为没有遇到break语句,所以依次往下运行,“a=a+2=2,a=a+3=5”;当i=2时,执行case2,因为没有遇到break语句,所以依次往下执行,“a=a+2=7,a=a+3=10”;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a—a+2—13,a—a+3一l6:当i=4时,执行default,a=a+3=19,结束循环。

9.A

10.B内循环只循环一次就结束,第1次外循环时,t=t+b[0][b[0][0]]=1+b[0][0]=1+0=1;第2次外循环时,t=t+b[1][b[1][1]]=1+b[1][1]=1+1=2;第3次外循环时,1=1+b[2][b[2][2]]=2+b[2][2]=2+2=4。故本题答案为B选项。

11.C后缀自增运算“t++”表示先运算,再自加。语句“if(t++<6)printf(“%d\\n”,t);elseprintf(“%d\\n”,t--);”中t的初值为6,则“t++<6”,条件为假,t自增至7,执行“printf(“%d\\n”,t--);”,此时t=7,输出t值为7,之后进行自减操作t=6。因此输出的结果为7。故本题答案为C选项。

12.C

13.A

14.B

15.A

16.D

17.C

18.B

19.C内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。Fun(a,5)的值是l5,再次调用后slim=15,所以Fun(b,4)=45,s=45+15=60。

20.B当b=1时,a=1,第二个if语句成立,此时a=6,返回for循环;当b=2,两个if语句都为假,此时a=3,再返回循环;当b=3,第二个if成立,此时a=8,继续循环;当b=4,第一个if成立,退出for循环体时b为4,a为8。

21.44解析:strcpy(s1,s2)函数的作用是将字符串s2中的内容拷贝到字符串s1中的内容覆盖。strlen()函数是求字符串的长度。本题实际上是要求s2字符串的长度,即是4。

22.局域网和广域网局域网和广域网

23.x[0]x[0]x[0],x[0]解析:函数f()通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1]交换位置,再将最小值x[p1]和第一个元素(x[0])进行交换,所以空白处应该填入x[0]。

24.实体完整性实体完整性解析:关系模型中的完整性是指数据库中数据的正确性和一致性。为了维护数据库中数据与现实世界的一致性,关系数据库的插入、删除、修改操作必须遵循3类完整性规则。关系模型的3类完整性指的是实体完整性、参照完整性和用户定义的完整性。

25.层次模型层次模型解析:层次模型是最早发展起来的数据库模型。层次模型的基本结构是树形结构。

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

27.数据库管理系统数据库管理系统(DBMS)

28.(double*)(double*)解析:本题考查强制类型转换。函数malloc的默认返回是void*,若要使指针指向double类型,必须进行类型转换,类型转换格式为:(数据类型*)。

29.1616解析:满二叉树的叶子结点都在最后一层,即第4层,且第4层的结点达到最大数,即25-1=16。

30.黑盒软件测试的方法有三种:动态测试、静态测试和正确性证明。设计测试实例的方法一般有两类:黑盒测试法和白盒测试法。在使用黑盒法设计测试实例时,测试人员将程序看成一个“黑盒”,即不关心程序内部是如何实现的,只是检查程序是否符合它的“功能说明”,所以使用黑盒法设计的测试用例完全是根据程序的功能说明来设计的。

31.xx解析:本题考查的知识点是while循环的程序分析;主函数中首先定义了一个字符型变量C,接着执行下面while语句,在while循环中,首先从键盘上读入一个字符Y并给赋给字符变量C,赋值表达式的值不为'?',执行输出语句,输出字符x。接着判断while中的循环条件,读入一个字符'?',并赋值给c,赋值表达式的值为'?',循环条件不再满足,退出循环。

32.0240480,2,4\r\n0,4,8解析:本题主要考查for循环语句的使用以及静态局部变量的特点。

33.21

34.99解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加1)。

35.存储结构

36.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。

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

38.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:

类型说明符*指针变量名;

39.在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},然后再执行for循环结构,将b[6],b[7]…b[9]的值相加,结果为盟。\r\n\r\n

40.passwarnpasswarn解析:n++是在执行完其所在的语句后再加1,因此,在执行case的时候,n的值依然为'c',执行case'c'后面的语句,先打印出“pass”;在执行完case'c'后,未遇到break跳出switch,便接着执行下面的语句,又打印出warn。所以此题输出结果是passwarn。

41.C解析:本题中,printf('%2d,%2d\\n',x,y)表示输出形式是十进制整数,域宽是2,而在C语言中规定:当域宽小于实际宽度时域宽不起作用,按实际宽度输出因此最后的输出值为102和10,所以,4个选项中选项C符合题意。

42.C解析:本题执行过程如下:首先调用fun函数,使得实参a的值3传递给形参p,得到局部变量d=8,打印出局部变量d的值8;返回主函数执行“d+=a++”,此处d为全局变量,所以d=1+3+4(由于本题是值传递,所以在函数run中对p值的改变并不能引起a的改变),故本题材的输出是8,4。

43.C在C语言中,文件指针实际上是指向一个结构体类型的指针,一般称这个结构体类型名为FI

温馨提示

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

评论

0/150

提交评论