2022年吉林省长春市全国计算机等级考试C语言程序设计真题(含答案)_第1页
2022年吉林省长春市全国计算机等级考试C语言程序设计真题(含答案)_第2页
2022年吉林省长春市全国计算机等级考试C语言程序设计真题(含答案)_第3页
2022年吉林省长春市全国计算机等级考试C语言程序设计真题(含答案)_第4页
2022年吉林省长春市全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2022年吉林省长春市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下面程序的运行结果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}

A.-1B.1C.8D.0

2.有以下程序:#include<stdio.h>main{inta=1,b=2;while(a<6){b+=a;a4+=2;b%=10;)printf("%d,%d\n",a,b);}程序运行后的输出结果是()。A.5,11B.7,1C.7,11D.6,1

3.判定一个顺序栈st(最多元素为MaxSize)为满的条件是()。A.st->top!B.st->top!C.top==-1D.top==MaxSize

4.有以下程序:#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf(“%d,%d\n”,S(k+j+2),S(j+k+2);}程序运行后的输出结果是()。

A.11,11B.29,29C.26,29D.121,121

5.有以下函数定义:

voidfun(intn,doublex){……}

若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

6.程序调试的任务是()。

A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误

7.

有下列程序:

main

{charp[]={a,h,c},q[]="a";

printf("%d%d\n".sizeof(P),sizeof(q));

}

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

A.44B.33C.34D.43

8.

9.高度为h的满二叉树的结点数是________个。

A.log2h+1B.2h+1C.2h-1D.2h-1

10.以下选项中叙述错误的是()。

A.C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值

B.在同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内

C.C程序函数中定义的自动变量,系统不自动赋确定的初值

D.C程序函数的性能不可以说明为static型变量

11.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

12.C语言中函数返回值的类型是由()决定的。

A.return语句中的表达式类型B.调用该函数的主调函数类型C.定义函数时所指定的函数类型D.以上说法都不正确

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

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

14.下列表达式中,可以正确表示的关系是()。

A.(x>=1)10(x<=0)B.x>1‖x=0C.x>=1ORx<=0D.X>=1&&x<=0

15.下列关于栈的描述中错误的是()。

A.栈是先进先出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入删除操作中,不需要改变栈底指针

16.若有以下说明和定义uniondt{inta;charb;doublec;}data;以下叙述中错误的是

A.data的每个成员起始地址都相同

B.变量data所占内存字节数与成员c所占字节数相等

C.程序段:data.a=5;printf(“%I'm”,data.C);输出结果为5.000000

D.data可以作为函数的实参

17.以下叙述中错误的是A.gets函数用于从终端读入字符串

B.getchar函数用于从磁盘文件读入字符

C.fputs函数用于把字符串输出到文件

D.fwrite函数用于以二进制形式输出数据到文件

18.以下叙述正确的是

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

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

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

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

19.C语言中,组成数据文件的成分是()。A.A.记录

B.数据行

C.数据块

D.字符(字节)序列

20.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指()

A.数据与程序独立存放

B.不同的数据被存放在不同的文件中

C.不同的数据只能被对应的应用程序所使用

D.以上三种说法都不对

二、2.填空题(20题)21.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】(要求形参名为b)。main(){doubles[10][22];intn;……fun(s);……}

22.下列程序的输出结果是______。

longfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

23.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。

24.在关系数据库中,将数据表示成二维表,每一个二维表称为______。

25.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。

26.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。

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

main()

{

inta[4]]4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0.j=0,s=0;

while(i++<4}

if(i==2||i==4)continue;

j=0;

do

{

s+=a[i][j]:

j++;

}while(j<4);

}

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

}

voidfun(intx,inty)

}

28.实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文件名在可执行命令的命令行中(相当于copy命令),假定文件在当前目录下。请补全程序。

#include<stdio.h>

voidmain(intargc,char*argv[])

{FILE*f1,*f2;

if(argc<【】)

{printf("parametererror!\n");exit(0);}

f1=fopen(argv[1],"r");

f2=fopen(argv[2],"w");

while(【】)fputc(fgetc(f1),f2);

fclose(f1);

fclose(f2);

}

29.下面程序的输出是【】。

main()

{intarr[10],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

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

30.表示条件;10<x<100或x<0的C语言表达式是【】。

31.关系代数是关系操作语言的一种传统表示方式,它以集合代数为基础,它的运算对象和运算结果均为()。

32.输入字母a时,下列程序的运行结果为【】。

#include<stdio.h>

main()

{charch;

ch=getchar();

(ch>='a'&&ch<='z')?putchar(ch+'A'-'a'):putchar(ch);

}

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

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

main()

{inti=6,j=8,k;

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

}

34.在E-R图中,矩形表示【】。

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

}

