2021年江苏省徐州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第1页
2021年江苏省徐州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第2页
2021年江苏省徐州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第3页
2021年江苏省徐州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第4页
2021年江苏省徐州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

2021年江苏省徐州市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为()。

A.0~255B.0~32767C.0~65535D.0~2147483647

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

A.数据的逻辑结构与存储结构必定是一一对应的

B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构

C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构

D.以上三种说法都不对

3.有下面程序段#include"stdio.h"#include"string.h"main(){chara[3][20]={{"china"};{"isa"},{bigcountry!"}};chark[100]={0},*p=k;inti;for(j=0;j<3;i++){p=strcat(p,a[i]);}i=strlen(p);printf("%d\n",i);}则程序段的输出结果是

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

4.已知待排序的n个元素可分为n/k个组,每个组包含k个元素,且任一组内的各元素均分别大于前一组内的所有元素和小于后一组内的所有元素,若采用基于比较的排序,其时间下界应为()A.O(nlog2n)B.O(nlog2k)C.O(klog2n)D.O(klog2k)

5.对于静态表的顺序查找法,若在表头设置监视哨,则正确的查找方式为()A.从第0个元素往后查找该数据元素

B.从第1个元素往后查找该数据元素

C.从第n个元素往开始前查找该数据元素

D.与查找顺序无关

6.有以下程序:

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

A.10B.40C.32D.8

7.若i、j已定义成mt型,则下列程序段中内循环体的总执行次数是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

8.下列字符数组初始化语句中,不正确的是()。

A.charc[]=goodmorning;

B.charc[20]="goodmorning";

C.charc[]={a,b,c,d);

D.charc[]={"ffgoodmorning"};

9.有三个关系R,S和T如下:

其中关系T由关系R和S通过某种操作得到,该操作为()。A.选择B.投影C.交D.并

10.有以下程序:#includedstdi0.h>#definef(x)X*x*xmain(){inta=3,S,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",S,t);}程序运行后的输出结果是()。A.10,64B.10,10C.64,10D.64,64

11.要解决散列引起的冲突问题,最常用的方法是()

A.数字分析法、除留余数法、平方取中法

B.除留余数法、线性探测法、平方取中法

C.线性探测法、二次探测法、链地址法

D.除留余数法、线性探测法、二次探测法

12.

13.有以下程序段:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是()。

A.*pt->yB.pt->xC.++pt->xD.(pt++)->x

14.C语言可执行程序的开始执行点是()。

A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句

15.用二分法查找一个长度为10的,排好序的线性表,查找不成功时,最多需要比较()次

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

16.若要判断char型变量c中存放的是否为小写字母,以下正确的表达式是()。A.'a'<=c<='z'

B.(c>='a')&&(c<='z')

C.(c>='a')‖(c<='z')

D.('a'<=c)AND('z'>=c)

17.有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}程序运行后输出结果是______。

A.7,8,8B.7,8,7C.8,7,7D.8,7,8

18.现有如下定义语句int*p,s[20],i;p=s;表示数组元素s[i]的表达式不正确的是

A.*(s+i)B.*(p+i)C.*(s=s+i)D.*(p=p+i)

19.对包含N个元素的散列表进行检索,平均检索长度________

A.为o(log2N)B.为o(N)C.不直接依赖于ND.上述三者都不是

20.设一棵二叉树有3个叶子节点,有8个度为1的节点,则该二叉树中总的节点数为()

A.12B.13C.14D.15E.16F.17

二、2.填空题(20题)21.函数sstrcmp的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp)。请填空。

#include<stdio.h>

intsstrcmp(char*s,char*t)

{while(*s&&*t&&*s==【】)

{s++;t++;}

return【】;

}

22.测试的目的是暴露错误,评价程序的可靠性;而______得目的是发现错误的位置并改正错误。

23.下列程序的功能是将字符串s中所有的字符c删除。请填空。

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')

s[j]='\0';

puts(s);

}

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

main()

{

intx=0210;

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

}

25.软件是程序、数据和【】的集合。

26.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体集“项目主管”与实体集“项目”的联系属于【】的联系。

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

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

28.下面程序的功能是根据公式e=1+1/1!+1/2!+1/3!+1/4!+...计算e的近似值,精度要求为10-5。请填空。

main()

{intn;

doublee=1.0,t=1.0;

for(n=1;【】n++);

{【】e+=t;}

printf("%f\n",e);}

