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

下载本文档

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

文档简介

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

一、单选题(20题)1.以下说法错误的是A.A.高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式

B.计算机只能处理由0和1的代码构成的二进制指令或数据

C.C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件

D.每一种高级语言都有它对应的编译程序

2.

3.若已定义inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是

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

4.算法分析的目的是()。

A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性

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

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

6.

7.阅读以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("请输人2个数:");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}该程序在编译时产生错误,其出错原因是()。A.定义语句出错,case是关键字,不能用做用户自定义标识符

B.定义语句出错,printF不能用做用户自定义标识符

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句无错,printf不能输出case的值

8.有以下程序

#include<stdio.h>

intf(intx);

main()

{intn=1,m;

m=f(f(f(n)));printf(”%d\n”,m);

}

intf(intx)

{returnx*2;}

程序运行后的输出结果是()。A.1B.2C.4D.8

9.下列程序的运行结果是()。#include<stdio.h>voidfun(int*S,int*p){staticintt=3:*p=s[t];t--;}voidmain{inta[]={2,3,4,5),k;intx;for(k=0,k<4,k++){fun(a,&x);printf("%d,",x);}}A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5

10.若变量已正确定义并赋初值,以下合法的赋值语句是()。

A.k=(m==n);B.k=-m-nC.k=int(m+n);D.k=m*n=1;

11.

12.在所有的排序方法中,关键字比较的次数与记录的初始排列次序无关的是()。

A.希尔排序B.冒泡排序C.直接插入排序D.直接选择排序

13.带头结点的双向循环链表L为空的条件是()。

A.L==NULLB.L->next==NULLC.L->prior==NULLD.L->next==L

14.一个有8个顶点的有向图,所有顶点的入度出度之和与所有顶点的出度之和的差是()

A.16B.4C.0D.2

15.有以下程序:intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%if",&x);x=fun(x);printf("%d\n",x);}执行程序时,给变量X输入10,程序的输出结果是()。A.55B.54C.65D.45

16.以下关于结构化程序设计的叙述中正确的是()。

A.结构化程序使用goto语句会很便捷

B.在c语言中,程序的模块化是利用函数实现的

C.一个结构化程序必须同时由顺序、分支、循环三种结构组成

D.由三种基本结构构成的程序只能解决小规模的问题

17.有以下程序:#include<stdio.b>voidfun(charc){if(c>X)fun(c-1):printf("%C",c);}traia(){fun(z);}程序运行后的输出结果是()A.xyzB.wxyzC.xzyD.zvx

18.具有n个顶点的完全有向图的弧数为()。

A.n(n-1)/2B.n(n-1)C.n2D.n2-1

19.

20.若ch为char型变量,k为int型变量(已知字符a的ASCII码是97),则执行下列语句后输出的结果为()。

cb='b';

k=10;

printf("%X,%o,”,ch,ch,k);

printf("k=%%d\n",k);A.A.因变量类型与格式描述符的类型不匹配,输出无定值

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

C.62,142,k=%d

D.62,142,k=%10

二、2.填空题(20题)21.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

22.在面向对象方法中,类的实例称为______。

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

#include<stdio.h>

main()

{inti;

for(i='a';i<'f';i++,i++)printf("%c",i-'a'+'A');

printf("\n");

}

24.若输入字符串:abcde,则以下while循环体将执行【】次。

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

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

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

26.当数据的物理结构(存储结构)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。

27.把数学表达式改写成C语言的表达式是【】。

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

main()

{intm=011,n=11;

printf("%d%d\n",++m,n++);

}

29.面向对象的模型中,最基本的概念是对象和______。

30.在关系数据库中把数据表示成二维表,每一个二维表称为【】。

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

#include<string.h>

char*ss(char*s)

{char*p;t;

p=s+1;t=*s;

while(*p){*(p-1)=*p;p++;}

*(p-1)=t;

returns;

}

main()

{char*p,str[10]="abcdergh";

p=ss(str);

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

}

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

main()

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

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

printf("%d,%d",x,y);

}

33.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

34.下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。