36.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

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

38.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda,请填空。

#include<string.h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

p1=str;p2=();

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;break;}

if(t==0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

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

}

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

40.下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其他元素不变,请填空。

#include<stdio.h>

main()

{

chara[]="labchmfye",t:

int1,j;

for(i=0;i<7;i+=2)

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;j++;}

puts(a);printf("\n");

}

三、1.选择题(20题)41.若执行以下程序时从键盘上输入9,则输出结果是______。main(){intn;scanf("%d:",&n);if(n++<10)printf("%d\n",n);elseprintf%d\n",n--);}

A.11B.10C.9D.8

42.若有以下定义,则正确的switch语句是______。floatx;inta,b;

A.switch(x){case1.0:printf("*\n");csse2.0:printf("**\n");}

B.switch(x){case1,2:printf("*\n");case3:printf("**\n");}

C.switch(a+b){case1:printf("\n");case1+2:printf("**\n");}

D.switch(a+b);{case1:printf("*\n");case2:printf("**\n");}

43.在位运算中,操作数每右移一位,其结果相当于()

A.操作数乘以2B.操作数除以2C.操作数除以16D.操作数乘以16

44.在E-R图中,用来表示实体之间联系的图形是()

A.矩形B.椭圆形C.菱形D.平行四边形

45.有以下程序:#include<string.h>voidf(char*s,char*t){chark;k=*s;*s=*t;*t=k;s++;t--;if(*s)f(s,t);}main(){charstr[10]="abcdefg",*p;p=str+strlen(str)/2+1;f(p,p-2);printf(~%s\n",str);}程序运行后的输出结果是______。

A.abcdefB.gfedcbaC.gbcdefaD.abedcfg

46.有以下程序:main(){intn=0,m=l,x=2;if(!n)x-=l:if(!m)x-=2;if(!x)x-=3;printf("%d\n",x);}执行后的输出结果是______。

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

47.若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。

A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;

48.下面程序段中,输出*的个数是char*s="\ta\018bc";for(;*s!='\0';s++)printf("*");

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

49.若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c),给a赋予10.0,b赋予22.0,b赋予33.0,不正确的输入形式是()

A.10<回车>22<回车>33<回车>

B.10.0,22.0,33.0<回车>

C.10.0<回车>22.O33.00<回车>

D.10.22<回车>33<回车>

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

A.软件测试应该由程序开发者来完成

B.程序经调试后一般不需要再测试

C.软件维护只包括对程序代码的维护

D.以上三种说法都不对

51.栈和队列的共同点是()。

A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同特点

52.阅读下面程序段,则执行后的结果为#inclide"stdio.h"main(){intm=4,n=2,k;k=fun(m,n);printf("%d\n",k);}fun(intm,intn){return(m*m*m-n*n*n);}

A.64B.8C.56D.0

53.以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#defineN10voidartin(intx[N]){inti=0;while(i<N)scanf("%d",);}在下划线处应填入的是()。

A.x+iB.&x[i+1]C.x+(i++)D.&x[++i]

54.以下程序的输出结果是______。#include<stdio.h>structstu{intnum;charname[10];intage;};voidfun(structstu*p){printf("%s\n",(*p).name);}main(){structstustudents[3]={{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}};fun(students+2);}

A.ZhangB.ZhaoC.WangD.18

55.以下选项中,非法的字符常量是______。

A.'\t'B.'\17'C.\nD.'\xaa'

56.函数调用strcat(strcpy(str1,str2),str3)的功能是()。

A.将字符串str1复制到字符串str2中后再连接到字符串str3之后

B.将字符串str1连接到字符串str2之后再复制到字符串str3之后

C.将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后

D.将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中

57.有以下程序:intx=1,y=2;voidfunl(){x=3;y=4;}voidfun2(intx,inty){printf("%d,%d,\n",x,y);}main(){funl();printf("%d,%d,"x,y);fun2(5,6);}程序的运行结果是()

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

58.编制一个好的程序,首先要保证它的正确性和可靠性,还应强调良好的编程风格,在书写功能性注释时应考虑

A.仅为整个程序作注释B.仅为每个模块作注释C.为程序段作注释D.为每个语句作注释

59.下列不属于软件调试技术的是______。A.强行排错法B.集成测试法C.回溯法D.原因排除法

