2022-2023年黑龙江省哈尔滨市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2022-2023年黑龙江省哈尔滨市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2022-2023年黑龙江省哈尔滨市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2022-2023年黑龙江省哈尔滨市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2022-2023年黑龙江省哈尔滨市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年黑龙江省哈尔滨市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.单链表的存储密度()顺序表的存储密度。

A.大于B.等于C.小于D.不能确定

2.以下选项中关于C语言算术表达式的叙述中错误的是()。

A.可以通过使用圆括号来改变算术表达式中某些算术运算符的计算优先级

B.C语言采用的是人们熟悉的四则运算规则,即先乘除后加减

C.算术表达式中,运算符两侧类型不同时,将进行类型之间的转换

D.C语言仅提供了“+”“-”“*”“/”这4个基本算术运算符

3.栈通常采用的两种存储结构是()。

A.顺序存储结构和链式存储结构B.散列方式和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构

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

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

B.c程序可以由多个程序文件组成

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

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

5.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

6.下面关于图的存储的叙述中,哪一个是正确的。________

A.用相邻矩阵法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关

B.用相邻矩阵法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关

C.用邻接表法存储图,占用的存储空间数只与图中结点个数有关,而与边数无关

D.用邻接表法存储图,占用的存储空间数只与图中边数有关,而与结点个数无关

7.

8.设栈S的初始状态为空,栈的容量为5,若入栈元素的顺序是e1、e2、e3、e4、e5,则出栈元素的顺序不可能是______。

A.e1、e2、e3、e4、e5

B.e5、e4、e3、e2、e1

C.e2、e4、e3、e5、e1

D.e3、e4、e1、e2、e5

9.设有以下语句,其中不是对a数组元素的正确引用的是:_____(其中0≤i<10)inta[10]={0,1,3,4,5,6,7,8,9,},*p=a;

A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))

10.对两个数组a和b进行下列初始化:charm[]1="l234567":charn[]={1,2,3,4,5,6,7);则下列叙述正确的是()。A.数组m与数组n完全相同B.数组m与数组n长度相同C.数组m比数组n长1D.数组m与数组n中都存放字符串

11.a、b和c都是int型变量,且a=3,b=4,c=5,则下面的表达式中,值为0的表达式是()

A.'a'&&'b

B.a<=b

C.ab+c&&b-c

D.!((a<b)&&!c1)

12.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。

A.x&&y

B.x<=y

C.x||y+z&&y-z

D.!((x<y)&&!z||1)

13.一个模块直接调用的下层模块的数目称为模块的()。

A.扇入数B.扇出数C.宽度D.作用域

14.如果有n个节点用二叉树来存储,那么二叉树的最小深度为()

A.Log2(n+1)B.Log2(n)C.Log2(n-1)D.n/2

15.交换两个变量的值,不允许用临时变量,应该使用下列()位运算符。

A.&.B.^C.||D.~

16.有以下程序:#include<stdio.h>main(){intx=1,y=2,z=3;if(x>y)if(y<z) printf(“%d”,++z);else printf(“%d”,++y);printf(“%d\n”,x++);}程序的运行结果是()。

A.1B.41C.2D.331

17.合法的数组初始化语句是()。

A.chara="string";

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

C.inta[]="string"

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

