2022年广东省江门市全国计算机等级考试C语言程序设计测试卷(含答案)_第1页
2022年广东省江门市全国计算机等级考试C语言程序设计测试卷(含答案)_第2页
2022年广东省江门市全国计算机等级考试C语言程序设计测试卷(含答案)_第3页
2022年广东省江门市全国计算机等级考试C语言程序设计测试卷(含答案)_第4页
2022年广东省江门市全国计算机等级考试C语言程序设计测试卷(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2022年广东省江门市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若要说明一个类型名STP,使得定义语句STPs;等价于Char*s;,以下选项中正确的是()。

A.typedefChar*s;

B.typedefChar*STP;

C.typedefSTP*Char;

D.typedef*CharSTP;

2.数据库设计包括两个方面的设计内容,它们是()

A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计

3.下列叙述中正确的是A.为了建立一个关系,首先要构造数据的逻辑关系

B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项

C.一个关系的属性名表称为关系模式

D.一个关系可以包括多个二维表

4.有以下程序

#include<stdio.h>

main()

{charb,c;inti;

b=‘a’;c=‘A’;

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

{if(i%2)putchar(i+b);

elseputehar(i+c);

}printf(“\n”);

}

程序运行后的输出结果是A.ABCDEFB.AbCdEfC.aBeDeFD.abcdef

5.

6.有以下程序:#includeintfun(intx,inty){if(x!=y)return(x+y)/2);elsereturn(x);}Main(){Inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c));}A.6B.3C.8D.12

7.有以下程序执行后的输出结果是()。A.3,2,0B.3,2,-1C.4,3,-1D.5,-2,-5

8.

9.以下关于链式存储结构说法错误的是()

A.比顺序存储结构的存储密度小

B.每个节点是由数据域和指针域组成

C.查找结点时链式存储比顺序存储快

D.逻辑上不相邻的节点物理上可能相邻

10.下面程序的输出结果是

#include<stdio.h>

main()

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

p=a;

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

A.0B.1C.10D.9

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

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

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

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

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

12.下列描述中正确的是()。

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发过程中的技术问题

13.有以下程序:

程序运行时,输入的值在哪个范围才会有输出结果()。

A.不等于10的整数

B.大于3且不等于l0的整数

C.大于3或等于l0的整数

D.小于3的整数

14.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}输出结果是()。A.28B.27C.42D.4l

15.以下选项中,算术表达式的值与其他3个不同的是()。

A.3/5.B.3./5C.3/5D.3.0/5.0

16.以下对结构体类型变量的定义中,不正确的是()。

A.typedefstruetaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

C.struct{intn;floatm;}aa;structaatdl;

D.struct{intn;floatm;}tdl;

17.对n个数进行排序,哪种算法,其时间复杂度在最坏和最好都是O(nlogn)()

A.快速排序B.希尔排序C.堆排序D.选择排序

18.信息隐蔽的概念与下述哪一种概念直接相关?

A.软件结构定义B.模块独立性C.模块类型的划分D.模块耦合度

19.

20.

二、2.填空题(20题)21.数据结构分为逻辑结构与存储结构,线性链表属于【】。

22.最简单的交换排序方法是______。

23.算法复杂度主要包括时间复杂度和【】复杂度。

24.软件工程研究的内容主要包括:软件开发技术和【】。

25.对下列二叉树进行中序遍历的结果为【】。

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

structNODE

{intk;

structNODE*link;

};

main()

structNODEm[5],*p=m,*q=m+4;

inti=0;

while(p!=q)

{p->k-++i;p++;

q->k-i++;q--;

}

q->k=i;

for(i-0;i<5;i++)

printf("%d",m[i].k);

printf("\n");

27.用树形结构表示实体之间联系的模型是()。

28.数据的独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,这称为______。

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

charstr口="ABCD",*p=str;

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

30.注释一般分为序言性注释和______注释。

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

#include<stdio.h>

msin()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

32.栈中允许进行插入和删除的一端叫做______。

33.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。

34.下列程序段中循环体的执行次数是______。

a=15;

b=0;

do{b+=2;a-=2+b;}while(a>=0);

35.若定义#definePI3.14159,则执行完下列程序后输出结果是______。

#definePI3.14159;printf("PI=%P",PI);

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

#include<stdio,h>

main()

{inta,b,c;

a=10;b:20;c=(a%b<1)‖(a/b>1);

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

}

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

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

}

