2021-2022年河南省焦作市全国计算机等级考试C语言程序设计真题二卷(含答案)_第1页
2021-2022年河南省焦作市全国计算机等级考试C语言程序设计真题二卷(含答案)_第2页
2021-2022年河南省焦作市全国计算机等级考试C语言程序设计真题二卷(含答案)_第3页
2021-2022年河南省焦作市全国计算机等级考试C语言程序设计真题二卷(含答案)_第4页
2021-2022年河南省焦作市全国计算机等级考试C语言程序设计真题二卷(含答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年河南省焦作市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下面C程序段中count++语句执行的次数为()A.15B.16C.31D.32

2.以下程序运行后,输出结果是()#include<stdio.h>ss(char*s){char*p=s;while(*p)p++return(p-s);}main(){char*a=“abded”inti;i=ss(a);printf(“%d\n”,i);}A.8B.7C.6D.5

3.若有以下程序:inta=1,b=2:a=a^b:b=b^a:则执行以上语句后a和b的值分别是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

4.线性链表中结点的结构为(data,next)。已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列()操作。

A.s->next=p;p->next=s;

B.s->next=p->next;p->next=s;

C.s->next=p->next;p=s;

D.p->next=s;s->next=p;

5.数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和______。A.编码设计B.测试阶段C.运行阶段D.物理设计

6.语句int(*ptr)的含义是()。

A.ptr是一个返回值为int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

7.用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为()。

A.第i行非0元素的个数之和B.第i列非0元素的个数之和C.第i行0元素的个数之和D.第i列0元素的个数之和

8.

9.以下函数调用语句中含有实参个数为().func((exp1,exp2),(exp3,exp4,exp5));

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

10.给出以下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为()。

A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度

11.数据结构在计算机内存中的表示是指()。A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系

12.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

13.下列程序的输出结果是()。#include<stdio.h>main{structst{inty,x,z;};union{longi;intj;chark;}un;printf("%d,%d\n",sizeof(structst),sizeof(un))}A.6,2B.6,4C.8,4D.8,6

14.已知shortint类型变量占用两个字节,若有定义:shortintx[10]={0,2,4};,则数组x在内存中所占字节数是()。

A.3B.6C.10D.20

15.数据库的故障恢复一般是由()来执行恢复

A.电脑用户B.数据库恢复机制C.数据库管理员D.系统普通用户

16.以下不属于C语言整数的是()。

A.12fB.25uC.-32D.+20L

17.有下列程序:main{intk=5,n=0;while(k>0){switch(k){dcfault:break;case1:n=n+k;case2:case3:n+=k;}k--;}printf("%d\n".n);}程序运行后的输出结果足()。A.0B.4C.6D.7

18.数据字典(DD)所定义的对象都包含于()。

A.软件结构图B.方框图C.数据流图(DFD图)D.程序流程图

19.下列叙述中错误的是()。A.在数据库系统中,数据的物理结构必须与逻辑结构一致,

B.数据库技术的根本目标是要解决数据的共享问题

C.数据库设计是指在已有数据库管理系统的基础上建立数据库

D.数据库系统需要操作系统的支持

20.如下程序段

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

intfun(char*str)

{inti,j=0;

for(i=0;str[i]!=’\0’;i++)

if(str[i]!=’’)str[j++]=str[i];

str[j]=’\0’;

}

main()

{

charstr[81];

intn;

clrscr();

printf("Inputastring:");

gets(str);

fun(str);

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

}

当运行程序时,输入asdafaaz67<回车>,则输出是A.A.asdafaaz67

B.asdafaaz67

C.asd

D.z67

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

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

}

22.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

23.表达式10+'a'+1.5-0.5*'B'的结果是【】。

24.以下程序中给指针p分配三个double型动态内存单元,请填空。

#include<stdio.h>

main()

{dOuble*p;

p=(double*)malloc();

p[0]=1.5;p[1]=2.5;p[2]=3.5

printf("%f%f%f\n",p[0],p[1],p[2]);

}

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

#inciude<stdio.h>

main()

{chars[]="ABCabc";

s[5]='\0';

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

}

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

#include<stdio.h>

main()

{inta,b,c;

a=25;b=025;e=0x25;

prinff("%d%d%d\n",a,h,c);

}

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

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

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

29.下面函数要求计算两个整数x,y之和,并通过形参返回该值,请填空。