#include<stdio.h>

#include<ctype.h>

main()

{charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

printf("s=%d",s);

}

35.设当前盘为A盘,当前系统提示符为“>”在不改变当前盘情况下,显示C盘的当前目录路径,应使用命令【】。

36.有以下程序:

#include<stdio.h>

main()

{

charc;

while((c=getchar())!='?')putchar(--c);

}

程序运行时,如查从键盘输入:Y?N?<回车>,则输出的结果为______。

37.若有说明chars1[]="Thatgirl",s2[]="isbeautiful";则使用函数strcmp(s1,s2)后,结果是______。

38.一名学生只能住一间宿舍,一间宿舍可住多名学生,则实体“宿舍”与实体“学生”的联系属于()的联系。

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

charch='B';

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

40.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

三、1.选择题(20题)41.下述关于数据库系统的叙述中正确的是______。

A.数据库系统减少了数据冗余

B.数据库系统避免了—切冗余

C.数据库系统中数据的—致性是指数据类型的—致

D.数据库系统比文件系统能管理更多的数据

42.下列程序语句中,不正确的是______。

A.maia(){floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);……}intadd(floatx,floaty){……}

B.main(){floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);……}floatadd(floatx,floaty){……}

C.floatadd()maia(){floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);……}floatadd(floatx,floaty){……}

D.floatadd(floatx,floaty){……}main(){floata,b,c;scanf("%f,%f",&a,&b);c=add(a,b);……}

43.阅读下列程序段,则程序的输出结果为#include"stdio.h"#defineM(X,Y)(X)*(Y)#defineN(X,Y)(X)/(Y)main(){finta=5,b=6,c=8,k;k=N(M(a,b),c);printf("%d\n",k);}

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

44.以下叙述中正确的是_______。

A.预处理是指完成宏替换和文件包含中指定文件的调用

B.预处理也是C语句

C.C源程序中,凡是行首以#标识的控制行都是预处理指令

D.预处理就是完成C编译程序对C源程序的第一遍扫描,为编译的词法分析和语法分析做准备

45.设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()A.p=1;B.*q=2;C.q=p;D.*p=5;

46.以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}

A.19B.17C.15D.12

47.有以下程序段typedefstructNODE{intnum;structNODE*next;}OLD;以下叙述中正确的是

A.以上的说朗形式非法B.NODE是一个结构体类型C.OLD是一个结构体类型D.OLD是一个结构体变量