38.若a=10,b=20,则表达式!(a<b)的值是【】。

39.x、y、x均为int型变量,描述“x、y和z中至少有两个为正数”的表达式是______。

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

三、1.选择题(20题)41.字符(char)型数据在微机内存中的存储形式是______。

A.反码B.补码C.EBCDIC码D.ASCⅡ码

42.有以下程序fun(intx){intp;if(x==0‖x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%d\n",fun(7));}执行后的输出结果是

A.7B.3C.2D.0

43.有如下程序main(){intx=3;do{prinff("%d",x--);}while(!x);}该程序的执行结果是_____。

A.321B.3C.不输出任何内容D.陷入死循环

44.请读程序:#include<stdio.h>#include<string.h>voidfun(char*w,intm){chars,*p1,*p2;p1=w;p2=w+m-1;while(p1<p2){s=*p1++;*pl=*p2--;*p2=s;}}main(){chara[]="ABCDEFG";fun(a,strlen(a));puts(a);}上面程序的输出结果是()

A.GEFDCBAB.AGADAGAC.AGAAGAGD.GAGGAGA

45.下列程序的输出结果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3‖k++==3))printf("%d%d%d\n",i,j,k);}

A.123B.234C.223D.233

46.设有如下关系表:

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

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

47.下面的程序执行后,文件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

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

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

49.若有以下程序

#include<stdio.h>

inta[]={2,4,6,8};

main()

