2021年湖南省衡阳市全国计算机等级考试C语言程序设计真题(含答案)_第1页
2021年湖南省衡阳市全国计算机等级考试C语言程序设计真题(含答案)_第2页
2021年湖南省衡阳市全国计算机等级考试C语言程序设计真题(含答案)_第3页
2021年湖南省衡阳市全国计算机等级考试C语言程序设计真题(含答案)_第4页
2021年湖南省衡阳市全国计算机等级考试C语言程序设计真题(含答案)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

2021年湖南省衡阳市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序(说明:字母A的ASCIl码值是65):#include<stdio.h>voidfun(char*s){while(*s){if(*s%2)printf("%C",*s);s++;}}main(){chara[]="BYTE";Fun(a);printf("\n");}程序运行后的输出结果是()。A.BYB.BTC.YTD.YE

2.一个有7个顶点的完全三部图,至少有存在几条边()

A.10B.11C.15D.16

3.有以下程序:main{chara=a,b;printf("%c,",++a);printf("%c\n",b=a++):)程序运行后的输出结果是()。A.b,bB.b,cC.a,bD.a,c

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

A.文件指针是一种特殊的指针类型变量

B.文件指针的值等于文件当前读写位置,以字节为单位

C.文件指针的值等于文件在计算机硬盘中的存储位置

D.调用fscanf函数只能向文本文件中写入任意字符

5.设有定义intn=0,*p=&n,**q=&p;,则下列选项中正确的赋值语句是

A.p=1;B.*q=2;C.q=p;D.*p=5;

6.若有定义“charc=“hello!”;”,则以下说法正确的是()。

A.c占用7字节内存B.c是一个字符串变量C.定义中有语法错误D.c的有效字符个数是6

7.求2n个数中的最大值和最小值,最少的比较次数是()

A.4n/3B.2n-2C.3n-2D.3n/2

8.

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

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

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

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

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

10.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是()。

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

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

C.一个指针,是指向的输入数据放在内存中的起始位置

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

11.若有定义语句“chars[10]=“1234567\0\0”;”,则Strlen(s)的值是()。

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

12.一个n条边的连通无向图,其顶点的个数至多为()。

A.n-1B.nC.n+1D.nlogn

13.给定下列代码:已知n是一个整数:foo()时间复杂度为O(1),上述代码的时间复杂度是()A.O(logn)B.O(n)C.O(n*log(n))D.O(log(n)^2)

14.采用开放定址法处理散列表的冲突时,其平均查找长度()

A.高于二分查找B.高于链接法处理冲突C.低于二分查找D.低于链接法处理冲突

15.合法的数组定义是()

A.inta[]="string";

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

C.chara="string";

D.chara={0,1,2,3,4,5};

16.使用下列二维图形变换矩阵A=a*T,,其中,a是行向量(xy1),是齐次坐标形式的二维点。给定的变换矩阵T如下所示,则将产生的变换结果为()A.图形放大2倍

B.图形放大2倍,同时沿X、Y坐标轴方向各移动一个单位

C.沿X坐标轴方向各移动2个单位

D.沿X坐标轴放大2倍,同时沿X、Y坐标轴方向各移动一个单位

17.有以下程序段当执行上述程序段,从键盘上输A,555667777123后,y的值为()。

A.566.0B.55566.0C.7777.0D.566777.0

18.C语言中的基本数据类型所占存储空间长度的顺序是()

A.char<=int<=float<=double<=long

B.int<=char<=float<=long<=double

C.int<=long<=float<=double<=char

D.char<=int<=float<=long<=double

19.设有6个结点的无向图,该图至少应有()条边才能确保是一个连通图。

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

20.下列数据结构中,能用二分法进行查找的是()

A.无序线性表B.线性链表C.二叉链表D.顺序存储的有序表

二、2.填空题(20题)21.以下程序运行后的输出结果是【】。(注:如果结果中含有回车,可加一空格写在一行,例如:

111

111

111

可以写成:111111111。

#include<stdio.h>

mala()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

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

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

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

printf("\n");

}

}