48.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是______。main(){unsignedinta=31,b=66;pfintf("%c\n,a|b);}

A.66B.98C.bD.B

49.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

50.下列程序的输出结果是()。#include<stdio.h>intfun(intx){inta;if(x==0‖x==1)return3;elsea=x-fun(x-2);returna;}voidmain(){printf("%d",fun(7));}

A.2B.8C.9D.5

51.若变量已正确定义,有以下程序段:i=0;doprintf("%d,",i);while(i++);printf("%d\n",i);其输出结果是()。

A.0,0B.0,1C.1,1D.程序进入无限循环

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

A.数据所占的存储空间

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

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

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

53.设c1,c2均是char类型变量,则不正确的函数调用为______。

A.printf("%c,%c,",c1,c2)

B.getchar(c1)

C.putchar('\')

D.putchar(c1)

54.函数的值通过return语句返回,下面关于return语句的形式描述错误的是

A.return表达式;

B.return(表达式);

C.一个return语句可以返回多个函数值

D.一个return语句只能返回一个函数值

55.若有以下调用语句,则不正确的fun函数的首部是______。main(){……inta[50],n;fun(n,&a[9]);……}

A.voidfun(intm,intx[])

B.voidfun(kits,kith[41])

C.voidfun(kitp,kit*s)

D.voidfun(intn,inta)

56.若变量a、i已正确定义,且i已正确赋值,合法的语句是()。A.A.a==1B.++iC.a=a++=5D.a=int(i)

57.下面程序的功能是输出以下形式的金字塔图案:****************main(){inti,j;for(i=1;i<=4;i++){ror(j=1;j<=4-i;j++)printf("");for(j=1;j<=______;j++)printf("*");printf("\n");}}在下划线处应填入的是

A.iB.2*i-1C.2*i+1D.i+2

58.下列选项中,不是一个算法的基本特征的是()。

A.完整性B.可行性C.有穷性D.拥有足够的情报

59.若有下列定义(设int类型变量占2个字节):floatx=123.4567;则下列语句:printf("x=%5.2f",x);输出的结果是()。

A.x=123.46B.123.4567C.x=123.4567D.123.46

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

A.属性B.事件C.方法D.类

四、选择题(20题)61.设有以下说明语句:

则下面叙述中正确的是()。

A.PER是结构体变量名

B.PER是结构体类型名

C.typedefstruct是结构体类型

D.struct是结构体类型名

62.定义如下变量和数组:inti;intx[3][3]={1,2,3,4,5,6,7,8,9};

则语句for(i=0;i<3;i++)printf("%d",x[i][2-i]);的输出结果是()。

A.159B.147C.357D.369

63.若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为()。

A.4B.16C.32D.52

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

A.顺序存储结构的存储一定是连续的,链式存储结构的存储空问不一定是连续的

B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

C.顺序存储结构能存储有序表,链式存储结构不能存储有序表

D.链式存储结构比顺序存储结构节省存储空间

65.(9)下列叙述中正确的是()

A.数据库是一个独立的系统,不需要操作系统的支持

B.数据库设计是指设计数据库管理系统

C.数据库技术的根本目标是要解决数据共享的问题

D.数据库系统中,数据的物理结构必须与逻辑结构一致

66.以下程序的输出结果是()。

main()

{inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;

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

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

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

}

A.18

B.19

C.20

D.21

67.

68.有以下程序:

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

69.

有下列程序:

main

{inti,s=0,t[]={1,2,3,4,5,6,7,8,9);

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

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

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

70.

71.

72.有以下程序:

voidmain()

{chars[]="159",*p;

p=s;

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

}

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

A.15B.16C.12D.59

73.以下选项中合法的标识符是()。

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

A.&B.^C.D.E.F.~

75.以下不合法的字符常量是()。

A.

B.

C.

D.

76.以下符合C语言语法的实型常量是

A.1.2E0.7B.3.33.145EC.E23D..4E-2

77.有以下程序:#include〈stdio.h〉voidfun(int*s){staticintj=0;do{s[j]=s[j]+s[j+1];}while(++j<2);}main(){inti.a[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=0;i<5;i++)pfintf(“%d”,a[i]);printf(“\n”);}程序运行后的输出结果是()。A.12345B.23445C.34756D.35745

78.下列选项不符合良好程序设计风格的是()。

A.源程序要文档化B.数据说明的次序要规范化C.避免滥用goto语句D.模块设计原则是高耦合、高内聚

79.

80.下面的函数调用语句中func函数的实参个数是

func(f2(A1,A2),(A3,A4,A5),(A6,max(A7,A8)));

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

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若num1和num2分别为49和21,则输出的最大公约数为7;若num1和num2分别为27和81,则输出的最大公约数为27。请改正程序中的错误,使它能得出正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.函数fun的功能是:将S所指字符串中除下标为偶数同时ASCIl码值也为偶数的字符外,其余的全部删除;字符串中剩余字符所形成的新串放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFGl23456”,其中字符A的ASCIl码值为奇数,因此应当删除;字符8的ASCIl码值为偶数,但在数组中的下标为奇数,因此也应当删除;字符2的ASCIl码值为偶数,在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是‘'246”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:

参考答案

1.C本题主要考查我们对C语言一些基础知识的掌握情况。下面分别分析本题的四个选项。

由于高级程序设计语言具有可读写、可理解性好等特点,这就要求高级程序设计语言用接近人们习惯的自然语言和数学语言作为语言的表达形式,选项A的说法正确。

在计算机中,机器可以接受和处理的只能是由0和1组成的二进制代码,用高级语言编写的程序都需要经过编译和连接,使其转化为二进制代码才能被机器执行。因此,选项B的说法正确。

C语言源程序经过C语言编译程序编译之后生成一个后缀为.OBJ的二进制文件(称为目标文件);最后要由“连接程序”把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。因此,选项C的说法不正确。

由于高级语言编写的程序都需要经过编译和连接,才能被计算机执行,因此,每一种高级语言都有它对应的编译程序,D选项的说法正确。

2.D

3.D解析:通常,引用一个数组元素可以用下标法,如a[P-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。

4.C

5.D

6.A

7.A本题中定义了整形变量case,但case是关键字,关键字不能用做标识符。单精度printF不是关键字,因为标识符区分大小写。所以A不正确。

8.D解析:本题考查函数返回值作参数,最初n=1,f(n)=f(1)=2,将f(n)的结果代入第二个f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。

9.A依据fun函数,可知其要实现的功能是将S中第(t+1)个元素以前的元素逆置赋给数组P。由于fun中函数定义了静态变量t=3,因此,main函数中调用函数fun(a,&x)时,就是要将数组a中前4个元素逆置赋给数x,最后输出x数组。

10.A变量m、n的数据类型未知,但题目中已定义并赋初值。选项B的语句缺少分号结尾。选项C,强制转化使用错误。选项D的“m*n”只能用作表达式的右值,不能作为左值。故本题答案为A选项。

11.D

12.D

13.D

14.C

15.A函数fun()通过递归调用实现的功能为n+(n-1)+…+1,故程序的输出结果为55。

16.B滥用90t0语句将使程序的流程毫无规律,可读性差,对于初学者来说尽量不要使用,所以A错误。—个结构化程序可以包含顺序、分支、循环结构中的一种或多种,所以C错误。由三种基本结构构成的程序可以解决任何复杂的问题,所以D错误。

17.A本题考查简单的递归函数,当c>X则会产生递归,依次类推,答案选择A.

18.B

19.D

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

21.*(p+5)或p[5]*(p+5)或p[5]

22.对象对象解析:类描述的是具有相似性质的一组对象。例如,每本具体的书是一个对象,而这些具体的书都有共同的性质,它们都属于更一般的概念“书”这一类对象。一个具体对象称为类的实例。

23.ACEACE解析:在本题中,for循环体每执行完一次,变量i的值自加两次。i的初值为“a”,执行一次循环后变为“c”,之后再变成“e”,当其变为“g”时,循环条件若不满足,循环终止,故本题共输出3个字符。表达式“i-'a'+'A'”即表示输出i对应的大写字母,结果为ACE。

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

25.852852解析:循环前,变量y的值为9,其中,循环语句在y大于0情况下循环,每次循环后y的值都减1。循环体是当y能被3整除时输出表达式--y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减1变成2,输出2;再经两次循环后,y的值变成0,结束循环,所以程序输出852。

26.物理独立性数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。

27.(cosx)*(cosx)*(m+n)/(m-n)

28.10111011解析:前缀自增运算时,表达式的值和变量自增之后的值相同;后缀自增运算时,表达式的值为变量自增之前的值。所以,本题程序输出的两个结果分别是m+1和n的值。而m在初始化时使用的是八进制常量011,转换为十进制为9。故输出结果是1011。

29.类类

30.关系或一个关系关系或一个关系解析:在关系数据库中,把数据表示成二维表,而一个二维表就是一个关系。

31.bcdefghabcdefgha解析:在本题定义的ss()函数中首先定义了一个指针p和一个字符变量t,然后让p指向参数指针s的下一个位置s+1,并让t保存s位置的字符。然后使用一个while循环将p指向的内容赋给它前面一个位置,即将参数s所指的字符串从第2个字符开始整体往前移动一位。循环结束时,p指向原s串的结束标志处,所以让*(p-1)=t;即是将原s串的第1个字符复制到s串的最后一个位置。整个函数实现的是让一个字符串循环左移一位。故主函数中最后输出的字符串是'bcdefgha'。

32.22132,2,1,3解析:本题考查++,--运算符和条件运算符的使用。

“表达式1?表达式2:表达式3”的功能是:表达式1的值若非0,则计算表达式2的值,且表达式2的值为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。

本题中,x=1,y=2时,x<y成立,输出y的值2;y=2,z=3时,z<y不成立,执行y++,输出2后y值增1,所以最后一个输出x的值不变为1,y的值为增加后的3。

33.数据存储数据存储

34.(c=getchar())!='\n'(c=getchar())!='\\n'解析:分析题目可知,程序中运用函数c=getchar()从标准输入设备读取下一个字符,而且是一行的字符(即没有换行),所以条件为(c=getchar())!='\\n'。

35.CDC:(CD与C:中间至少要有一个空格)CDC:(CD与C:中间至少要有一个空格)

36.xx解析:本题考查的知识点是while循环的程序分析;主函数中首先定义了一个字符型变量C,接着执行下面while语句,在while循环中,首先从键盘上读入一个字符Y并给赋给字符变量C,赋值表达式的值不为'?',执行输出语句,输出字符x。接着判断while中的循环条件,读入一个字符'?',并赋值给c,赋值表达式的值为'?',循环条件不再满足,退出循环。

37.-1-1解析:strcmp(s1,s2)函数的作用是:对字符数组s2和字符数组s1进行比较。如果s1<s2,则返回负数;如果s1==s2,则返回0;如果s1>s2,则返回正数。

38.一对多一对多解析:在现实世界中事物间的关联称为联系。在概念世界中联系反映了实体集间的一定关系。两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有3种,分别是一对一,一对多和多对多,依据题意,一名学生只能住一间宿舍,一间宿舍可住多名学生,所以实体“宿舍”与实体“学生”的联系属于一对多的联系。

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

40.静态分析静态分析解析:程序测试分为静态分析和动态测试。其中,静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

41.A解析:由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不—致性。所谓数据的—致性是指在系统中同—数据的不同出现应保持相同的值,而数据的不—致性指的是同—个数据在系统的不同拷贝处有不同的值。

42.B

43.A解析:带参数的宏定义命令行形式如下:#de-fine宏名(形参表)替换文本。首先进行M的宏替换,之后再进行N的宏替换,替换后的表达式为(a)*(b)/(c)。

44.C解析:预处理功能主要有以下三种:宏定义、文件包含和条件编译,所以A不正确。预处理不是C语句,所以B不正确。预处理命令是由ANSIC统—规定的,编译程序不能识别它们,D也不正确。

45.D解析:本题考核的知识点是指针变量定义和赋值语句的基本应用。在使用一个指针变量之前,先要用声明语句对其进行定义,在定义了一个指针变量之后,系统就为这个指针变量分配了一个存储单元,用它来存放地址。在C语言中有两个有关指针的运算符:&运算符,为取地址运算符,*运算符是指针运算符,*p代表p所指向的变量。本题中首先定义了整型变量n,其初值为0,接着定义一个指针变量p并让它指向n,然后定义了一个指向指针的指针变量q并让它指向p,选项A中将常量1赋给指针p不正确;选项B也是将常量2赋给*p,故选项B不正确;选项C中P不是指向指针的指针变量,而将他赋值给一个指向指针的指针变量小显然不正确,所以,4个选项中选项D符合题意。

46.D解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:

#define宏名(形参表)字符串

本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。

47.C解析:将题目中的定义语句去掉前面的typedef和后面的OLD(分号保留),就是一条完整的结构体定义语句,其中struct是说明符,NODE是结构体名,大括号里面的是结构体成员的定义.此时要声明该结构体变量时需要使用struct加结构体名一起来声明,structNODE一起构成一个结构体类型,就好像字符类型char。若只去掉前面的typedef,就是一条结构体定义同时声明一个结构体变量OLD的语句,因为OLD的前面部分是structNODE的完整写法,可以看作是structNODE。C语言允许用typcdcf说明一种新类型名,其语法格式为:

typedef类型名标识符;

以后就可以用该标识符来代替被说明的类型名了。因此,当前面存在typedef时,该语句就变成7给structNODE的完整写法定义一个新的名称OLD。所以,此时的OLD是一个结构体类型,它相当于structNODE,即可以和char一样单独用来声明该结构体变量,而NODE只是一个结构体名,不能单独用来声明变量。所以,4个选项中C符合题意.

48.C解析:位运算符“|”的作用是按位或,即两个二进制数的相应位中只要有—个为1,该位的结果值为1。最后以字符型输出,98对应的字符“b”。

49.B解析:栈操作原则上“后进先出”,栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈。所以出栈时一定是先出D,再出C,最后出A。

50.A解析:本题考查函数的递归调用。

在函数递归调用时,fun(7):a=7-fun(5)→fun(5):a=5-fun(3)→fun3:a=3-fun(1)→fun(1):a=3,反推回去fun(3):a=3-3=0→fun(5):a=5-0=5→fun(7):a=7-5=2,最后的计算结果为2。

51.B解析:对于do…while循环,程序先执行一次循环体,再判断循环是否继续。本题先输出一次i的值“0,”,再接着判断表达式i++的值,其值为0,所以循环结束。此时变量i的值经过自加已经变为1,程序再次输出i的值“1”。

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

53.B

54.C解析:return语句中的表达式的值就是所求的函数值,此表达式值的类型必须与函数首部所说明的类型一致。如果类型不一致,则以函数值的类型为准,由系统自动进行转换。一个return语句只能返回一个值。

55.D

56.B本题主要考查C语言合法语句的定义。

在选项A中,a==1不是一个合法的语句,因为它没有语句结束标识符“;”,不能说是一条语句,如果作为一个表达式,它是正确的。

在选项B中,由于变量i已被正确定义并有初值,“++i;”是正确的语句。

在选项C中,由于正确的赋值语句中,赋值符号的左边不能为常量或表达式,而右边不能为变量或表达式,很明显,“a=a++=5;”违背了赋值语句的原则。

在选项D中,“a=int(i);”语句是不正确的,在C语言中没有这种表示形式,如果是想将变量i强制转换为整型的操作,应该为“a=(int)i;”。

57.B解析:通过观察可知图形共4行,主函数中通过一个for循环四次,输出4行。第一行输出3个空格和1个“*”,第2行输出2个空格和3个“*”,第3行输出3个空格和5个“*”,第四行输出7个“*”,主函数中通过第二个循环控制每行的输出空格数,第三个for循环控制输出的“*”的个数,总结规律:每行输出的“*”的个数,总比前一行的多2个,且第一行的个数为1,可以断定每行输出的“*”的个数组成了一个公差为2的等差数列,所以每行输出“*”的个数即该等差数列的通项,故该空格处应该填写2*i-1。

58.A解析:作为一个算法,一般应该具有下列4个特征:(1)可行性,即考虑到实际的条件能够达到一个满意的结果;(2)确定性,算法中的每一个步骤都必须是有明确定义的,(3)有穷性,一个算法必须在有限的时间内做完;(4)拥有足够的情报。

59.A解析:本题考查printf函数的格式。“%5.2f”格式符中的“f”表示以带小数点的形式输出单精度或者双精度数:“5”表示指定数据输出宽度为5;“.2”表示指定输出数据小数位占2位数,并对截去的第一位小数做四舍五入处理。

60.D解析:类(calss)描述的是具有相似属性与操作的一组对象,而一个具体对象则是其对应类的一个实例。

61.B本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。

62.C

63.C本题主要考查逗号表达式。逗号是一个特殊的运算符,它具有所有运算符中最低的优先级。在C语言中,用它可以将两个表达式连接起来,逗号表达式的一般表现形式为:

表达式1,表达式2,…,表达式n

逗号表达式的求解过程是:先求解表达式1,再求解表达式2,依次往后计算,整个逗号表达式的值是最后一个表达式的值,如“3+5,5+6”的值是11。

在本题中,逗号表达式为i=4,j=16,k=32,根据上面的分析,计算逗号表达式得到的结果为

温馨提示

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

评论

0/150

提交评论