29.Jackson方法是一种面向【】的结构化方法。

30.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下

1

11

121

1331

14641

其构成规律是:

(1)第0列元素和主对角线元素均为1

(2)其余元素为其左卜方和正上方元素之和

(3)数据的个数每行递增1

请将程序补充完整。

#defineN6

voidyanghui(intx[N][N])

{inti,j;

x[0][0]=1;

for(i=1;j<N;i++)

{x[i][0]=______=1;

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

x[i][j]=______;

}

}

31.在面向对象方法中,类之间共享属性和方法的机制称为______。

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

#defineN10

#defines(x)x*x

#definef(x)(x*x)

main()

{inti1,i2;

i1=1000/s(N);i2=1000/f(N);

printf(“%d%d\n”,i1,i2);

}

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

34.在树形结构中,树根结点没有______。

35.如下图所示的二叉树后序遍历序列是【】。

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

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

37.以下程序输出的最后一个值是【】

intff(intn)

{staticintf=1;

f=f*n;

returnf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i));

}

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

main()

{ints=0,i=1;

while(s<=10)

{s=s+i*i;

i++;

}

printf("%d",--i);

}

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

inta=1234;

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

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

三、1.选择题(20题)41.下列描述正确的是()。

A.C语句能嵌套定义函数,但不可以嵌套调用函数

B.C语句不能嵌套定义函数,也不可以嵌套调用函数

C.C语句能嵌套定义函数,也可以嵌套调用函数

D.C语句不能嵌套定义函数,但可以嵌套调用函数

42.若有如下程序段:intn=1O;while(1)n--;printf("%d";n);则while循环执行的次数是()。

A.0B.1C.10D.无数

43.以下合法的赋值语句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

44.设有以下说明和定义:typedefunion{longiintk[5];charc;}DATE;structdate{intcat;DATEcow;doubledog;}too;DATEmax;则下列语句的执行结果是()printf("%d",sizeof(struetdate)+sizeof(max));

A.26B.30C.18D.8

45.下列程序是用来判断数组中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun

A.7,431B.6C.980D.6,980

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

A.接口复杂的模块,其耦合程度一定低

B.耦合程度弱的模块,其内聚程度一定低

C.耦合程度弱的模块,其内聚程度一定高

D.上述3种说法都不对

47.在数据管理技术的发展过程中,可实现数据共享的是()

A.人工管理阶段B.文件系统阶段C.数据库系统阶段D.系统管理阶段

48.以下数组定义中不正确的是_______。

A.inta[2][3];

B.intb[][3]={0,1,2};

C.intc[100][100={0};

D.intd[3][]={{1,2},{1,2,3},{1,2,3,4}};

49.设有定义语句:charc1=92,c2=92;则以下表达式中值为零的是()。

A.c1∧c2B.c1&c2C.~c2D.c1|c2

50.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用"",(双撇号)括起时,寻找被包含文件的方式是()。

A.直接按系统设定的标准方式搜索目录

B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索

C.仅仅搜索源程序所在目录

D.仅仅搜索当前目录

51.以下数组定义中错误的是()。

A.intx[][3]={0};

B.intx[2][3]={{1,2},{3,4},{5,6}};

C.intx[][3]={{1,2,3},{4,5,6}};

D.intx[2][3]={1,2,3,4,5,6};

52.若以下选项中的变量已正确定义,则正确的赋值语句足

A.x1=26.8%3;B.1+2=x2C.x3=0x12;D.x4=1+2=3;

53.如果需要打开一个已经存在的非空文件"Demo"进行修改,下面选项中正确的是

A.fp=fopen("Demo","r");

B.fp=fopen("Demo","ab+");

C.fp=fopen("Demo","w+");

D.fp=fopen("Demo","r+");

54.若输入ab,程序运行结果为______。main(){staticchara[2];scanf("%s",a);printf("%c,%c",a[1],a[2]);}

A.a,bB.a,C.b,D.程序出错

55.有以下程序main(){unsignedinta;intb=-l;a=b;printf("%u",a);}程序运行后的输出结果是

A.-1B.65535C.32767D.-32768

56.下列能正确定义且赋初值的语句是()。

A.intn1=n2=10;

B.charc=32;

C.floatf=f+1.1;

D.doublex=12.3E2.5;

57.以下能正确定义二维数组的是()。

A.inta[][3];

B.inta[][3]={2*3};

C.inta[][3]={};

D.inta[2][3]={{1},{2},{3,4}}:

58.函数fun的返回值是fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!='\0')num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}