22.在软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错直至回归测试的过程称为【】。

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

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

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)

}

25.在算法的4个特性中,算法必须能在执行有限个步骤之后终止指的是算法的______特性。

26.已知字符'A'的ASCII码值为65,以下语句的输出结果是【】。

charch='B';

printf("%c%d\n",ch,ch);

27.调用C语言标准库函数时要求用【】命令。

28.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

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

#include<string.h>

chat*huiwen(chat*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或t!=0)return("yes!");

elsereturn("no!");

}

main()

{charstr[50];

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

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

}

30.自盒测试方法重视【】的度量。

31.函数delete(s,i,n)的作用是从字符串s中删除从第i个字符开始的n个字符,请填空。

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

32.汇编程序和编译程序翻译的目标程序需经【】连接成可执行的程序。

33.以下函数的功能是求x的y次方,请填空

doublefun(doublex,inty)

{inti;

doublez;

for(i=1,z=x;i<y;i++)z=z*【】;

}

34.以下程序运行后的输出结果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}

35.若输入字符串:(图片),则以下while循环体将执行【】次。

while((ch=getchar())=='e')printf("*");

36.在数据流图的类型中有两种类型,它们是变换型和()。

37.设有定义:floatx=123.4567;,则执行以下语句后的输出结果是()。printf("%f\n",(int)(x*100+0.5)/100.0);

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

39.若有定义inta=10,b=9,c=8;,接着顺序执行下列语句,变量b中的值是【】。

c=(a-=(b-5));

c=(a%11)+(b=3);

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

intn='c':

switch(n++)

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

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

case'c':printf("moming");

case'd':printf("class");

}

三、1.选择题(20题)41.下列程序段中,不能正确赋值的是

A.char*p,ch;p=&ch;scanf("%c,&p")

B.char*p;p=(char*)malloc(1)scanf("%c",p);

C.char*p*p=getchar();

D.char*p,ch;p=&ch;*p=getchar();

42.有以下程序voidswapl(intc0[],intc1[]{intt;t=c0[0];c0[0]=c1[0];c1[0]=t;}voidswap2(int*c0,int*c1){intt;t-*c0;*c0=*c1;*c1=t;}main(){inta[2]={3,5},b[2]={3,5}swapl(a,a+1);swap2(&b[0],&b[1]);printf("%d%d%d%d\n",a[0],a[1],b[0],b[1]);}程序运行后的输出结果是

A.3553B.5335C.3535D.5353

43.有以下程序段

charch;intk;

ch=′a′;k=12;

printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);

已知字符a的ASCII码值为97,则执行上述程序段后输出结果是

A.因变量类型与格式描述符的类型不匹配输出无定值

B.输出项与格式描述符个数不符,输出为零值或不定值

C.a,97,12k=12

D.a,97,k=12

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

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

45.以下只有在使用时才为该类型变量分配内存的存储类说明是______。

A.auto和static

B.auto和register

C.register和static

D.extern和register

46.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是

A.acbedB.decabC.deabcD.cedba

47.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a<回车>后,以下叙述正确的是______。

A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入2个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

48.下列不正确的转义字符是()。

A.'\\'B.'\t'C.'\n\D.'088'

49.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()

A.控制流B.加工C.数据存储D.源和潭

50.若ch为char型变量,k为int型变量(已知字符a的ASCII码是97),则执行下列语句后输出的结果为()。ch='b';k=10;printf("%x,%o,",ch,ch,k);printf("k=%%d\n",k);

A.因变量类型与格式描述符的类型不匹配,输出无定值

B.输出项与格式描述符个数不符,输出为0值或不定值

C.62,142,k=%d

D.62,142,k=%10

51.循环链表的主要优点是()

A.不再需要头指针了

B.从表中任一结点出发都能访问到整个链表

C.在进行插入、删除运算时,能更好的保证链表不断开

D.已知某个结点的位置后,能够容易的找到它的直接前件

52.在下列选项中,______不是一个算法一般应该具有的基本特征。

A.确定性B.可行性C.无穷性D.拥有足够的情报