add(intx,inty,【】z)

{【】=x+y;}

30.有以下程序:

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

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

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

#include<stdio.h>

main()

{inta=0;

a+=(a=8);

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

}

32.表达式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的数据类型为______。

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

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

#include<stdio.h>

main()

fintx=0;

sub(&x,16,2);

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

}

sub(int*a,intn,intk)

{if(k<=n)sub(a,n/2,2*k);

*a+=k;

}

35.fun1函数的功能是将3个整数按由大到小的顺序调整后依次放入a、b、c3个变量中,a中放最大数,fun2函数的功能是交换两个变量中的值。补足所缺语句。

fun2(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;

}

fun1(int*p1,int*p2,int*p3)

{if(*p3>*p2)fun2(*P2,*p3);

if(*p1<*p3)fun2(______);

if(*p1<*p2)fun2(______);

}

main()

{inta,b,c;

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

fun1(&a,&b,&c);

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

}

36.已定义charch=′$′;inti=1,j;,执行j!=ch&&i++以后,i的值为【】。

37.用以下程序计算1到100的整数的累加和。请填空。

main()

{inti,sum=【】;

i=1;

for(【】)

{sum+=j

i++;

}

printf("sum=%d\n",【】);

}

38.如果有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是【】。

intw[10]={23,54,10,33,47,98,72,80,61),*p=w;

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

#defineP(A)printf("%d",A)

main()