18.函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,但函数不完整:intfun(int*a,intn){int*p,*s;for(p=a,s=a;p-a<=""p="">if(________)s=p;return*s;}在if语句下划线处应填入的选项是()。

A.p>sB.*p>*sC.a[p]>a[s]D.p-a>p-s

19.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为________。

A.24B.48C.72D.53

20.下面的哪个保留字不能作为函数的返回类型()。

A.voidB.intC.newD.long

二、2.填空题(20题)21.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。

22.在数据库理论中,数据库总体逻辑结构的改变,如修改数据模式、增加新的数据类型、改变数据间联系等,不需要修改相应的应用程序,称为【】。

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

#include<stdio.h>

intfun(intx,inty)

{staticintm0,i=2;

i+=m+1;

m=i+x+y;

returnm;

}

main()

{intj=4,m=1,k;

k=fun(j,m);printf("%d,",k);

k=fun(j,m);printf("%d\n",k);

}

24.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。

25.在数据库的概念结构设计中,常用的描述工具是【】。

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

main()

{inta=10;

a=(3*5,a+4);printf("a=%d\n",a);

}

27.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。

main()

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

p=a;

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

printf("%x\n,p+9);

}

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

29.以下程序是从终端读入数据到数组中,统计其中正数的个数,并计算它们的和。请填空。

main()

{

inti,a[20],sum,count;

sum=count=【】;

for(i=0;i<20;i++)scanf("%d",【】);

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

{

if(a[i]>0)

{count++:

sum+=【】;

}

}

printf("sum=%d,count=%d\n",sum.count);

}

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

main()

{inta=1,b=3,c=5;

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

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

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

32.在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。

33.若有以下程序

main()

{chara;

a='H'-'A'+'0';

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

}

执行后输出的结果是______。

34.下面程序的功能是:输出100以内能被4整除且个位数为8的所有整数,请填空。main(){inti,j;for(i=0=();i++){j=i*10+8;if(j%4!=0)continue;printf("%d",j);}}

35.下面invert函数的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

voidinvert(charstr[])

{inti,j,【】;

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;

}

}

36.有以下程序:

floatf1(floatn)

{returnn*n;}

floatf2(floatn)

{return2*n;}

main()

{float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;

p1=f1;p2=f2;

y1=p2(p1(2.0));

t=P1;p1=p2;p2=t;

y2=p2(p1(2.0));

printf("%3.0f,%3.0f\n",y1,y2);

}

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

37.下列程序用来输出结构体变量ex所占存储单元的字节数。

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));

}

38.数据库的设计通常可以分为4个步骤:需求分析、概念设计、【】和物理设计。

39.设有定义“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,则对结构体成员a的引用方法可以是abc.a和p_abc______。

40.存储结构的4种基本类型分别是顺序、链式、索引和【】。

三、1.选择题(20题)41.线性表常采用的两种存储结构是()

A.散列方法和索引方式B.链表存储结构和数组C.顺序存储结构和链式存储结构D.线性存储结构和非线性存储结构