{inti;

int*p=a;

for(i=0;i<4;i++)a[i]=*p;

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

上面程序的输出结果是

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

50.以下对C语言函数的有关描述中,正确的是

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

B.C函数既可以嵌套定义又可以递归调用

C.函数必须有返回值,否则不能使用函数

D.函数必须有返回值,返回值类型不定

51.下列程序的输出结果是#include"stdio.h"#defineN3#defineM3voidfun(inta[M][N]){printf("%d\n",*(a[1]+2));}main(){inta[M][N];inti,j;for(i=0;i<M;i++)for(j=0;j<N;j++)a[i][j]=i+j-(i-j);fun(a);}

A.3B.4C.5D.6

52.下列程序段的输出结果是______。staticinta[3]={1,2,3};int**ptr,*p;p=a;ptr=&p;(ptr[0]++)[1]+=3;printf("%d,%d,%d\n",**ptr,*p,a[0]);

A.5,5,10B.1,5,5C.5,5,1D.输出结果不确定

53.数据库的故障恢复一般是由()

A.数据流图完成的B.数据字典完成的C.DBA完成的D.PAD图完成的

54.有以下程序voidfun(char*c,intd){*c=*c+1;d=d+1;printf(“%c,%c”,*c,d);}main(){chara='A',b='a';fun(&b,a);printf(“%c,%c\n”,a,b);}程序运行后的输出结果是

A.B,a,B,aB.a,B,a,BC.A,b,A,bD.b,B,A,b

55.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是()。

A.for(i=1,p=1;i<=5;i++)p*=i;

B.for(i=1;i<=5;i++){p=1;p*=i;}

C.i=1;p=1;while(i<=5){p*=i;i++;}

D.i=1;p=1;do{p*=i;i++;}while(i<=5);

56.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做

A.软件投机B.软件危机C.软件工程D.软件产生

57.以下程序有错,错误原因是main(){int*p,i;char*q,ch;p=&i;q=&ch;*p=40;*p=*q;……}

A.p和q的类型不一致,不能执行*p=*q;语句

B.*p中存放的是地址值,因此不能执行*p=40;语句

C.q没有指向具体的存储单元,所以*q没有实际意义

D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果

58.if语句的基本形式为:if(表达式)语句,其中“表达式”()。

A.可以是任意合法的表达式B.必须是逻辑表达式C.必须是逻辑表达式或关系表达式D.必须是关系表达式

59.线性表的顺序存储结构和线性表的链式存储结构分别是______。

A.顺序存取的存储结构、顺序存取的存储结构

B.随机存取的存储结构、顺序存取的存储结构

C.随机存取的存储结构、随机存取的存储结构

D.任意存取的存储结构、任意存取的存储结构

60.若有说明语句:charc='\72'则变量c()。

A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法,c的值不确定

四、选择题(20题)61.下列排序方法中,最坏情况下比较次数最少的是()。

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

62.

63.有以下程序

#include<string.h>

main()

{FILE*fp;

inti,k,n;

fp=fopen("data.dat","w+");

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

{fprintf(fp,"%d",i);

if(i%3==0)fprintf(fp,"\n");

}

rewind(fp);

fscanf(fp,"%d%d",&k,&n);

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

fclose(fp);

}

程序的运行结果是

A.00B.45

C.4578D.45678

64.下面不属于软件设计阶段任务的是()。

A.制订软件确认测试计划B.数据库设计C.软件总体设计D.算法设计

65.

66.

67.下列关于二叉树的叙述中,正确的是()。

A.叶子结点总是比度为2的结点少一个

B.叶子结点总是比度为2的结点多一个

C.叶子结点数是度为2的结点数的两倍

D.度为2的结点数是度为1的结点数的两倍

68.有以下程序段:

以下选项中表达式的值为11的是()。

A.

B.

C.

D.

69.以下选项中可用做c程序合法实数的是()。、、

A.3.0e0.2B..1e0C.E9D.9.12E

70.

71.(55)在设计程序时,应采纳的原则之一是()

A.程序结构应有助于读者理解

B.不限制goto语句的使用

C.减少或取消注解行

D.程序越短越好

72.(21)算法的空间复杂度是指______。

A.算法程序的长度

B.算法程序中的指令条数

C.算法程序所占的存储空间

D.算法执行过程中所需要的存储空间

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

A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B.数组名代表的是数组所占存储区的首地址,其值不可改变

C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D.可以通过赋初值的方式确定数组元素的个数

74.如图所示,两个关系R1和R2:

则由关系R1和R2得到关系R3的操作是()。

A.笛卡尔积B.连接C.交D.除

75.

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

#include<stdio.h>

voidmain

{intb[6]={2,4,6,8,10,12);

int*p=b,**q=&p;

printf("%d,",*(p++));

printf("%d,",**q);

}

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

76.有以下程序:#include<stdio.h>main(){inta[5]={1,2,3,4,5),b[5]={0,2,1,3,o},i,s=0;for(i=o;i<5;i++)s=s+a[b[i]];printf(”%d\n”,s);}程序运行后的输出结果是()。A.6B.10C.11D.15

77.以下程序的输出结果是______。#definef(x)x*xmain(){inta=6,b=2,c;c=f(a)/f(b);printf("%d\n",c);}

A.9B.6C.36D.18

78.以下定义语句中正确的是()。

A.

B.

C.

D.

79.

80.右两个关系R和S如下:

则由关系R得到关系S的操作是()。A.自然连接B.并C.选择D.投影

五、程序改错题(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.编写函数voidproc(intx,intpp[],int*n),它的功能是求出能整除x且不是奇数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参返回。

例如,若x中的值为30,则有4个数符合要求,它们是261030。

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

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

试题程序:

参考答案

1.B用关键字typedef声明一种新的类型的形式为typedef类型名标识符。本题中的类型为char*。

2.A解析:模式设计和内模式设计是概念设计的两种方法。物理设计是根据特定的计算机系统,对数据的存储结构和存取方法进行设计,从而实现从逻辑结构到物理结构的转换。从系统开发的角度来看,结构特性设计和行为特性-设计是数据库应用系统所具有的两个特性。结构特性的设计,设计各级数据库模式(静态特性):行为特性的设计,改变实体及其特性,决定数据库系统的功能(动态特性)。

3.C解析:在格式化模型中,要事先根据应用的需要,确定数据之间的逻辑关系,即先对数据进行结构化。在关系模型中,不需要事先构造数据的逻辑关系,只要将数据按照一定的关系存入计算机,也就是建立关系。所以选项A错误。对于一个表示关系的二维表,其最基本的要求是表中元组的每一个分量必须是不可分的数据项,即不允许表中再有表。所以,选项B、D说法是错误的。一个关系的属性名表称为关系模式,也就是二维表的表框架,相当于记录型。因此,选项C说法正确。

4.B解析:变量b和c中分别存放字符a和A的ASCII码,当i的值对2求余非零时输出ASCII码为i+b)的字符;当i的值对2求余为零时输出ASCII码为i+c的字符。分析程序可知本题选B。

5.A

6.A本题中第一次调用为fun(8,fun(5,6)),因为fun(5,6)返回值为5,所以第二次调用为fun(8,5)=6。所以选择A)。

7.B

8.C

9.C