{intj,a[]={1,2,3,4,5,6,7},i=5;

for(j=3;j>1;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

40.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。

三、1.选择题(20题)41.有以下程序

#include

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

42.有以下程序#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.daf","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);

A.12300B.123C.1D.321

43.现有如下程序段,此程序段编译有错误,则程序段的错误出在#include<stdio.h>main(){inta=30,b=40,c=50,d;d=a>30?b:c;swish(d){casea:Printf("%d,",a);caseb:printf("%d,",b);casec:printf("%d,",c);defaultprintf("#");}}

A.default:printf("#");这个语句

B.d=a>30?b:c;这个语句

C.casea:printf("%d,",a);caseb:printf("%d,",b);casec:printf("%d,",c);这三个语句

D.switch(d)这个语句

44.若有以下的说明,对初值中整数2的正确引用方式是()。staticstruct{charch;inti;doublex;}a[2][3]={{{'a',1,3,45},{'b',2,7,98},{'c',31,93}}};

A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i

45.下面程序的功能是输出以下形式的金字塔图案:****************main(){inti,j;for(i=1;i<=4;i++){for(j=1;j<=4-i;j++)printf("");for(j=1;j<=();j++)printf("*");printf("\n");}}在下划线处应填入的是()。

A.iB.2*-1C.2*i+1D.i+2

46.有以下程序:voidswap1(int*a,int*b){int*c=a;s=b,b=c;}voidswap2(int*a.int*b){intc=*a;*a=*b,*b=c;}main(){inta=10,b=15;swap1(&a,&b);printf("%d,%d,",a,b);a=10,b=15;swap2(&a,&b);printf("%d,%d",a,b);}其输出结果为______。

A.15,10,10,15B.15,10,15,10C.10,15,10,15D.10,15,15,10

47.有以下程序:main(){inty=1,x=2,z=3;printf("%d,%d\n",(++x,y++),z+2);}执行后的输出结果是()。

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

48.设有变量说明int(*ptr[m]);其中的标识符ptr是()。

A.m个指向整型变量的指针

B.指向m个整型变量的函数指针

C.一个指向具有m个整型元素的一维数组的指针

D.具有m个指针元素的一维指数组,每个元素都只能指向整型变量

49.有以下程序:main(){intx=0,y=0,i;for(i=1;++i){if(i%2==0){x++;continue;}if(i%5==0){y++;break;}}printf("%d,%d",x,y);}程序的输出结果是()。

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

50.某二叉树共有60个叶子结点与50个度为1的结点,则该二叉树中的总结点数为()。

A.148B.169C.182D.198

51.判断字符串s1是否大于字符串s2,应该使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

52.设有定义:intn1=0,n2,*p=&n2,*q=&nl;,下列赋值语句中与n2=n1;语句等价的是()。

A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;

53.有以下程序:voidfun(char*a,char*b){a=b;(*a)++;}main(){charcl='A',c2='a',*p1,*p2;p1=&c1;p2=&c2;fun(p1,p2);printf("%c,%c\n",c1,c2);}程序运行后的输出结果是()。

A.AbB.aaC.AaD.Bb

54.在下面语句中,其含义为“p为指向含n个元素的一维数组的指针变量”的定义语句是()

A.intp[n]B.int*p();C.int*p(n);D.int(*p)[n]

55.若变量已正确定义,以下while循环不断输出读入的字符,当读入回车换行符时结束循环。正确的程序段是

A.while(ch=getchar()=='\N')putchar(ch);

B.while(ch=getchar())=='\N')putchar(ch);

C.whle((ch=getchar())!='\N')putchaf(ch);

D.while((ch=getchar())!='\N')putchar(ch);

56.以下程序的输出结果是()main(){inti,x[3][3]={l,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d,",x[i][2-i]);}

A.1,5,9B.1,4,7C.3,5,7D.3,6,9

57.有以下程序段main(){inta=5,*b,**c;c=&b;&a;}程序在执行了“C=&b;b=&a;”语句后,表达式“**c”的值是

A.变量a的地址B.变量b中的值C.变量a中的值D.变量b的地址

58.下列关于E-R图的描述中正确的是()。

A.E-R图只能表示实体之间的联系

B.E-R图只能表示实体和属性之间的联系

C.E-R图只能表示实体和属性

D.E-R图能表示实体、属性和实体之间的联系

59.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。

A.-3B.9C.-12D.6

60.下面程序的输出结果是_______。#include<stdio.h>main(){char*p[]={"DOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

四、选择题(20题)61.

62.

63.在以下选项中,不正确的赋值语句是()。

A.i++;B.nl=(n2=(n3=0..;C.m+n=1;D.i=k==j;

64.下列关于栈的叙述正确的是()。

A.栈按“先进先出”组织数据,B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据

65.

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

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

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

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

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

67.

68.

69.软件工程出现的原因是

A.程序设计方法学的影响B.软件产业化的需要C.软件危机的出现D.计算机的发展

70.

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

A.有一个以上根结点的数据结构不一定是非线性结构

B.只有一个根结点的数据结构不一定是线性结构

C.循环链表是非线性结构

D.双向链表是非线性结构

72.面向对象方法中,不属于对象基本特点的是()。

A.标识唯一性B.分类性C.封装性D.一致性

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

A.一种数据的逻辑结构可以有多种存储结构

B.数据的存储结构与数据处理的效率无关

C.数据的存储结构与数据处理的效率密切相关

D.数据的存储结构在计算机中所占的空间不一定是连续的

74.

75.有定义语句:intm=1,n=2,P=5,x;,则以下选项中各程序段执行后,x的值不等于5的是()。

A.

B.

C.

D.

76.下列关于单目运算符++、--的叙述中正确的是A.它们的运算对象可以是任何变量和常量

B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D.它们的运算对象可以是char型变量、int型变量和float型变量

77.当变量c的值不为2、4、6时,值也为”真”的表达式是()。

A.(c>=2&&c<=6)&&(c%21=1)

B.(c==2)ll(e==4)II(C==6)

C.(C>=2&&c<=6)&&!(c%2)-

D.(c>=2&&c<=6)Il(c!=3)I|(C!=5)

78.有以下程序:

79.有以下程序程序的运行结果是()。

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

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

A.C程序可以由多个程序文件组成

B.一个c语言程序只能实现一种算法

C.c程序可以由一个或多个函数组成,

D.一个C函数可以单独作为一个C程序文件存在

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1,1,2,3,5,8,13,21,…

例如,若给n输入7,则该项的斐波拉契数值为l3。

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

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

试题程序:

#include<stdio.h>

longfun(intg)

{

//****found****

switch(g);

{

case0:return0;

//****found****

casel:case2:return1;

}

return(fun(g-1)+fun(g-2));

}

voidmain

{

longfib;intn;

printf("Inputn:");

scanf("%d",&n);

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

fib=fun(n);

printf("fib=%d\n\n",fib);

}

六、程序设计题(1题)82.输出1900~2000年中所有的闰年。每输出3个年号换一行。(判断闰年的条件为下面二者之一:能被4整除,但不能被100整除。或者能被400整除。)

参考答案

1.A

2.D

3.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b=00000011,转化为十进制后为3,b=b^a=00000010-00000011=00000001,即1。

4.B

5.DD)【解析】数据库设计目前一段采用生命周期法.即将整个数据库应用系统的开分解成目标独立的若干阶段,它们是:需要分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段、进一步修改阶段。在数据库设计中采用上面几个阶段中的前四个阶段,并且重点以数据结构和模型设计为主线。

6.C本题考查的是指向函数的指针。函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。

7.B

8.B

9.B

10.C解析:在C语言中,字符串以'\\0'作为结束符,因此数组x的长度为7+1=8,而数组y的长度等于7。

11.A数据结构在计算机内存中的表示指的是数据的存储结构。数据的存储结构是指数据的逻辑结构在计算机中的表示。数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象,并由此得到两种不同的存储结构:顺序存储结构和链式存储结构。

12.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。

13.B本题主要考查结构和联合内存使用的一些区别:结构中每个成员相互独立,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和;联合所占用内存空间是指最长的成员占用的空间。

14.D

15.CC)【解析】数据库一旦发生故障,需要及时进行故障恢复,并由数据库管理员负责执行故障恢复。

16.AC语言中整型常量,从表示形式来看,有十进制、八进制或十六进制;从符号位来看,有有符号整数和无符号整数两类。选项A的“12f”是float类型的实数,不是整数;选项B的“25u”属于无符号整数;选项C的“-32”是十进制形式的有符号整数;选项D的“+20L”是十进制形式的长整数。故本题答案为A选项。

17.D本题主要考查while循环语句和switchcase语句的使用方法。其执行步骤为:k=5时,跳出switch语句,然后k自减1;当k=4时,跳出switch语句,然后k自减1;当k=3时,n=13+k=0+3=3,跳出switch语句,然后k自减1;当k=2时n=n+k=3+2=5,跳出switch语句,然后k自减l;当k=1时,case1:n=n+k一5+1=6,没有break继续执行CaSe3;n=n+k=6+1=7,跳出switch语句,然后k自减1;当k=0时,退出循环,所以输出结果为7。

18.C数据字典(DD)是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。

19.A解析:本题考查数据库系统的基本概念和知识。数据的逻辑结构,是数据间关系的描述,它只抽象地反映数据元素之间的逻辑关系,而不管其在计算机中的存储方式。数据的存储结构,又叫物理结构,是逻辑结构在计算机存储器里的实现。这两者之间没有必然的联系。因此,选项A的说法是错误的。

数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项B的说法是正确的。

数据库设计是在数据库管理系统的支持下,按照应用的要求,设计一个结构合理、使用方便、效率较高的数据库及其应用系统。数据库设计包含两方面的内容:一是结构设计,也就是设计数据库框架或数据库结构;二是行为设计,即设计基于数据库的各类应用程序、事务等。因此,选项C的说法是错误的。

数据库系统除了数据库管理软件之外,还必须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件的支持。因此,选项D的说法是正确的。因此,本题的正确答案是选项A。

20.A在本题中,程序首先定义一个返回类型为整型的函数fun,该函数带有一个指针型的形参变量str,从主函数中对其调用时传递的参数我们可以知道,该指针指向的是一个数组,在该函数体中,首先定义两个整型变量,然后执行循环,循环变量i的初始值为0,循环结束的条件是str[i]!=’\\0’,表示取到的数组元素是字符串结束标识,即字符串中的字符被处理完,在循环体中,首先执行条件判断语句if(str[i]!=’’),如果结果为真,说明取到的当前字符不是空字符,这时执行str[j++]=str[i],即将非空格字符保存到数组中;如果为假,说明取到了空格字符,此时不保存,而接着执行下次循环跳过空格字符。循环结束后执行str[j]=’\\0’;,即保存字符结束标识符,用来标识字符串结束。通过上面的这些分析,我们可以知道函数fun的作用是去掉字符数组中的空格字符。

在主函数中,首先定义了一个大小为81的字符数组,然后调用函数clrscr()清除输入文本窗口,接着输出一条提示语句,执行gets(str);语句,该语句的作用是从键盘输入一个字符串到str数组,碰到换行符结束。然后调用函数fun,其实参为str。通过上面对函数fun作用的分析我们可以知道,调用函数后输入字符串中的空格符都被删除了,最后得到的字符串为asdafaaz67。

程序最后执行输出语句,输出字符数组str中的字符串,因此,程序最终的输出结果是asdafaaz67,本题答案选A。

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

22.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n/2]+1个叶子结点以及[n/2]个度为2的结点,没有度为1的结点。本题中,完全二叉树共有700个结点,700是偶数,所以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有1个是度为1的结点。所以,本题的正确答案为350。

23.75.5

24.3*sizeof(double)或size(double)*3或24或3*8或8*33*sizeof(double)或size(double)*3或24或3*8或8*3解析:本题考核的知识点是malloc()函数.该函数的调用格式是“malloc(n)”,作用是申请n个字符的存储单元,并返回该存储区的首地址,实际调用的时候可在前面加上“(类型说明符*)”,以转换成需要的类型的地址.所以在此空格处应该填写3*sizeof(double)或size(double)*3或其他等价的表达式。

25.ABCabABCab解析:本题中字符数组的初值是“ABCabc”,s[5]='c',然后通过s[5]='\\0'重新给s[5]赋值,在C语言中'\\0'是字符串结束标志,执行s[5]='\\0',其实是将s[5]的值去掉只保留前面的字符。

26.252137252137解析:程序中变量a、b、c分别为十进制、八进制、十六进制的数25,按%d格式输出,a的输出值为25;b=025转换为十进制数(b=2*8+5=16+5=21)输出;c=0x25转换为十进制数(c=2*16+5=32+5=37)输出。输出结果为252137。

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

28.111,1解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。

29.int**zint*\r\n*z解析:函数希望通过形参z带回结果,形参z必须是指针类型的。由于返回整型结果,所以第一处填int*;函数返回前必须先把结果通过形参z间接引用传回,第二处应填*z。

30.66解析:本题定义了二维数组a和指针变量p,p指向数组的首地址,for循环语句的功能是给数组元素赋值,结果为a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[2][0]=7、a[2][1]=8、a[2][2]=9,故printf函数的输出结果为6。

31.1616解析:本题中a+=8相当于a=a+8。对表达式逐步进行求解:在a+=(a=8)中,首先a被赋值为8,语句等价于a+=8;即a=a+8;结果为a=16。

32.整型整型解析:上面的表达式中,通过强制类型转换把最后参与运算的数据都转换成了int型,所以最后得到的结果也是int类型。

33.降低复杂性降低复杂性

34.1414解析:本题考查递归函数的调用。在主函数中调用sub(&x,16,2)函数,此时n=16,k=2,if语句的控制的条件k<=n成立,所以执行下面的语句,调用sub(x,8,4),此时n=8,k=4,if语句的控制条件k<=n成立,所以执行下面的语句,调用sub(x,4,8),此时n=4,k=8,if语句控制的条件k<=n不成立,因此,最后得x=2+4+8=14。

35.*p1*p3*p1*p2。*p1,*p3*p1,*p2。解析:本题考查的知识点有3个,①指针变量作为形参,②函数的嵌套调用,③排序的基本方法。

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

37.0i<=100;sum

38.*(p+5)*(p+5)解析:p+5指向了数组w的第6个元素,再取指针运算。

39.5555解析:分析程序执行过程,第一次循环时,i=3,i=5,因为switch(3),所以执行case3,调用P(a[--i])=P(a[4])=P(5),输出5:第二次循环时,j=2,i=4,因为switch(2),所以执行case2,调用P(a[i++]):P(a[4])=P(5),输出5,之后i自加等于5。

40.自然连接自然连接解析:在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。

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

42.B解析:在函数中首先把整型数组a[10]中的每个元素写入文件d1.dat中,然后再次打开这个文件,把文件d1.dat中的内容读入到整型变量n中,最后输出变量n的值。

43.C解析:case也是关键字,与其后面的常量表达式合称case语句标号,常量表达式的类型必须与switch后的表达式类型相同。这个程序段主要考查的是case后是常量表达式。

44.B解析:结构体数组中对结构体成员的引用要先引用到数组元素,然后像对待普通的结构体变量一样来对待结构体数组元素就可以了。注意:引用结构体变量中的数据。

45.B解析:观察可知图形共4行,主函数中通过一个for5循环循环4次,输出4行。第1行输出3个空格和1个*,第2行输出2个空格和3个*,第3行输出1个空格和5个*,第4行输出7个*,主函数中通过第2个循环控制每行的输出空格数,第3个for循环控制输出*的个数,总结规律:每行输出*的个数,总比前一行的多2个,且第1行的个数为1,可以断定每行输出*的个数组成了一个公差为2的等差数列,所以每行输出。的个数即该等差数列的通项,故该空白处应该填写2*i-1,所以,4个选项中选项B符合题意。

46.D解析:C语言规定,实参变量对形参变量的数据传递是“值传递”,只由实参传给形参,而不能由形参传回来给实参。在内函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。本题中swap1()函数中,虽然改变了形参指针的值,但实参指针的值并没有改变,所以执行第一个printf后应输出10,15,swap2()函数实现了交换两个变量a和b的值,因此执行第二个printf后输出交换后的值15,10,所以本题答案为D。

47.D解析:本题考查逗号表达式。逗号表达武的求解步骤是先求解表达式1,然后依次求解表达式2,直到表达式N的值。整个逗号表达式的值就足最后一个表达式N的值。(++x,y++)这个表达式的返回值是y++,先使用y的债,然后将y加1,所以输出第一个值为1。第二个输出的值为z+2=3+2=5。

48.C解析:指针数组是指数组中的元素是指针类型的数据,本题中的数组元素指针指向的是整型数据。注意:通过带下标的指针变量引用一维数组元素。

49.A解析:本题考查了continue和break语句用在循环语句中的作用。break语句的作用是结束本层循环,而continue语句的作用是结束本次循环直接进入到下次循环。

50.B解析:本题考查二叉树的性质。叶子结点即度为0的结点,它总是比度为2的结点多一个,所以,具有60个叶子结点的二叉树有59个度为2的结点。总结点数等于个叶子结点加上59个度为2的结点再加上50个度为1的结点的和,一共为169个结点。

51.C解析:本题考查字符串比较函数strcmp()。调用形式:strcmp(s1,s2),其中s1、s2分别是字符串存储区的首地址。函数功能:比较字符串str1和str2,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数(注意:不能使用关系运算符比较两个字符串的大小)。

52.A解析:在定义指针变量p和q时,分别把变量n2和n1的地址赋给了指针变量p和q,所以*p和*q中内容就分别是变量n2和n1的值,所以语句*p=*q与语句n2=n1等价。因此选项A)正确。

53.A解析:经过分析得知fun()函数的功能:将形参a指向形参b所指的存储空间,然后使形参a指向变量的值加1。在主函数中定义了字符型指针变量p1和p2,并让它们分别指向c1和c2。将p1、p2作为实参传递给形参a、b。在fun()函数中,首先让指针变量p1指向p2,然后p1指向的存储空间的值加1,即让变量c2加1为b,而c1的值没有被改变,仍然是A。所以,4个选项中选项A符合题意。

54.D

55.D解析:换行符是一个转义字符,应该是‘\\n’,而不是‘\\N’。选项B)中,因为关系运算符“==”的优先级高于赋值运算符“=”,所以ch得到的值是关系运算getchar()=='\\n'的结果而不是从键盘输入的字符,因而不正确,故正确答案为选项D)。