42.以下程序的输出结果是()longfun(intn){longs;if(n==1||n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%d\n",fun(3));}

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

43.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.选择排序C.快速排序D.归并排序

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

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

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

C.程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000

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

45.设有定义:inta=2,b=3,c=4;则以下选项中值为0的表达式是()。

A.(!a==1)&&(!b==0)

B.(a<b)&&!c‖1

C.a&&b

D.a‖(b+b)&&(c-a)

46.以下程序的输出结果是()。#include<stdio.h>main(){intn=4;while(n--)printf("%d",--n);}

A.20B.31C.321D.210

47.有以下程序:#include<stdio.h>main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);prinff("%d\n",s);

A.45B.20C.25D.36

48.函数ftell(fp)的作用是()。

A.得到fp所指向文件的当前读写位置B.初始化流式文件的位置指针C.移动流式文件的位置指针D.以上三种答案均正确

49.结构化程序设计主要强调的是()。

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

50.以下程序的输出结果是______。main(){charch[3][4]={"123","456","78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}

A.1.23457e+008B.1.23457e+008C.1.23457e+007D.147

51.以下程序#include<stdio.h>#include<string.h>main(){char*pl="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}的输出是________。

A.xyzabcABCB.zabcABCC.yzabcABCD.xyabcABC

52.下列关于栈的描述中错误的是______。

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

53.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()

54.有以下程序:#include<stdio.h>main(){charc[6];inti=0;for(;i<6;c[i]=getchar(),i++);for(i=0;i<6;i++)putchar(c[i];printf("\n");}如果从键盘上输入:ab<回车>c<回车>def<回车>则输出结果为______。

A.abcdefB.abcdC.abcdD.abcdef

55.有以下程序:voidf(intv,intw){intt;t=v;v=w;w=t;}main(){intx=l,y=3,z=2;if(x>y}f(x,y);elseif(y>z)f(y,z);elsef(x,z);printf("%d,%d,%d\n",x,y,z);}执行后输出结果是

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

56.请读程序:#include<stdio.h>#include<string.h>main(){char*s1="AbCdEf",*s2="aB";s1++;s2++;printf("%d\n",strcmp(s1,s2));}上面程序的输出结果是______。

A.正数B.负数C.零D.不确定的值

57.已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填______。structlink{chardata;______;}node;

A.Structlinknext

B.link*next

C.structnextlink

D.Structlink*next

58.在C语言中,函数中变量的隐含存储类别是______。

A.autoB.staticC.externD.无存储类别

59.算法一般都可以用______控制结构组合而成。

A.循环、分支、递归B.顺序、循环、嵌套C.循环、递归、选择D.顺序、选择、循环

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

A.一个算法的空间复杂度大,则其时间复杂度也必定大

B.一个算法的空间复杂度大,则其时间复杂度必定小

C.一个算法的时间复杂度大,则其空间复杂度必定小

D.上述三种说法都不对

四、选择题(20题)61.23.若有下面的程序段

chars[]="china";char*p;p=s;

则下列叙述正确的是

A.s和p完全相同B.数组s中的内容和指针变量p中的内容相等

C.s数组长度和p所指向的字符串长度相等D.*p与s[0]相等

62.若有如下说明和定义

structtest

{intml;charm2;floatm3;

unionuu{charul[5];intu2[2];}ua;

}myaa;

则sizeof(structtest)的值是

A.12B.16

C.14D.9

63.有以下程序

A.357B.753C.369D.751

64.关系数据库管理系统能实现的专门关系运算包括()。

A.选择、投影、连接B.排序、查找、统计C.关联、更新、排序D.显示、打印、制表

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

A.17B.16C.15D.14

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

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

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

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

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

67.

68.

69.C语言结构体类型变量在程序执行期间,()。

A.所有成员一直驻留在内存中B.没有成员驻留在内存中C.部分成员驻留在内存中D.只有一个成员驻留在内存中

70.下列对队列的叙述正确的是()。

A.队列按“先进后出”原则组织数据

B.队列属于非线性表

C.队列在队尾删除数据

D.队列按“先进先出”原则组织数据

71.

72.C语言中用于结构化程序设计的三种基本结构是A.顺序结构、选择结构、循环结构

B.if、switch、break

C.for、while、do-while

D.if、for、continue

73.

74.

75.假定已建立以下链表结构,且指针P和q已指向如图所示的结点:

则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是()。

A.p一>next=q一>next;flee(q);

B.p=q一>next;free(q);

C.p=q;free(q);

D.(*p).next=(幸q).next;ffee(p);

76.设有如下三个关系表

下列操作中正确的是()。

A.T=RnSB.T=RUSC.T=R×SD.T=R/S

77.

下述程序的输出结果是()。

#include<stdio.h>

main

{inta[2][3]={{1,2,3),{4,5,6}},(*p)[3],i;

p=a;

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

{if(i<2)

p[1][i]=p[1][i]一1;

else

p[1][i]=1;)

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

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

78.

79.在面向对象方法中,具有相似属性与操作的一组对象称为()。

A.类B.实例C.消息D.数据

80.有下列程序段:intn,t=1,S=0;scanf("%d",&n);do{s=s+t;t=t-2;while(t!=n);为使此程序段不陷入循环,从键盘输入的数据应该是()。A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写一个函数proc(),它的功能是:根据以下公式求7c的值(要求满足精度0.0005,即某项小于0.005时停止迭代)。程序运行后,如果输入精度0.0005,则程序输出3.140578。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C

2.DC语言的算术运算符是有优先级的。圆括号可以改变算术表达式中某些算术运算符的优先级,选项A正确;算术运算符中,乘除运算符的优先级比加减运算符的优先级高,C语言采用的是四则运算规则,选项B正确;算术表达式中,运算符两侧运算对象的数据类型不同时,将进行隐式类型转换,选项C正确;C语言中基本的算术运算符除了“+”“-”“*”“/”之外,还有“%”,即求余运算符,选项D错误。故本题答案为D选项。

3.A解析:和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置,由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。注意:这3种运算方法在各种存储结构中的应用。

4.A答案A

解析:一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C语言程序可以实现多种算法。

5.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。

6.A

7.A

8.D解析:栈是仅在表头和表尾进行插入和删除元素操作的线性表,其特点是“先进后出”。本题中,进栈的过程中可以出栈。选项D中,如果第一个出栈的元素为e3,由于入栈顺序是e1、e2、e3,那么e3出栈后,栈中元素必定有e1和e2,因为e1先入栈,故e1应在e2后出栈,所以选项D是不可能的出栈顺序。

9.D解析:观察程序可知,a实际上就是数组a的首地址,所以“*(a+i)”表示的就是数组a中的第i个元素的值,进而,我们可以知道*(*(a+i))必然不是对a数组元素的正确引用。

10.C在m数组中赋值的是字符串,其长度为7,末尾有结束符\0,故字节数为8,而n数组中赋的是字符,其长度为7,故C选项正确。

11.D

12.D解析:本题考查逻辑运算符的使用。当“&&”的两个运算对象都足逻辑1时,表达式才返回值是1;当“||”的两个运算对象至少有一个是逻辑1时,表达式返回值是1。选项A)中,x和y都是逻辑1,所以返回值是1;选项B)中,x=4<=y=6为逻辑1,所以返回值是1;选项C)中,y+z的值等于14,非0,y-z的值为-2,非0,所以逻辑表达式4||14&&-2的值不为0;选项D)中,x<y为1,!z为0,1&&0为1,0||为1,因此,!1为0。

13.B扇入数是指调用一个给定模块的模块个数。扇出数是指由一个模块直接调用的其他模块数,即一个模块直接调用的下层模块的数目。本题答案为B选项。

14.A

15.B按逻辑位运算特点:①用按位与运算将特定位清为0或保留特定位;②用按位或运算将特定的位置为1;③用按位异或运算将某个变量的特定位翻转或交换两个变量的值。

16.Aelse总是与离它最近的if配对,所以当第1个if语句的判断条件不成立时,不再执行第2个if语句以及与第2个if语句配对的else语句,而是直接执行“x++”,输出1。故本题答案为A选项。

17.D

18.B函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回。通过for循环比较,s始终指向最大值的那个元素。取指针的值,使用*P,因此比较使用*P和*s,又因为找最大值,当*s<*p时,修改指针s的指向。故本题答案为B选项。

19.D

20.C

21.输出结果输出结果解析:注意:测试的基本方法和步骤。

22.逻辑独立性逻辑独立性解析:数据库总体逻辑结构改变,而不需要相应修改应用程序叫做逻辑独立性。

23.817

24.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。

25.E-R图E-R图解析:E-R图是设计概念模型的有力工具。

26.a=14a=14解析:逗号表达式的值是以逗号分隔的最后一个表达式的值。所以题目中的语句a=(3*5,a+4);就等价于a=a+4;。故本题输出结果是a=14。

27.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。

28.存储结构

29.0&a[i]a[i]0\r\n&a[i]\r\na[i]解析:本题要求从终端读入数据到数组中,统计其中正数的个数,井计算它们的和。程序中首先要对存放正数个数的变量count及存放和值的变量sum初始化为0,所以第一空应填0。接着要求从终端读入数据到数组中,可以通过scanf函数实现,因此第二空应填&a[i]。最后通过sum+=a[i];语句累加正数a[i]的值到sum中,因此第三空应填a[i]。

30.yesyes解析:if语句的条件语句为c=a+b=1+3=4,即条件为真,执行语句printf('yes\\n');,输出结果为yes。

31.44解析:在主函数中,语句p=a;p++使用指针p指向数组a[1],所以输出结果为4。

32.类类解析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。

33.77解析:本题考核的知识点是字符类型变量的运算。字符型数据可作为整型参加算术运算,其值为其对应的ASCII码。'H'-'A'的结果是7,加'0'后是'7'的ASCII码,所以输出的是字符'7'。

34.i<10i<10解析:分析程序:当(i=0,1,2,…)时,“j=i*10+8”语句的运行结果是(8,18,28,…)个位数字为8的所有整数;题中要求是100以内的整数,所以i<10;“if(j%4!=0)continue;”语句的功能是当条件不能被4整除时,继续循环不执行操作,直到能被4整除时输出该数,所以输出的数满足条件100以内能被4整除且个位数为8。

35.k-1k\r\n-1解析:本题通过定义一中间值k,实现字符串str内容的交换。

36.8168,16解析:float(*p1)(float)是定义p1为指向函数的float型的指针变量。因此p1=f1;p2=f2;表示p1指向函数f1,p2指向函数f2,故所有y1=p2(p1(2.0))=f2(f1(2.0))=8;后面将p1与p2互换,y2=f1(f2(2.0))=16。

37.ex或structstex或structst

38.逻辑设计逻辑设计解析:数据库设计的4个阶段为:需求分析、概念设计、逻辑设计和物理设计。

39.若结构体变量abc有成员a,并有指针p_abc指向结构变量abe,则引用变量abe成员s的标记形式有abe.a和p_abc->a。

40.散列散列

41.CC)【解析】线性表的存储通常要用两种存储结构:顺序存储结构和链式存储结构。

42.A

43.A解析:以下几种算法的时间复杂度分别为:冒泡排序(n2);选择排序(n2);快速排序(nlog2n);归并排序(nlog2n)。当排序元素序列基本有序的情况下,冒泡排序的交换次数为0,只是顺序扫描数据而已,所以其效率是最高的。

44.D解析:选项A),共用体的每个成员的起始地址都相同;选项B),共用体变量所占的内存长度等于最长的成员的长度;选项C)因为每个成员的起始地址相同,所以整型数5以浮点型输出时为5.000000;选项D)C语言规定,不能把共用体变量作为函数的参数。