A.字符串a的长度B.字符串b的长度C.字符串a和b的长度之差D.字符串a和b的长度之和

59.算法的时间复杂度是指______。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数

60.以下程序的输出结果是

#include

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

main()

{p=(int*)malloc(sized(int));

f(p,a);

printf("%d\n",*p);

free(p);}

f(int*s,intp[][3])

{*s=p[1][1];}

A.1B.4C.7D.5

四、选择题(20题)61.

62.若有定义和语句:

int*(*pp),*P,a=20,b=10;

pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,**PP);

则输出结果是()。A.A.20,10B.20,20C.10,20D.10,10

63.下列语句组中,正确的是()。

A.char*s;s=”Olympic”;

B.chars[7];s=”Olympic”;

C.char*s;s={¨Olympic”};

D.chars[7];s={"Olympic”};

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

65.有以下程序

structs

{intx,y;}data[2]={10,100,20,200};

main()

{structs*p=data;

printf("%d\n",++(p->x));

}

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

A.10B.11C.20D.21

66.在关系数据库中,用来表示实体之间联系的是()。

A.二维表B.E—R图C.元组D.文件

67.

68.下列数据结构中,属于非线性结构的是A.循环队列B.带链队列C.二叉树D.带链栈

69.

70.下列关于指针变量赋空值的说法错误的是

A.当赋空值的时候,变量指向地址为0的存储单元B.赋值语句可以表达为变量名=’\0’;

C.赋值语句可以表达为变量名=0;D.一个指针变量可以被赋空值

71.下列对于软件测试的描述正确的是()。

A.软件测试的主要目的是发现程序中的错误

B.软件测试的目的是证明程序是否正确

C.软件测试的目的是使程序运行结果正确

D.软件测试是证明软件中没有错误

72.设变量已正确定义并赋值,以下正确的表达式是()。

A.X=Y+z+5,++YB.int(15.8%5)C.X=Y*5=X+ZD.X=25%5.0

73.有定义如下:

structsk

{inta;

floatb;

}data,*p;

如果p=&data;则对于结构变量data的成员a的正确引用时()

A)(*).data.aB)(*p).a

C)p->data.aD)p.data.a

74.以下叙述中错误的是()。

A)C语言是高级语言

B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C)C语言产生的目标程序后缀名为OBJ

D)C语言中的函数不可以单独进行编译

75.软件生命周期可分为定义阶段、开发阶段和维护阶段。详细设计属于()。

A.定义阶段B.开发阶段C.维护阶段D.上述三个阶段

76.在单链表中,增加头结点的目的是()。A.A.方便运算的实现B.使单链表至少有一个结点

C.标识表结点中首结点的位置

D.说明单链表是线性的链式存储实现

77.

78.

79.有以下程序:

若从键盘输入:ijkxyz<回车>,则输出结果是()。

A.ijkk

B.ijkxyz

C.xyzxyz

D.jj

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

A.一个逻辑数据结构只能有一种存储结构

B.逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存诸结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存诸结构影响数据处理的效率