10.C解析:此题考查了指针引用一维数组元素的方法。*p+9因为运算符'*'的优先级高于'+',所以输出结果为p指向的元素1,然后加9,值为10。

11.B解析:如果一个非空的数据结构满足以下两个条件:(l)有且只有一个根结点;(2)每个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。如果一个数据结构不是线性结构,则称之为非线性结构,故A项错误。有一个根结点的数据结构不一定是线性结构,如二叉树,B项说法正确。循环链表和双向链表都属于线性链表。故C、D项错误。

12.CC。【解析】软件工程是指将工程化的思想应用于软件的开发、应用和维护的过程,包括软件开发技术和软件工程管理。

13.Bif-else控制结构中,else总是与最近的未配对的if匹配。本题的执行过程为:如果输入整数小于3则不进行任何操作,否则判断该整数是否不等于l0,若为真则进行输出。因此程序输出的数据为大于3且不等于l0的整数。

14.C只有当3个if条件同时成立,即能够同时被2、3、7整除时,才输出i的值,而从0到50能够同时被2、3、7整除的数只有42,故选择C选项。

15.CC语言中除法运算有两个运算数,两个整数的除法运算会舍去小数部分,结果为整数;由于C语言中浮点数的小数形式必须要有小数点,所以选项A(5.)、B(3.)、D(3.0和5.0)都是浮点数。选项A、B运算时自动将另一个整数转换成浮点数,然后再运算,选项D中两个都是浮点数,浮点数的除法运算结果还是浮点数。所以本题中选项A、B、D运算结果是浮点数,选项C运算结果是整数。故本题答案为C选项。

16.C解析:定义结构体类型的变量有如下几种方法:

①定义结构体类型的同时,定义结构体类型的变量,如:

stractaa

{…}tdl;

选项B)中将宏名AA用宏体structaa替换后,与该定义形式一样,因此是正确的。在这一定义形式中,结构体类型名aa是可以省略的,因此,D)项也是正确的。

②先定义结构体类型,然后再定义结构体类型的变量,形式如下:

structaa

{…};

strnctaatdl;

这种定义形式也可演变为:先用类型定义语句typedef将该结构体类型定义成一个类型名AA,然后直接用该类型名AA定义一个结构体变量(这时不再需要使用关键字struct)。因此选项A)正确。

17.C

18.B解析:采用信息隐蔽的目的就是为了确保每个模块的独立性。

19.A

20.A

21.存储结构

22.冒泡排序冒泡排序解析:交换排序是指借助数据元素之间的互相交换进行排序的一种方法。冒泡排序是一种最简单的交换排序方法,它是通过相邻元素之间的相互交换逐步将线性表变成有序。

23.空间空间解析:程序在计算机上运行时所耗费的时间由程序运行时所需输入的数据总量、对源程序进行编译所需时间、计算机执行每条指令所需时间、程序中的指令重复执行的次数等决定。习惯上常常把语句重复执行的次数作为算法运行时间的相对量度,称作算法的时间复杂度。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。

24.软件工程管理软件工程管理解析:软件工程足指,采用工程的概念、原理、技术和方法指导软件的开发与维护:软件工程学的主要研究对象包括软件开发与维护的技术、方法、工具和管理等方面。即软件工程研究的内容主要包括:软件开发技术和软件工程管理。

25.ACBDFEHGPACBDFEHGP解析:中序遍历方法的递归定义;当二叉树的根不为空时,依次执行如下3个操作:①按中序遍历左子树。②访问根结点。③技中序遍历右子树。根据遍历规则来遍历本题中的二叉树。首先遍历F的左子树,同样按中序遍历。先遍历C的左子树,即结点A,然后访问C,接着访问C的右子树,同样按中序遍历C的右子树,先访问结点B,然后访问结点D,因为结点D没有右子树,因此遍历完C的右子树,以上就遍历完根结点F的左子树。然后访问根结点F,接下来遍历F的右子树,同样按中序遍历。首先访问E的左子树,E的左子树为空,则访问结点E,然后访问结点E的右子树,同样按中序遍历。首先访问G的左子树,即H,然后访问结点G,最后访问G的右子树P。以上就把整个二叉树遍历一遍,中序遍历的结果为ACBDFEHGP。因此,划线处应填入“ACBDFEHGP”。