45.A解析:逻辑运算符的优先级由高到低运算次序如下:!(非)→&&(与)→||(或),选项A)的表达式中,先计算!a,结果为0,由于'0==1'不成立,故整个表达式的值为0。

46.A解析:n--是先使用后自减,--n是先自减后使用。n=4时,执行n--后,n变为3,执行--n后,n变为2,所以,第一次输出时,n为2;同上过程,第二次输出时,n为0。

47.C解析:程序中的*(t+i)相当于t[i]。由于for循环变量的增量为2,因此i分别取值0,2,4,6,8,因为t[0]=1,t[2]=3,t[4]=5,t[6]=7,t[8]=9,对其进行求和运算,结果为25。

48.A解析:位置指针当前值函数ftell()的基本调用格式为:fiell(fp)。

fiell()函数的参数说明:“fp”是指向文件的文件型指针。

fiell函数的功能:得到fp所指向文件的当前读写位置,即位置指针的当前值,如果函数的返回值为-1L,表示出错。

49.D解析:程序不仅是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。

50.C

51.D解析:strcat(p1,P2)将字符串abcABC放到了*pl所指向的存储单元中;strcpy在本题将abcABC复制到str+2所指向的存储单元中,即覆盖原str数组中的字符z及其后的所有字符,故str的值为“xyabcABC”。