五、程序改错题(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.请编写函数proc(),其功能是:将所有大于1小于整数m的非素数存入XX所指数组中,非素数的个数通过k传回。例如,输入20,则应输出4689101214151618。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C

2.D解析:一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,因此,数据的逻辑结构与存储结构不一定是一一对应的。选项A中的说法是错误的。虽然计算机的存储空间是向量式的存储结构,但由于一种数据的逻辑结构根据需要可以表示成多种存储结构,例如,线性链表是线性表的链式存储结构。一般来说,性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的。因此,数据的存储结构不一定是线性结构。选项B中的说法也是错误的。虽然程序设计语言中的数组一般是顺序存储结构,但是,利用数组也能处理非线性结构。例如,满二叉树与完全二叉树是非线性结构,但对于满二叉树与完全二叉树来说,根据完全二叉树的性质6,可以按层序进行顺序存储,即利用程序设计语言中的数组来存储,这样,不仅节省了存储空间,又能方便地确定每一个结点的父结点与左右子结点的位置。对于一般的二叉树来说,也可以将二叉树中每一个结点的左指针、右指针以及数据域分别用三个数组中的对应元素来存储,即实际上也是利用了程序设计语言中的数组来处理二叉树这样的非线性结构。选项C中的说法也是错误的。综上所述,选项A、B与C中的说法都是错误的。

3.B解析:字符串连接函数strcat的调用形式如下:strcat(s1,s2)。此函数用来把s2所指字符串的内容连接到s1所指的字符串后面,并自动覆盖s1串末尾的尾标,函数返回s1的地址值。

4.B

5.C

6.D整型变量ch使用八进制数020初始化,二进制数为10000,右移一位结果为1000,使用%d输出十进制数为8。本题答案为D选项。

7.B本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j~0到3,j=4时不符合,所以退出j循环;然后i减1,J仍然要从0~3,j=4时退出J循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。

8.A本题考查两个概念:①用单引号括起来的一个字符常量只能存放一个字符;②℃语言中没有字符串变量,只能用字符数组来存储字符串。

9.D

10.A本题考查带参数的宏定义。第一次函数调用求S的值,x=a+1,所以X*X*X应写成a+1*a+1*a+1,没有括号优先级,结果为l0,第二次函数调用x*X*X可写成(a+1)*(a+1)*(a+1),所以结果为43=64。

11.C

12.A

13.C解析:要计算一个复杂的表达式时,首先要弄明白表达式中所有运算符的优先级与结合性,本题中所涉及的运算符中,->的优先级最高,*和++的优先级相同,但其结合性为从右至左。所以选项A等价于*pt->y)也就是pt所指向的结构体的成员指针变量y所指向的内容。从前面的程序段不难看出,pt指向结构体数组c的首地址,也就是指向它的第1个元素,在它的第1个元素中,指针变量y又被初始化为指向控型数组a的首地址,即指向数组a的第1个元素。故选项A中的表达式的值为a[0],也就是1。选项B中表达式的值就是c[0].x,即10。根据优先级和结合性,选项C中的表达式等价于++(pt->x),由于是前缀++,所以整个表达式的值为pt->x的值加1,故为11。而选项D中,++是后缀形式,所以(pt++)的值还是pt的原值,即等于pt->x的值10。故应该选择C。

14.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。

15.C

16.BC语言中,char型变量的值是其对应字符的ASCII值,可以做比较运算。由于小写字母的ASCII值按字母表的顺序连续递增,因此判断char型变量c是不是小写字母时,判断c的ASCII值是否在’a’和’z’之间,即(c>=’a’)&&(c<=’z’)。本题答案为B选项。

17.B解析:f函数的功能是返回地址为x,y的两个数中值铰的数的地址,本题输出结果是7,8,7。

18.C解析:当p指向s数组的首地址时,表示数组元素s[i]的表达式应当有:①s[i],②,(s+i),③*(p+i),④p[i]四种形式。选项C)错误的原因是,数组的地址是不可变的,指针的地址是可以变的。

19.C

20.B

21.*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]*t或t[0]\r\n*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]解析:函数sstrcmp()有两个字符型指针变量,用来指向两个字符串。比较两个字符串的大小方法是:从第一个字符开始依次向后比较,若对应的字符相等则接着比较下一个字符,一直到两个字符串中对应字符不等,或者有一个为\\0,此时字符的ASCII码大的字符串就大。故循环条件是*s和*t不为\\0,且*s和*t相同,第一处应填“*t”或其他等价形式。根据题意可知第二处应填*s-*t或其等价形式。

22.软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的可靠性,而调试的目的是发现错误的位置,并改正错误。\r\n\r\n

23.S[j++]=s[i]S[j++]=s[i]解析:循环开始后如果数组s中储存值与字符c相同,则i++直接跳过当前值;如果不相同,则将当前值赋予数组指定位置,并通过j++将下标加1,指向下一元素要存储的位置。

24.8888解析:C语言规定,以0开头的整型常量为八进制。另外,在primf()函数中,%X表示以十六进制无符号形式输出一个整数,且十六进制中的ABCDEF为大写字母。本题的输出应该是八进制210的十六进制形式。将八进制转换为十六进制,可以先将其转换为二进制。因为1位八进制表示3位二进制,4位二进制表示1位十六进制。(210)8=(10001000)2=(88)16,故本题输出为880

25.文档文档解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。

26.一对多一对多解析:实体集“项目主管”与实体集“项目”的联系属于一对多的联系。