56.C

57.C解析:指向指针的指针,主函数中定义了一个整型变量a,一个整型指针变量b和一个二级指针变量c,并让c指向指针变量b,让指针b指向整型变量a,所以**c为变量a的值。

58.D解析:E-R图不仅可以描述实体及其相互之间的联系,还可以描述多个实体集之间的联系和一个实体集内部实体之间的联系。

59.C解析:本题中首先定义一个整型变量a并给它赋初值为3,在表达式中,从右开始执行,即先执行“a-=a*a;”等价于a=a-a*a即a=3-3*3=-6,此时a的值为-6,接着执行“a+=a-;”相当于执行a=a+a即a=-6+(-6)=-12,此时a的值为-12。所以,4个选项中选项C符合题意。

60.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPK\\0”的首址等。在printf语句中输出的*p[i]表示p[i]字符串的第一个字符。在for循环中,i的初值为3,那么输出的第一个字符为“S”,接着两次i-,则输出的值为*p[1],即字符“0”,所以本题的输出为SO。

61.A

62.B

63.C赋值运算符的左边只能是变量,而不能是常量或表达式。

64.B栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。

65.C

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

67.A

68.B

69.C软件工程这个概念正式出现在1968年NATO软件工程会议上。

自20世纪

温馨提示

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

评论

0/150

提交评论