52.B解析:栈是限定在一端进行插入与删除运算的线性表。在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底,对栈的插入和删除操作中,不需要改变栈底指针。栈是按照“先进后出”或“后进先出”的原则组织数据的。栈具有记忆作用。栈的存储方式和线性表类似,也有两种,即顺序栈和链式栈。

53.Bscanf(\u3000)语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf(\u3000)函数不能输入空格;getehar(\u3000)函数用于输入字符,其调用形式为:ch=getelaar(\u3000),getehar(\u3000)函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets(\u3000)函数的凋用形式为:gets(str_adr),其中stradr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。9ets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc(\u3000)函数的调用形式为:ch=getc(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。

54.C解析:getchar():此函数的作用是从终端(或系统隐含指定的输入设备)输入—个字符。

2.putchar():此函数的作用是向终端输出—个字符,也可以输出控制字符。

本题在输入字符时,ab和c后面的回车符分别赋给了c[2]和c[4],所以,正确答案为C。

55.C解析:本题考核的知识点是函数的调用和if-else语句的应用。C语言规定else总是和离它最近的if语句配对。分析可以知道,函数f()作用是让形参v和形参w的值交换。在i函数中首先定义了三个变量x。y和z。然后再执行下面的if-else语句.由程序可以看出第—个else和第一个订搭配,第二个else和第二个if搭配。由于调用函数时是进行值传递的。即将实参x,y,z传给形参v和w,以后行参和实参再无联系,故通过if语句调用f()函数后,x、y和z的值并没有改变。故最后输出的x、v和z的值为1、3和2,所以,4个选项中选项C符合题意。

56.A解析:本题考查字符串比较函数strcmp()的应用。strcmp(s1,s2)是中比较函数,当s1>s2时返回值为正数,当s1<s2时返回值为负数,当s1=s2时返回值为零。本题中s1,s2分别表示两个串中第一个字符的地址,s1++和s2++是将指针指向串的第二个字符,指针变量s1指向的是串“bCdEf”的首地址,即字符b的地址,而指针变量s2指向的是字符'B'的地址。而在字符串比较中,宁符串大小的确定是各个字符串相应位置字符的ASCII码值的大小决定的,字符'B'的ASCII码值为66,字符“b”的ASCII码值为98,所以s1>s2,返回值为正数。

57.D解析:在单向链表中,由于每个结点需要存储下一个结点的地址,且下一个结点的数据类型与前一个结点的数据类型完全相同,故应为structlink*next。

58.A解析:函数中变量的存储类别包括auto,static,extern,其中auto为隐含存储类别,static为静态存储类别,register是寄存器存储类别。

59.D解析:算法的控制结构给出了算法的基本框架,不仅决定了算法中各操作的执行顺序,也直接反映了算法的设计是否符合结构化原则。一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。

60.D解析:时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。人们都希望选择一个既省存储空间、又省执行时间的算法。然而,有时为了加快算法的运行速度,不得不增加空间开销;有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。因此,选项A、B、C的说法都是错误的。故本题的正确答案是D。

61.D本题考查数组与指针的关系。C语言规定数组名代表数组中第一个元素的地址,题目中给出了p=s,即p=&s[0],所以有*p=s[0]。A选项说s和p完全相同是错误的,因为s是数组名,是一个常量,而p是一个指针变量;B选项说数组s中的内容和指针变量p中的内容相等也是错误的,因为数组s中的内容是字符串“china”,而指针变量p中的内容是数组的首地址;C选项说s数组长度和p所指向的字符串长度相等也是错误的,因为字符串存放在数组中时,至少需要多出一个存放字符串结束标识的单元。

62.A在本题中,首先定义了一个结构体。在该结构体中,定义了一个整型变量成员、一个字符型变量成员和一个浮点型变量成员,并在结构体中定义了一个联合体变量成员,联合体变量成员中又包含两个联合体成员数组。题目最后要求计算该结构体变量所占的存储空间。

在C语言中,联合体变量中的所有成员共享存储空间,联合变量的长度等于各成员中最长的长度,因此,本题的联合体部分所占的长度为5,但是结构体与联合体不一样的是,结构体不能共享空间,一个结构体变量的总长度是各成员长度之和,因此,该结构体所需的存储空间为5+1+2+4=12。本题的正确答案选A。

63.A二维数组定义行数可以省略,列数不能省略,所以答案选择A)。

64.A\n关系数据库管理系统能实现的专门

温馨提示

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

评论

0/150

提交评论