53.数据的存储结构是指()。

A.数据所占的存储空间

B.数据的逻辑结构在计算机中的存放形式

C.数据在计算机中的顺序存储方式

D.存储在计算机外存中的数据

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

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

55.若函数调用时,参数为基本数据类型的变量,下列叙述中正确的是()。

A.实参与其对应的形参共占存储单元

B.只有当实参与其对应的形参同名时才共占存储单元

C.实参与其对应的形参分别占用不同的存储单元

D.实参将数据传递给形参后,立即释放原先占用的存储单元

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

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

57.下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(clar*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<stden(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fur("test.t","hello,";}

A.hello,B.newworldhelloC.newworldD.hello,rld

58.下列正确的转义字符是()。

A.\1234B.57C.\'D.\\060

59.若有以下程序段:intm=0,n=0;charc='a';scanf("%d%c%d",&m,&c,&n);printf("%d,%c,%d\n",m,c,n);若从键盘上输入:10A10<回车>,则输出结果是______。

A.10,A,10B.16,a,10C.10,a,0D.10,A,0

60.有以下程序main(){intk=4,n=0;for(;n<k;){n++;if(n%3!=0)continue;K--;}printf("%d,%d\n",k,n);}程序运行后的输出结果是

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

四、选择题(20题)61.支持子程序调用的数据结构是()。

A.栈B.树C.队列D.二叉树

62.下列排序方法中,最坏情况下比较次数最少的是()。

A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序

63.

64.下列函数的类型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

65.有下面程序段:

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

A.18B.19C.20D.21

66.设x为int型变量,则执行以下语句后,x的值为()。x=10;x=x-=x-x;

A.10B.20C.40D.30

67.

68.下列叙述中正确的是()。A.算法的效率只与问题的规模有关,而与数据的存储结构无关

B.算法的时间复杂度是指执行算法所需要的计算工作量

C.数据的逻辑结构与存储结构是一一对应的

D.算法的时间复杂度与空间复杂度一定相关

69.关系规范理论是关系数据库进行逻辑设计的基础,这个理论最基本的要求是关系中的每个属性是()。

A.类型不变的B.宽度不变的C.不可分割的D.互不相关的

70.对两个数组a和b进行下列初始化:

charm[]1="l234567":

charn[]={'1','2','3','4','5','6','7');

则下列叙述正确的是()。A.A.数组m与数组n完全相同

B.数组m与数组n长度相同

C.数组m比数组n长1

D.数组m与数组n中都存放字符串

71.有以下函数:

以下关于aaa函数功能叙述正确的是()。

A.将串s复制到串tB.比较两个串的大小C.求字符串s的长度D.求字符串s所占字节数

72.结构化程序设计主要强调的是

A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性

73.有如下说明

inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

则数值为9的表达式是

A.*p+9B.*(p+8)C.*p+=9D.p+8

74.

75.

76.

77.下列用于printf函数的控制字符常量中,代表“竖向跳格”的转义字符常量是()。

A.\bB.\tC.\vD.\f

78.一个关系中属性个数为1时,称此关系为()。

A.对应关系B.单一关系C.一元关系D.二元关系

79.

80.

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是计算正整数m各位上数字的平方和。例如,输入498,则输出应该是161。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>longproc(10ngm){//****found****longsum=1;do{sum+=(m%10)*(m%10);m/=l0;//****found****}while(m)return(sum);}voidmain{longn;system("CLS");printf("Pleaseenteranumber:");scanf("%1d",&n);printf("\n%ld\n",proc(n));}

六、程序设计题(1题)82.请编写函数proc(),其功能是:计算并输出下列多项式的值。

S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+m)

例如,若主函数从键盘给m输入20后,则输出为s=1.904762。

注意:部分源程序给出如下。

请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。

试题程序:

参考答案

1.Dfun函数的意思是当*s%2==0的时候就输出并且s自加l次,然后判断。所以可知只有第2和第4个位置上的才符合要求,所以答案为D。

2.B

3.A++a与a++的区别是前者先自加再运算,后者是先运算后自加。

4.A文件指针实际上是指向一个结构体类型的指针。这个结构体中包含缓冲区的地址、在缓冲区中当前存取字符的位置、对文件是“读”还是“写”、是否出错、是否已经遇到文件结束标识等信息。选项A正确,选项B、C错误;fscanf函数只能从文本文件中输入数据到内存,选项D错误。故本题答案为A选项。

5.D解析:选项A),B),C)的指针赋值表达方式都不正确,*p=5表达整数5放到指针p所指向的存储单元中。注意:通过指针引用一个存储单。