27.99解析:本题的字符串中共有9个字符,它们分别是\'I\'、\'B\'、\'M\'、\'\\n\'、\'0\'、\'1\'、\'2\'、\'\\1\'、\'\\\\\',其中,'\\n'表示换行,'\\\\'表示反斜杠字符'\\',所以本题的最后输出结果为9。

28.t>=le-5;t=t/n;

29.数据结构数据结构解析:Jackson方法是—‘种面向数据结构的结构化方法。

30.x[i][i]x[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1]或x[i-1][j]+x[i-1][j-1]解析:本题考核的知识点是函数与算法结合在一起的应用。在程序中用两重循环。在第一层循环中将每行的第0列赋值为1,对角线上的元素赋值为1显然在第一个空中应该填入对角线上的元素即x[i][i]在第2重循环中给每行其他元素赋值,而在每行中除了第0列和对角线的元素外其他元素为其对应的上一行中同列和同列的前一列的元素相加,所以在第二个空中应该填入x[i-1][j-1]+x[i-1][j]。

31.继承继承解析:在面向对象的程序设计方法中,某些属性和方法是可以共享的,由于类从父类中继承而来,这样提高了软件的可重用性。

32.100010100010解析:首先将程序中的宏替换掉,两处的宏替换后分别为i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后输出的i1和i2的值分别为1000和10。

33.

34.前件前件

35.GDBHIEFCAGDBHIEFCA解析:后序遍历二叉树的顺序为:后序遍历左子树→后序遍历右子树→访问根结点。按照定义,后序遍历序列是GDBHIEFCA。

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

37.120120解析:静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:

①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。

②对静态局部变量是在编译时赋初值的,即只赋初值—次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。

③如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。(注意:C语言中的非静态变量在定义时,系统并不会自动给它赋初值)

④虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。

本题中函数的功能是:与for语句一起求一个整数的阶乘。

38.33解析:分析程序运行过程,第1次循环:s=s+i*i=0+1*1=1,i=2;第2次循环:s=s+i*i=1+2*2=5,i=3;第3次循环:s=s+i*i=5+3*3=14,i=4;循环条件不成立输出i,--i使i的值减1,输出结果为3。

39.12341234解析:在%与格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插入的宽度小于实际的宽度时,则实际的宽度输出。

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

41.D解析:C语句不能嵌套定义函数,但可以嵌套调用函数。

42.D解析:本题的while循环条件为1恒为真,所以是一个无限循环。应该选择答案D。

43.B解析:本题中的答案A与D都缺少“;”,而答案C中,表达式是不能独立成为语句的,答案B使用了C语言的自减运算符它就相当于D=D-1,所以答案B为一赋值语句。

44.B

45.D解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。

46.C解析:影响模块之间耦合的主要因素有两个:模块之间的连接形式,模块接口的复杂性。一般来说,接口复杂的模块,其耦合程度要比接口简单的的模块强,所以选项A的说法错误;耦合程度弱的模块,其内聚程度一定高,选项B错误;选项C正确。

47.C解析:本题考查了考生对数据库基础知识的记忆。数据库技术的主要目的是有效地管理和存取数据资源,包括提供数据的共享性,使多个用户能够同时访问数据库中的数据;减少数据的冗余度,以提交数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。数据库的人工管理阶段和文件系统阶段,数据都不能实现共享,出现数据冗余现象。选项D)的说法是错误的。

48.D解析:一维数组的定义方式为:

类型说明符数组名[常量表达式];

选项A符合此定义形式,正确;C语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项C正确;另外,如果对全部数组元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省,所以选项B正确,而选项D是错误的。

49.A解析:按位异或“^”运算,是当对应位上的二进制数值相同时结果为0,否则为1。因为c1,c2的值相同,所以异或的结果为0,选项A)正确。按位与“&”运算符只有当所有对应位上的数都不相同时结果才为0,所以c1&c2的值不可能为0,选项B)错误。“~”是按位取反,由于十进制数92转化成二进制数并不是全为1,所以即使取反也不能得到全为。的答案,所以错误。“|”是按位或运算,由于十进制数92转化为二进制数也不是全为0,所以按位或运算后也不会全为0。

50.B解析:本题考查库函数调用的知识点。格式1:#include<文件名>,预处理程序在标准目录下查找指定的文件;格式2:#include'文件名',预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。