60.以下程序段给数组所有的元素输入数据,请选择正确答案填入。#include<stdio.h>main(){inta[10],j=0;while(i<10)scanf("%d",______);::}

A.a+(i++)B.&a[i+1]C.a+iD.&a[++i]

四、选择题(20题)61.

62.

63.有以下程序:

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

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

64.有如下程序段:

执行该程序段后,X的值为()。

A.trueB.falseC.0D.1

65.

设有下列程序段:

charstr[]="HelloWorld":

char*plr;

ptr=str:

执行上面的程序段后,*(ptr+10)的值为()。

A.\0B.0C.不确定的值D.0的地址

66.以下叙述中错误的是(

)。A.预处理命令行必须位于源文件的开头B.宏替换可以出现在任何一行的开始部位C.宏替换的作用一直持续到源文件结尾D.宏替换不占有程序的运行时间

67.下列程序的运行结果为()。#include<stdio.h>main{structdate{intyear,month,day;}today;printf("%d\n",sizeof(structdate));}A.8B.6C.10D.12

68.有以下程序:

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

A.10,64B.10,10C.64,10D.64,64

69.

70.

71.若某二叉树中的所有结点值均大于其左子树上的所有结点值,且小于右子树上的所有结点值,则该二叉树遍历序列中有序的是()。

A.前序序列B.中序序列C.后序序列D.以上说法均可以

72.下列选项中属于软件生命周期开发阶段任务的是()。

A.可行性研究

B.需求分析

C.详细设计

D.软件维护

73.

74.以下关于字符串的叙述中正确的是()。

75.

76.有以下程序:

运行时,若输入123450<回车>,则输出结果是()。

A.6566456

B.66656

C.66666

D.6666656

77.

78.设有定义:char*C;以下选项中能够使C正确指向一个字符串的是()。

A.charstr()=”string”;C=str;