6.Cc是字符变量,“hello!”是字符串。字符串不能赋给字符变量,定义中有语法错误。本题答案为C选项。

7.A

8.D

9.B在一个C语言程序中可以实现多种算法,所以B选项错误。故本题答案为B选项。

10.C解析:数据块输入/输出函数的调用形式为:fread(buffer,size,count,fp)。fread函数参数说明:“buffer”是一个指引,对fread来说,它是读入数据的存放地址;“size”是要读写的字节数;“count”是要进行读写多少个size字节的数据项;“fp”是指文件型指针。

11.Astrlen函数计算字符串长度时,遇到结束标识为止,且长度不包括结束标识。本题中的字符串从第1个字符开始,遇到第1个结束标识‘\\0’为止,注意不占字符串长度,所以字符串长度为7。故本题答案为A选项。

12.C

13.B

14.B

15.D

16.D

17.A本题考查的是格式输)ki$i数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其中的格式命令可以说明最大域宽。在百分号(%)与格式码之间的整数用于限制从对应域读入的最大字符数。因此j的值为55,y的值为566.0,字符数组nanle的值为7777123。故本题答案为A)。

18.A

19.B

20.DD)【解析】二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。

21.123056009或123056009123\r\n056\r\n009\r\n或123056009解析:程序开头定义了一个3行3列的数组,即:

1,2,3

4,5,6

7,8,9

进入循环,for(i=0;i<3;i++)

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

把a[1][0],a[2][0],a[2][1]分别赋为0,输出结果为:

123

056

009

22.校正性维护校正性维护

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

24.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。

25.有穷性有穷性解析:算法的4个基本特性包括:可靠性、确定性、有穷性和拥有足够的情报,其中,算法的有穷性指的是算法必须在有限的时间内完成,即算法必须在执行有限个步骤之后终止。

26.B66B66解析:字符B的ASCII码值为66,因此,按%c形式输出B,按%d形式输出66,输出结果为:B66。

27.includeinclude解析:include命令可调用标准的C语言库函数,可以用一对尖括号或一对双引号将“.h”文件括起来,在include前面要加“#”。

28.存储结构数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。

29.str+strlen(str)-1str+strlen(str)-1解析:先从main函数开始看,它先读入字符串,接下来肯定是要判断这个字符串是否是回文,冉看huiwen函数,它的主要思想是用p1指向字符串的首地址,p2指向字符串的尾地址(不包括结束符‘/0‘),将p1左移,p2右移,直到这两个指针相遇,如果在移动过程中发现p1!=p2,则该字符串不是回文,否则其是同文。因此。在空中填str+strlen(str)-1。

30.测试覆盖率测试覆盖率解析:白盒测试又称为结构测试。白盒测试作为对结构的测试,要求对被测程序的各种结构特性进行测试,这种情况被称为覆盖,故白盒测试又称为“基于覆盖的测试”。白盒测试方法重视测试覆盖率的度量,力求提高覆盖率,从而找出被测程序的错误。

31.length++i<lengthlength++\r\ni<length解析:第—个循环极有可能是计算串的长度,在i<=length时字符才被删除,被删除的是从第i个到笫i+n或最后—个间的所有字符。删除前,应判断i<=length。由于已经进行了-i运算,故实际应填入i<length。

32.装配程序装配程序

33.xx解析:函数的定义形式为:

函数类型函数名(形参表)

{

类型说明语句;

执行语句;

}

本题中函数的功能是:累积变量以求捐变量的Y次方。