26.1343113431解析:本题看似考查链表的知识,其实只是考查了结构体数组。程序首先定义了一个结构体NODE,在主函数中声明了一个该结构体的数组m[5]和两个结构体指针p和q,并分别初始化p指向m(指向数组的第一个元素);q指向m+4(指向数组的最后一个元素)。接下来定义并初始化一个整型变量i为0。然后用一个while循环。在p和q不相等的时候执行循环体:让p所指结构体的成员k等于++i的值,然后让p指向下一个结构体;让q所指结构体的成员k等于i++的值,然后让q指向前一个结构体。i从0开始交替调用++i和i++,两个表达式的值依次分别为1和1、3和3……。所以当p叫循环结束时,实际循环了两次,p和q都指向m数组的中间位置m[2],i自增了4次,所以q->k=i;就是让m[2]k=4。所以程序最后输出为:13431。

27.层次模型层次模型解析:层次模型是最早发展起来的数据库模型。层次模型的基本结构是树形结构。

28.物理独立性物理独立性解析:数据的独立性是指数据和应用程序相互独立,分为物理独立性和逻辑独立性。其中物理独立性是指数据的物理结构(包括存储结构、存取方式)改变时,不需要修改应用程序。而逻辑独立性是指当逻辑结构改变时,不需要修改应用程序。

29.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d,格式输出的,即输出其相应ASCII码值68。

30.功能性功能性解析:注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,给出程序的整体说明;功能性注释一般嵌在源程序体之中,主要描述其后的语句或程序做什么,

31.1371513715解析:程序中n是一个有5个元素,且元素值全为0的数组。在for循环中,当i=1时,n[1]=n[0]*2+1,此时n[1]=1;i=2时,n[2]=n[1]*2+1,此时n[2]=3;i=3时,n[3]=n[2]*2+1,此时n[3]=7;i=4时,n[4]=n[3]*2+1,此时n[4]=15,循环结束。输出函数中%d后有空格,因此输出结果为13715。

32.栈顶栈顶解析:栈是限定在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端叫做“栈顶”,不允许插入和删除的一端叫做“栈底”。

33.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。

34.33解析:本题考查do…while语句形式:

do循环体

while表达式

首先执行循环体语句,然后检测循环控制条件表达式的值,若为真,则重复执行循环体语句,否则退出循环。第1次循环:b+=2,b=2,a-=2+b,a=11;第2次循环:b=4,a=5;第3次循环:b=6,a=-3,此时再判断循环条件不满足,退出循环。

35.PI=3.14159PI=3.14159解析:本题先定义了一个宏名PI,以后在程序中出现PI都用3.14159替代,但是C语言规定:双引号中的宏名是不进行替换的。

36.1020010200解析:程序中(a%b<1)||(a/b>1)的运算顺序为先算括号→算术运算符→关系运算符→逻辑运算符。首先计算a%b=10,a/b=0,因为a%b<1为假(0),a/b>1也为假(0),所以整个表达式的结果为假(0),最后输出a,b,c的值为10200。

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

38.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。

39.((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))解析:题目要求“x、y和z中至少有两个为正数”,即x、y和x这3个数中必须有两个是正数,且这3个数中的哪两个数都有可能是正数,所以它们之间是或的关系。

40.一对多或1:N一对多或1:N解析:两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有三种,即一对一(1:1)的联系、一对多(1:N)或多对一(N:1)的联系和多对多(N:N)的联系。

41.D解析:将—个字符常量放到—个字符变量中,实际上并不是把该字符本身放到内存单元中去,而是将该字符的ASCII码值放到存储单元中。

42.C解析:因为fun(intx)是一个递归函数,所以主函数中fun(7)经过三次递归调用,其过程可以描述为'fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1)))=7-(5-(3-3))=7-5=2”,所以最后的输出结果为2。

43.B解析:本题x赋初值为3,当执行printf('%d',x-);时,由于x-的作用是先运算x,再将x的值减1,所以,printf输出的x值为3,等输出后,x的值减1变为2,继续执行,判断条件!x为假,循环只被执行一次。

44.C

45.D解析:本题考查自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“‖”。自增运算符“++”,出现在变量之前(如题中的中++n),表示先使变量的值加1,再使用变量的值进行运算:出现在变量之后(如题中的n++),表示先使用变量的值进行运算,再使变量的值加1。当逻辑与运算符“&&”两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“‖”左边的运算对象为真时,其值就为真,不用计算其右边的运算对象的值.所以根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为1;由于1与任何数都为进行或(‖)运算,结果都为1,因此k=3;最后计算“&&”之前的表达式,i++是先运算后自加,因此运算时i为1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。