51.B解析:二维数组的初始化有以下几种形式:①分行进行初始化;②不分行进行初始化;③部分数组元素进行初始化;④省略第一维的定义,不省略第二维的定义。选顷B)等号右边分了3行,大于等号左边数组的行数2。

52.C解析:本题考核的知识点是C语言中对变量赋值的应用。赋值操作由赋值运算符“=”来完成,一般形式为变量:表达式,赋值的方向为由右向左,即将“;”右侧表达式的值赋给“=”左侧的变量,执行步骤是先计算再赋值。选项A中运算符“%”的运算对象必须为整数,而选项A中26.8不为整数,故选项A不正确;选项B将一个变量赋值给一个表达式,这在C语言中是不允许的,故选项B不正确;选项D中也是将一个常量3赋值给一个表达式,故选项D不正确;所以,4个选项中选项C符合题意。

53.D解析:此题考查文件打开方式对文件操作的影响。由于打开文件进行修改,可见选项A)是错误的,因为此种方式打开时,只能读,不能写,当然无法修改;选项B)是以追加方式'ab+'打开文件读写,以这种方式打开时,新写入的数据只能追加在文件原有内容之后,但可以对以前的数据读出。换言之,'ab+'或'a+'方式打文件后,对于写操作,文件指针只能定位在文件的原有内容之后,但对于读操作,文件指针可以定位在全文件范围内,可见,按此种方式打开文件不能实现文件内容的修改;选项C)以'w+'方式打开文件,此时,原文件中已存在的内容都被清除,但新写入文件的数据可以被再次读出或再次写入,故也不能实现对文件的修改。只有以'r+'方式打开文件时,才允许将文件原来数据读出,也允许在某些位置上再写入,从而实现对文件的修改。

54.C解析:在C语言中,数组下标是从0开始的,因此,上面的程序a[1]的值为b,a[2]的下标超出数组范围,a[2]无值。

55.B解析:本题考核的知识点是无符号整型数据的简单运用。程序中定义了一个无符号整型变量a和一个整型变量b,并且给它赋初值为-1,整型在计算机中都以二进制表示的,-1在二进制表示为1000000000000001,所以当表示为无符号整数时转换为十进制为32767,故最后输出的无符号型a的值为32767。所以,4个选项中选项B符合题意

56.B解析:C语言规定,可以在定义变量的同时给变量赋初值,称为变量初始化。在选项A)中在给n1和n2进行赋初值,但变量02没有定义;在选项C)中定义变量f时,不能在赋值表达式的右边出现变量f自身,所以选项C)错误:在选项D)用指数表达式的常量中,字母E后面的数应该为整数,而不应该为小数形式。因此,选项B)正确。

57.B解析:(1)二维数组的定义

二维数组的定义方式为:类型说明符数组名[常量表达式][常量表达式]。

二维数组在内存中是按行优先的顺序存放的,即先存放第一行的元素,再存放第二行的元素,依次类推。

(2)二维数组元素的引用

二维数组元素的表示形式为:数组名[下标][下标],下标可以是整型常量或整型表达式其范围为:0~(常量表达式-1)。

(3)二维数组的初始化

可以用以下方法对二维数组元素初始化:

①分行给二维数组赋初值

例如:inta[2][2]={{1,2},{3,4}};

这种赋值方式比较直观,把第1个大括号内的数据赋给第1行的元素,第2个大括号内的数据赋给第2行的元素,即按行赋值。

②可以将所有数据写在一个大括号内,按数组排列的顺序对各个元素赋初值。

③可以对部分元素赋初值,没有初始化的元素值为0。

④如果对全部数组元素赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。

58.D解析:第一个while循环是字符串a的长度,第二个while是将字符串b接在a的后面,num在a串长度上继续累计,为两个字符串长度之和。

59.C解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算的工具以及程序员的水平无关。选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误,因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。选项D错误,因为根据一个算法所编制出的程序之中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。所以,本题正确答案为C。

60.D解析:本题考查了二维数组元素引用的方法。题中用动态存储分配函数malloc分配了一个int型数据长度大小的内存,然后指针p指向了这段内存,函数f()中对p所指向的数据进行了赋值,p[1][1]为二维数组第二行第二列的元素,对应于实参a的元素5,所以输出结果为5。

61.C

62.D本题考查指针变量的赋值。**PP是定义一个指针变量,语句pp=&p是将pp指向指针P,*P和**PP都

温馨提示

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

评论

0/150

提交评论