34.6262解析:本题考查的是宏定义。带参数的宏定义是按#indefine命令行中指定的字符串从左到右进行转换。本题中替换的式子为:6+8*6+8,代入i,j的值得到62。

35.00解析:函数getchar()是从键盘得到用户输入的一个字符。用户输入的第1个字符是a,不管后面输入的是什么ch的值都是'a',因此条件(ch=getchar())=='e'为假,这个循环不会被执行。

36.事务型事务型解析:典型的数据流类型有两种:变换型和事务型。

37.460000

38.11解析:ifelse语句的功能是:若表达式的值为真,执行语句1,并跳过其他语句,执行ifelse语句的下一条语句,若表达式的值为假,跳过语句1,执行语句2,依次往下判断。题中,x=3,y=2,第一个if语句的控制条件x<y就不满足,又没有与之配对的else语句,所以直接执行printf语句,在整个过程中变量z的值都没发生变化。

39.33解析:这里:b-5=4,a-=4之后a的值为6,并把它赋给c。此时b的值并未被改变。在第2个表达式中,也只有赋值表达式b=3改变了b的值。所以两行语句执行完毕,b的值应该为3。

40.morningclassmorningclass解析:本题考查了两个知识点:①“++、--”运算后缀形式是先使用变量原来的值,使用完后再使其增1或减1;②在switch语句中,当n=\'c\'时,执行“case\'c\':”,输出morning;因为此句中没有break语句,因此接着执行'case\'d\':”,输出class,最终输出结果为morningclass。

41.C解析:本题考查了字符的输入函数getchar和利用scanf函数输入一个字符。用scanf输入字符时,格式说明字符应该为%c。本题选项C)因为指针p没有赋初值,所以是一个不定值,不能直接将getchar读入的字符赋给指针p所指向的字符,所以选项C错误。

42.D解析:本题考查的是数组名和指针用作函数的参数。在C语言中,函数参数使用数组形式和指针形式两者毫无差别。因此两个函数swap1()和swap2()的作用是完全一样的,都是交换两个参数所指的内容。主函数中分别使用swap1和swap2交换数组a[2]和b[2]中两个元素的位置。因此最终输出为:5353。故应该选择D。

43.D解析:考查printf函数的相关知识。如果要一次进行多个变量的定义,则在它们之间要用逗号隔开,因此选项A)和C)错误。在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b,所以正确答案为B)。输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。所以选项D)为正确答案。

44.A解析:根据题意,p和q为整型指针,分别指向整型变量n2和n1,选项B是将q赋给p,即p指向n1,选项C是将n1的地址赋给n2,选项D是将n2的值赋给p,均与n2=n1不等价。只有选项A中,*p即n2,*q即n1,*p=*q即等价于n2=n1。

45.B解析:extern、register、static、auto分别是定义外部变量、寄存器变量、静态变量、自动变量,其中,自动变量和寄存器变量属于动态存储,调用时临时分配单元而静态变量和外部变量属于静态存储,在整个程序运行时都存在。

46.D解析:中序遍历的递归算法如下:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法如下:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法如下:①遍历左子树;②遍历右子树;③访问根结点。由后序遍历结果dabec可知c是根结点,且无右子树。再由左子树的后序遍历结果dabe可知,e是左子树的根结点,且由左子树的中序遍历结果deba可知,d是左子树的左子树结点,b和a是左子树的右子树结点。再次由后序遍历结果ab可知,a是左子树结点。b是根结点。至此,各结点在树中的位置已完全确定。

47.A解析:getchar函数读入字符时,空格、回车符都作为字符读入,因此A正确。

48.D解析:'\\\\'是反斜线转义字符;'\\t'是水平跳格转义字符;'\\n'是换行转义字符;C语言中没有规定'088'为转义字符。

49.A解析:数据流图包括4个方面,即加工(转换)(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体)。不包括选项中的控制流。

50.C解析:第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个pfintf函数,有两个%说明,第1个%后面的字符要原样输出。注意:本题考查printf函数的格式。①“%x”和“%o”分别表示以十六进制和八进制无符号型输出整型数据(不带前导Ox或O):②printf函数中格式说明符之前插入的任何字符都原样输出:⑧格式说明与输出项的个数也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。