46.B解析:T是R∪S的结果,关系T由属于关系R的或者属于关系S的元组组成。

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

48.B解析:选项B的第1维长度为2,而初始化列表外花括号中包含了3个内花括号,所以该选项的定义错误,故应该选择B。

49.D解析:在C语言中,数组元素下标是从0开始的;指针变量p指向数组的首地址。for循环语句中,指针变量p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为2。

50.A解析:C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函数不能嵌套定义。函数可以没有返回值,若有返回值,则返回值类型必须确定。

51.B解析:若有以下定义:inta[3][4],i,j;且当0<=i<3,0<=j<4,则可以有以下几种方式来引用数组中的第i行,第j列的元素:

a[a][j],*(a[i]+j),*(*(a+i)+j),(*(a+i)[j],*(&a[0][0]+4*i+j)”。

52.C解析:ptr指向指针变量p,p指向数组a的首地址,(ptr[0]++)[1]+=3;的意思是将p指向数组元素a[1],并将它的值增3变为5,此时,ptr指向p,p指向a[1]。

53.C解析:数据库管理员DBA(DataBaseAdministrator)对数据库进行统一管理、包括数据库故障恢复,数据更新、维护优化等操作。

54.D解析:用地址作为参数与值作为参数传递之间的不同。在C语言中,数据传递是单向传递的。“值传递”就是实参把对应的值传给相应的形参变量,然后形参和实参不再有任何联系,在被调用函数中,对形参的修改并不影响对应的实参。“地址传递”就是实参把相应的地址传给相应的形参变量,在被调用函数中对形参的修改将修改对应的实参地址对应的值。程序中定义了两个字符型变量'a'和'b',并分别赋初值为'A'和'a',然后调用函数fun(),将b的地址和:值作为实参。在函数fun()中第一个参数是传递地址,故在调用函数fun()中对参数做的修改(即将b值加1)将影响字符型变量的值(变为b),函数fun()第二个参数是传值的,故在调用函数fun()对第二个参数做的修改不影响字符型变量a(即'a'的值仍为'A'),所以在fun()函数中输出的是d为b,B,接着在主函数中,输出a,b,然后退出fun()函数,接着执行后面的语句,输出A,b。所以最后输出为b,B,A,b。

55.B解析:选项B中for循环了5次,而每次循环的时候,都将p的值重新赋值为1后,再乘以当前数字i,所以最后的结果为5,显然不是5!的值,同样的分析可知选项A、选项C和选项D计算的都是5!。所以,4个选项中选项B符合题意。

56.B解析:软件工程概念的出现源自软件危机。所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。总之,可以将软件危机归结为成本、质量、生产率等问题。

57.D解析:该程序的执行过程是:首先声明整型指针变量P和整型变量i,字符型指针变量q和字符型变量ch,将i的地址赋给指针变量p,将ch的地址赋给指针变量q,将40赋给*p,此时,q已经指向了一个具体的存储单元,但ch的值不确定,即*p没有确定的值,所以不能执行*p=*q语句。

58.A解析:本题考查if表达式。if(表达式)中的表达式可以为任何合法的表达式,一般情况下为逻辑、条件表达式,需要注意的是,当等号(==)误写为赋值号(=)时不会报错的,但是其值恒为1。

59.B【命题目的】考查有关线性表存储结构的基本知识。

【解题要点】顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(a1)+(I-1)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。

【考点链接】顺序存储结构和链式存储结构的定义和性质,两种存储结构的操作方法。

60.A解析:C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个“\\”开头的字符。其中,“\\ddd”表示用ASCII码(八进制数)表示一个字符,本题中的charc='\\72'H口表示占一个字符的变量c的ASCII码值。

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

62.B

63.D本题主要考查文件的操作。在程序中,首先定义了一个文件类的指针变量fp,然后定义了三个整型变量,接着以可读/写的形式打开文件data.dat,最后执行for循环:

当i=4时,将变量i的值格式化输出到fp指向的文件中,即为4,然后判断i%3是否为0,如果是,则输出换行符,否则不执行其他操作。

当i=5时,那么输出到文件中的值为5,同样,输出6并输出换行符,接着输出7和8到文件中。循环结束,此时文件中的内容为456<换行>78。

执行

温馨提示

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

评论

0/150

提交评论