B.scanf(”%s”,C.;

C.c=getchar();

D.*c=”strin9”;

79.

80.若有定义语句:

则strlen(s)的值是()。

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

五、程序改错题(1题)81.下列给定程序的功能是:读入一个整数n(2<;=n<;=5000),打印它的所有为素数的因子。例如,若输入整数1234,则应输出2,617。请修改程序中的错误,使程序能得出正确的结果。注意:不要改动main()函数,不能增选或删行,也不能更改程序的结构。试题程序:

六、程序设计题(1题)82.编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符为1,则输出3。

注意:部分源程序在文件PROCl.C中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填人你编写的若干语句。

参考答案

1.D解析:本题考查“++”和“--”运算符,运算符“++”是操作数加1,而“--”则是操作数减1。在do-while循环中,首先执行y--,再执行--y。当y=2时,执行y--,y的值变为1,--y使y值变为0,循环结束。执行输出时,先输出y的值0,然后执行y--,使y的值变为-1。

2.B“b+=a;”等价于“b=b+a;”,“a+=2;”等价于“a=a±2;”,“bA=10;”等价于“b=b%=10;”。循环体执行3次,最终结果为7,1。

3.D

4.B#define命令是C语言中的一个宏定义命令,为了区分其他标识符,标识符一般使用大写。将标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。题目中的S(k+j+2)=k+j+2*k+j+2/k+j+2”,经计算可得29。“S(j+k+2)=j+k+2*k+j+2/j+k+2”,经计算可得29。因此输出为29,29。故本题答案为B选项。

5.C解析:选项A中应将y和m前面的函数的类型说明符去掉,故选项A不正确;选项B中函数传了2个参数,其中一个为整型一个为浮点型,而fun()函数在定义时声明的2个参数,一个为整型一个为双精度型,其参数类型不一致,故选项B不正确;选项D在调用函数时,不应该再声明其返回类型,故迭项D不正确.所以,4个选项中选项C符合题意。

6.D程序调试的任务是诊断和改正程序中的错误。

7.C

\n语句charp[]={a,b,c);定义了一个一维字符数组p[],并用3个字符a,b,c进行了初始化;而语句q[]='abe'表示定义了一个一维字符数组,并用一个字符串常量'abc'进行了初始化。在C语言中,系统在每个字符串常量的最后自动加入一个字符\0作为字符串的结束符。所以函数sizeof(q)=4,而sizeof(p)=3,因而选项C为正确答案。

\n

\n

\n

8.A

9.C

10.A静态变量不是每调用一次就赋一次初值,而是将需要定义许多相同的具有相同属性的值时,使用静态变量来节省空间,所以A选项错误。

11.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。

12.C

13.B

14.A解析:题中要求x的取值是小于等于0或者大于等于1,这说明表达式是或的关系,所以在写成C语言表达式应是逻辑或的关系,逻辑或运算符是'‖'。

15.B

\n栈是线性表的一种,它的特点是先进后出,并且只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,因此具有记忆作用,栈可以采用顺序存储,也可以采用链式存储。

\n

16.C解析:本题考查的共用体的概念。共用体变量中的所有成员共享一段公共存储区,所以共用体变量所占内存字节数与其成员中占字节数最多的那个成员相等.本题定义的共用体中成员C所占的内存最多,因此选项B是正确的。由于共用体变量中的所有成员共享存储空间,因此变量中的所有成员的首地址相同,选项A是正确的。同结构体变量一样,共用体类型的变量可以作为实参进行传递,也可以传送共用体变量的地址,选项D也是正确的。在内存中,实数与整数的存放形式完全不一样,共用体的成员共用的是同一块内存,而不是同一个数值,因此选项C是错误的。

17.B其中B选项的getchar函数用于从终端读入字符。故本题答案为B选项。

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

19.D解析:C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。

20.D解析:在数据库系统中,通过系统提供的映象功能,使数据具有两方面的独立性:一是物理独立性。即由于数据的存储结构与逻辑结构之间由系统提供映象,使得当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改。二是逻辑独立性。即由于数据的局部逻辑结构(它是总体逻辑结构的一个子集,由具体的应用程序所确定,并且根据具体的需要可以作一定的修改)与总体逻辑结构之间也由系统提供映象,使得当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序也可以不必修改。由此可知,选项A.B与C中的说法都是错误的。

21.

22.考查ifelse语句,n=4不满足条件,所以fun5(4)=4+fun5(3),n==3也不满足条件,fun5(3)=3+fun5(2),n==2满足条件fun5(2)=2,故x=4+3+2=9。\r\n\r\n

23.77解析:此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。请注意前缀++,--和后缀++,--的区别。

24.关系或关系表关系或关系表解析:在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系.表中的每一列称为一个属性,相当于记录中的一个数据项,对属性的命名称为属性名,表中的一行称为一个元组,相当于记录值。

25.完整性控制完整性控制

26.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。

27.9292解析:本主函数中首先定义了一个4行4列的二维数组,然后执行一个while循环,该循环中又嵌套了一个do-while循环。现看while循环,该循环通过i++的值来判断是否结束循环当i++的值为4的时候结束循环,当i=0时,执行while的循环体,显然if语句条件不满足不执行,接着让j=4,然后执行do-while循环体,我们不难看出do-while循环的功能是将笫i+1行的所有元素加起来,所以这时s的值为s=a[1][0]+a[1][1]+a[1][2]+a[1][3]26,当i=1时,i+1=2,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环;当i=2时,i加1变为3,把笫3+1行的所有元素的加到s上,此时s=s+a[2][0]+a[2][1]a[2][2]+a[2][3]=92,当i=3时,3+1=4,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环,当i=3时,if后面括号里的表达式的值为真执行后面的confulue语句,结束该次循环当i=4时while循环结束,所以最后输出的s的值为92。

28.3!feof(f1)3\r\n!feof(f1)解析:要实现文件复制,需要指定源文件及目的文件,因此在命令行下执行程序时至少要指定两个参数,加上程序名本身,故argc的值至少为3,因此第一空应填3。while循环中语句fputc(fgetc(f1),f2);的目的是将f1中的字符依次读出并写入到f2对应的文件中去,直至文件f1结束为止,因此第二空为!feof(f1)。

29.1212解析:本题通过第一个for循坪将数组arr[0]-arr[9]分别赋值为0-9,通过第二个for循环的三次循环累加,求出结果为12,具体分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

30.(x>10&&x<100)||x<0

31.关系关系

32.A

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

34.实体实体解析:E-R模型中,有3个基本的抽象概念:实体、联系和属性。在E-R图中,用矩形框表示实体,菱形框表示联系,椭圆形框表示属性。

35.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,形参指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。

36.n/2性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。

37.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。

38.str+strlen(str)-1str+strlen(str)-1解析:检查一个字符串是否是回文,函数huiwen中定义了两个字符指针,pl=str指向字符串头,p2应该指向字符串尾,因此该处应该填入:str+strlen(str)-1或&str[strlen(str)-1]。

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

40.j++a[j]>a[j]

41.B解析:程序的功能是从键盘输入一个整数,然后执行if语句的条件表达式n++<10。表达式n++<10,先执行n<10,后对n加1。程序中从键盘输入的n值为9,9<10,判断的条件为真,然后n加1,即n的值变为10,程序执行后面的printf语句输出n的值为10,所以,选项B正确。

42.C

43.B

44.C解析:E-R模型可用E-R图来表示,它具有3个要素:①实体(型)用矩形框表示,框内为实体名称。②属性用椭圆型来表示,并用线与实体连接。属性较多时也可以将实体及其属性单独列表。③实体间的联系用菱形框表示。用线将菱形框与实体相连,并上标注联系的类型。

45.B解析:p=str+strlen(str)/2+1=str+4,f(p,p-2)的功能是将p[4]与p[2]互换,p[5]与p[1]互换,p[6]与p[0]互换,最后的结果为gfedcba。

46.B解析:因n=0,故!n为真,执行语句x-=1得x=x-1=2-1=1;条件!m和!x不成立,所以x=1,正确答案为1。

47.B解析:指针是—种用来存放变量地址的特殊变量。本题中指针变量p用于存放整型变量i的地址,改变*p的值即为改变i的值。又因为“&”和“*”两个运算符的优先级相同,按自右而左的方向结合,所以*&j运算选进行&j运算,得j的地址,再进行*运算,取所得地址里面的值,故*&j与j等价。

48.C解析:本题中,格式符。表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码代码值。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。

49.B

50.D解析:本题考核软件测试、软件调试和软件维护的概念。软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。软件测试具有挑剔性,测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷,就是说,测试是程序执行的过程,目的在于发现错误;一个好的测试在于能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误。由于测试的这一特征,一般应当避免由开发者测试自己的程序。所以,选项A的说法错误。

调试也称排错,目的是发现错误的位置,并改正错误,经测试发现错误后,可以立即进行调试并改正错误;经过调试后的程序还需进行回归测试,以检查调试的效果,同时也可防止在调试过程中引进新的错误。所以,选项B的说法错误。

软件维护通常有4类:为纠正使用中出现的错误而进行的改正性维护;为适应环境变化而进行的适应性维护;为改进原有软件而进行的完善性维护;为将来的可维护和可靠而进行的预防性维护。软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。所以,选项C的说法错误。

综上所述,选项A、B、C的说法都错误,所以,选项D为正确答案。

51.C解析:栈和队列都是操作受限制的线性表,只允许在端点插入和删除。不同点是:栈只允许在表的一端进行插入和删除操作,而队列允许在表的一端进行插入操作,而在另一端进行删除操作。

52.C

53.C解析:根据scanf()的定义,应该在空白处填入一地址值,又因为要为数组中所有元素赋值,故空白处填入的表达式应使i每次增1,选项A和B不会使i增1,所以不正确。选项D在第一次执行时i先自增为1,所以输入的第一个数据被存到x[l]中,而第N次执行时会将数据输入到x[N],这个地址已经超过数组x的范围,属于越界行为,所以也不正确。故正确答案为C。

54.B

55.C解析:C语言中字符常量是以单引号括起来的单个字符,或为以“\\”与三位八进制数值或两位十六进制数值代替单个字符。

56.C解析:strcat(s1,s2)是把s2字符串连接到s1字符串末尾,strcpy(s1,s2)是把s2字符串复制给s1字符串,要保证s1能容纳下连接或复制后的字符串。

57.C

58.C解析:功能性注释是嵌在源程序体中的,用以描述其后的语句或程序段是在做什么工作,或者执行了下面的语句会怎么样。所以它描述的是一段程序,是为程序段做注释,而不是每条语句。

59.B解析:我们严格区分调试与测试,调试是已知有错误而来找错误,是被动的;测试有很多种,比如未发现错误但不能保证程序没错而来找BUG,还比如我们运行测试程序是否符合用户的要求,是主动的。所以答案是选项B。A、C、D都是具体的程序调试方法,而B是宏观的程序测试方法。测试有单元测试、集成测试、确认测试、系统测试。比如我们在进行单元测试时,发现程序有错误,我们再可以根据A、C、D的方法来找错误。

60.A解析:a就是数组a的首地址,而a+x是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入一个数据,选项D不能给a[0]输入数据,只有A可以完成给数组所有的元素输入数据的任务。

61.A

62.D

63.D本题考查位运算符,题目中将a向左移两位,左移两位表示乘以4,所以答案为8,选项D正确。

64.D在c语言中,逻辑运算符有4个,它们分

65.A

\n本题主要考查字符数组和指针,在c语言中,字符型数组在存放字符串时会自动在末尾加上\0,所以数组st

温馨提示

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

评论

0/150

提交评论