51.B解析:循环链表就是将单向链表中最后一个结点的指针指向头结点,使整个链表构成一个环形,这样的结构使得从表中的任一结点出发都能访问到整个链表。

52.C解析:作为一个算法,一般应具有以下几个基本特征。①可行性②确定性③有穷性④拥有足够的情报

53.B解析:数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。

54.C解析:主函数中定义了一个整型变量a,一个整型指针变量b和一个二级指针变量c,并让c指向指针变量b,让指针b指向整形变量a,所以**c为变量a的值,所以,4个选项中选项C符合题意。

55.C解析:本题考查函数调用时的参数传递。函数的形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间不影响。

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

57.A解析:C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。

58.C解析:转义字符是要用\\开头的,所以选项B不是转义字符。开头的斜杠为单斜杠,所以选项D不是转义字符。斜杠后面可跟1至3位八进制数,可以由0开头:或以x开头的1至2位十六进制数,因此选项A是错误的。\\为转义字符,为单引号字符,所以选项C符合题意。

59.A解析:scanf函数为格式输入函数,执行该函数后对变量m、n和c重新赋值,scanf的格式字符为'%dc%d',键盘输入为10A10,所以m=10、c=\'A\'、n=10。

60.C解析:在本程序的for循环中,用到了一个continue语句,continue语句的作用是停止本次循环,即不执行循环体内continue语句后面的其他语句,继续下次循环的条件判断。首先在for循环中n自加1(值变为1),然后执行后面的if语句,由于if语句后面括号的表达式(1%3!=0)的值为真,程序执行continue语句,回到for循环的开始部分,并且判断for循环中的条件表达式(n<k)为真,重复执行“n++;”语句,如此循环直到n=3时,if语句判定条件中表达式(3%3!=0)的值为假,程序执行if语句后面的“k--;”语句,此时k的值为3,不满足“n<k”,退出for循环。故最后的k和n的值为3和3。

61.A栈支持子程序调用。栈是-种只能在-端进行插入或删除的线性表,在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,因此本题的答案为A。

62.D冒泡排序、简单插入排序与简单选择排序法在最坏情况下均需要比较n(n-1)/2次,而堆排序在最坏情况下需要比较的次数是nlog2n。故答案为D选项。

63.D\r\n

64.A本题考查函数值的类型。在函数调用时,尽管Y的类型是float.x的类型是double,但是因为函数定义时没有指定类型说明,系统默认函数值的类型为int型,所以计算后Y的类型是int型。

65.B字符串连接函数strcat的调用形式如下:strcat(sl,s2)。此函数将s2所指字符串的内容连接到sl所指的字符串后面,并自动覆盖sl串末尾的尾标,函数返回sl的地址值。本题中首先将二维数组中各行的字符串都复制到了指针P所指向的一维数组k的地址空间,然后用strlen函数求得k数组的长度i,即l9。

66.A执行x=x-=x-x语句可写成x=x-(x-x),可看出结果为10,故八选项正确。

67.A

68.B解析:本题考查数据结构中有关算法的基本知识和概念。数据的结构,直接影响算法的选择和效率。而数据结构包括两方面,即数据的逻辑结构和数据的存储结构。因此,数据的逻辑结构和存储结构都影响算法的效率。选项A的说法是错误的。算法的时间复杂度是指算法在计算机内执行时所需时间的度量;与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。因此,选项B的说法是正确的。

数据之间的相互关系称为逻辑结构。通常分为四类基本逻辑结构,即集合、线性结构、树型结构、图状结构或网状结构。存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。存储结构在计算机中有两种,即顺序存储结构和链式存储结构。可见,逻辑结构和存储结构不是一一对应的。因此,选项C的说法是错误的。

有时人们为了提高算法的时间复杂度,而以牺牲空间复杂度为代价。但是,这两者之间没有必然的联系。因此,选项D的说法是错误的。

69.C关系规范理论是关系数

温馨提示

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

评论

0/150

提交评论