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

下载本文档

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

文档简介

2021-2022年河南省濮阳市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下不能将s所指字符串正确复制到所指存储空间的是()A.do{*t++=*s++;}while(*s);.

B.for(i=0;t[i]=s[i];i++);

C.while(*t=*s){t++;s++}

D.for(i=0,j=0;t[i++]=s[j++];);

2.以下程序的输出结果是()。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.123456780B.123456780C.12345678D.147

3.以下程序中,while循环的循环次数是main(){inti=0;while(i<10){if(i<1)continue;if(i==5)break;i++;}}

A.1B.10C.6D.死循环,不能确定次数

4.若有以下定义,则能使值为3的表达式是intk=7,x=12;

A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5D.(x%=k)-(k%=5)

5.执行完下列语句段后,i值为()。A.A.2B.4C.8D.无限递归

6.下列程序的输出结果是()。char*point(char*pt):main{charb[4]={a,c,s,f),*pt=b;pt=point(pt);printf("%c\n",*pt);}point(char*p){p+=3;returnp;}A.sB.cC.fD.a

7.下列说法错误的是______。

A.关系中每一个属性对应一个值域

B.关系中不同的属性可对应同一值域

C.对应同一值域的属性为不同的属性

D.DOM(A)表示属性A的取值范围

8.可用作C语言用户标识符的一组标识符是()。A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaseD.2aDOsizeof

9.设无向图G中有n个顶点e条边,则其对应的邻接表中的表头结点和边表接点的个数分别为()。

A.n,eB.e,nC.2n,eD.n,2e

10.有以下程序:程序运行后的输出结果是()。A.1.000000B.0.000000C.0.250000D.0.500000

11.

12.有以下程序:#include<stdio.h>voidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charss[10]=“acc”,aa[10]=“bbxxyy”;fun(ss,aa);printf(“%s,%s\n”,ss,aa);}程序的运行结果是()。

A.acc,bbxxyy

B.accbbxxyy,bbxxyy

C.accxxyy,bbxxyy

D.accxyy,bbxxyy

13.若有说明语句:double*p,a;则通过scanf语句正确给输入项读人数据的程序段是()。

A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);

14.以下关于C语言的叙述中正确的是()。

A.C语言中的注释不可以夹在变量名或关键字的中间

B.C语言中的变量可以在使用之前的任何位置进行定义

C.在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致

D.C语言的数值常量中夹带空格不影响常量值的正确表示

15.下述程序的输出结果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if(i*i>=20)(i*i<=lOO))break;}printf("%d\n",i*i);}A.49B.36C.25D.64

16.若有下列说明语句int(*p)();则标识符p代表的是()

A.一个用于指向函数的指针变量,函数返回值的类型为int型

B.一个带回值类型为整型的函数名

C.一个用于指向整型数据的指针变量

D.一个带回值类型为指针类型的函数名

17.有以下程序:#include<stdio.h>main(){FILE*pf;char*s1=“China”,*s2=“Beijing”;pf=fopen(“abc.dat”,“wb+”);fwrite(s2,7,1,pf);rewind(pf);/*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}程序执行后,abc.dat文件的内容是()。

A.ChinaB.ChinangC.ChinaBeijingD.BeijingChina

18.健壮的算法不会因非法的输入数据而出现莫名其妙的状态()

A.对B.错

19.

20.若k是int类型变量,且有以下for语句:for(k=-1;k<O;k++)printf("****\n");下面关于语句执行情况的叙述中正确的是()。、A.循环体执行一次B.循环体执行两次C.循环体一次也不执行D.构成无限循环

二、2.填空题(20题)21.以下程序的输出结果是【】。

#include<stdio.h>

main()

{inti;

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

printf("\n");

}

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

23.Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向______的设计方法。

24.关键字ASC和DESC分别表示【】的含义。

25.按"先进后出"原则组织数据的数据结构是【】。

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

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

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

27.若有定义:inta=4,b=5,c=6;然后顺序执行下列语句后,变量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);

28.mysulen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystrlen(Char*str)

{inti;

for{i=0;!='\0';i++);

return(______);

}

29.设y是int型变量,请写出y为奇数的关系表达式【】。

30.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。

31.下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

32.以下程序段用以统计链表中元素的个数。其中first指向链表第一个结点,count用来统计结点个数。请填空。

structlink

{chardata;

structlink*next;

}

structlink*p,*first;

|

intcount=0;

p=first;

while(【】)

{

【】;

p=【】;

}

33.以下程序的输出结果是______。

main()

{inta=0;

a+-(a=8);

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

}

34.问题处理方案的正确而完整的描述称为______。

35.若x为int类型,请写出与!x等价的C语言表达式______。

36.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【】和选择排序等。

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

38.下面程序的输出结果是【】。

charb[]="ABCD";

main()

{

charb[30];

strcpy(&b[0],"GH");

strcpy(&b[1],"GH");

strcpy(&b[2],"GH");

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

}

39.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2;

ch1=getchar();ch2=getchar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

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

}

程序运行时输入12<回车>,执行后输出结果是【】。

40.设一棵二叉树的中序遍历结果为ABCDEFG,前序遍历结果为DBACFEG,则后序遍历结果为【】。

三、1.选择题(20题)41.下面程序运行后的输出结果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}

A.1B.7C.9D.11

42.在说明语句int*f()中,标识符f代表的是______。

A.—个用于指向整型数据的指针变量

B.—个用于指向一维数组的行指针

C.—个用于指向函数的指针变量

D.一个返回值为指针型的函数名

43.以下不属于对象的基本特点的是()

A.分类性B.多态性C.继承性D.封装性

44.C语言规定,函数返回值的类型是()。

A.由调用该函数时的主调函数类型所决定

B.由return语句中的表达式类型所决定

C.由调用该函数时系统临时决定

D.由定义该函数时所指定的数值类型决定

45.在模块化程序设计中,按功能划分模块的原则是()。

A.各模块的功能尽量单一,且各模块之间的联系尽量少

B.各模块的功能尽量单一,且各模块之间的联系尽量紧密

C.各模块应包括尽量多的功能

D.各模块应包括尽量多的输入输出操作

46.已有定义:intx=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是

A.6B.0C.2D.1

47.有以下程序段:intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y的值为()。

A.55566B.566C.7777D.566777

48.在E-R图中,用来表示实体之间联系的图形是()

A.矩形B.椭圆形C.菱形D.平行四边形

49.下面程序输出的结果是______。main(){inti=5,j=9.x;x=(i==j?i:(j==7));printf("\n%d,%d",i,j);}

A.5,7B.5,5C.语法错误D.7,5

50.以下if语句书写正确的是()

A.if(x=0;)printf("%f",x);elseprintf("%f",-x);

B.if(x>0){x=x+1;printf("%f",x);}elseprintf("%f",-x);

C.if(x>0);{x=x+1;printf("%f",x);}elseprintf("%f",-x);

D.if(x>0){x=x+1;printf("%f",x)}elseprintf("%f",-x);

51.调用gets和puts函数时,必须包含的头文件是

A.stdio.hB.stdlib.hC.defineD.以上都不对

52.有以下程序:#include<stdio.h>voidfunl(char*p){char*q;q=p;while(*q!='\0')}(*q)++;q++;}mains(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序执行后的输出结果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

53.设有定义语句:intx[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是()。

A.for(i=0;i<6;i++)printf("%2d",*(p++));

B.for(i=0;i<6;i++)printf("%2d",*(p+i));

C.for(i=0;i<6;i++)printf("%2d",*p++);

D.for(i=0;i<6;i++)printf("%2d",(*p)++);

54.在结构化方法中,用数据流图(DFD)作为描述工具的软件开发阶段是()。

A.可行性分析B.需求分析C.详细设计D.程序编码

55.数据库设计的根本目标是要解决

A.数据共享问题B.数据安全问题C.大量数据存储问题D.倘化数据维护

56.有以下程序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

57.已有定义int(*p)(),指针p可以

A.代表函数的返回值B.指向函数的入口地址C.表示函数的类型D.表示函数返回值的类型

58.以下不合法的数值常量是()。

A.11B.le1C.3.0E0.5D.0xabcd

59.有以下程序main(){inti,s=1;for(i=1;<50;i++)if(!(i%5)&&!(i%3))s=+i;printf("%d\n",s);}程序的输出结果是

A.409B.277C.1D.91

60.以下4个程序中,完全正确的是

A.#include<stdio.h>main();{/*programming*/printf("programming!\n");}

B.#include<stdio.h>main();{/*/programming/*/printf("programming!\n");}

C.#include<stdio.h>main(){/*/*programming*/*/printf("programming!\n");}

D.include<stdio.h>main(){/*programming*/printf("programming!\n");}

四、选择题(20题)61.下列叙述中正确的是()。

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

B.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

C.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

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

62.执行语句X=(a=10,b=a--.后,x、a、b的值依次为()。

A.10,10,9

B.10,9,9

C.9,10,9

D.10,9,10

63.有以下程序:

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

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

64.

65.以下关于结构化程序设计的叙述中正确的是()。A.在C语言中,程序的模块化是利用函数实现的

B.结构化程序使用sotoi吾句会很便捷

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

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

66.

67.(5)下面概念中,不属于面向对象方法的是()

A.对象

B.继承

C.类

D.过程调用

68.

设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句:

if(a<b)

if(c==d)y=0;

elsey=1;

该语句所表示的含义是()。

A.y=0,a<b且c=dy=1,a≥b

B.y=0,a<b且c=dy=1,a≥b且c≠d

C.y=0,a<b且c=dy=1,a<b且c≠d

D.y=0,a<b且c=dy=1,c≠d

69.

70.

71.有以下程序:

#include<stdio.h>

main()

{inta,b,k,m,*pl,*p2;

k=1,m=8;

p1=&k,p2=&m;

a=/*pl-m;b=*p1+*p2+6;

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

}

编译时编译器提示错误信息,你认为出错的语句是()。

A.a=/*pl-m;

B.b=*p1+*p2+6;

C.k=1,m=8;

D.pl=&k,p2-&m;

72.

73.以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#include<stdio.h>

#defineN10

voidfun(intx[N])

{inti=0;

while(i<N)scanf("%d",

);

}

在程序中下划线处应填入的是()A.x+i

B.&x[i+1]

C.x+(i++)

D.&x[++i]

74.以下程序运行后的输出结果是()。

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

75.下面程序段的运行结果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));

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

76.下列函数的功能是

set(s,t)

{char*s,*t;

while((*s)&&(*t)&&(*t++==*s++));

return(*s-*t);

}A.A.求字符串的长度

B.比较两字符串的大小

C.将字符串s复制到字符串t中

D.将字符串s连接到字符串t后

77.

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

A.在面向对象的程序设计中,各个对象之间具有密切的关系

B.在面向对象的程序设计中,各个对象都是公用的

C.在面向对象的程序设中,各个对象之间相对独立,相互依赖性小

D.上述3种说法都不对

79.

80.(25)下面对对象概念描述错误的是()

A.任何对象都必须有继承性

B.对象是属性和方法的封装体

C.对象间的通讯靠消息传递

D.操作是对象的动态性属性

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:求整数X的Y次方的低3位值。例如,整数6的5次方为7776,此值的低3位值为776。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。例如,若字符串中的内容为****a*bc*def*g。***,删除后,字符串中的内容则应当是****a*bc*def*g。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:

参考答案

1.Ado{*t++=*s++;}while(*s);不能因为当*s=‘\\0'时,while(*s)跳出循环,这样字符串结束标志’0\\没有复制给*t,造成*t不完整。注意,*t++=*s++是先执行t=*s,然后才进行t=t+1,s=s+1。B),C),D)三项都能将“\\0’复制过去。

2.B第一个for循环的作用是让p指向每行的首地址,第二个for循环的作用是把它指向的字符串输出,故选择B选项。

3.D解析:break语句只能在循环体和switch语句体内使用,当break出现在switch语句体内时,其作用只是跳出该switch语句体。当break出现在循环体中,但不在switch语句体内时,则在执行break后,跳出本层循环体.而continue语句的作用是结束本次循环,即跳过本次循环中余下尚未执行的语句,接着再一次进行循环的条件判定。本程序中,变量i的初始值为0,判断while后面括号内表达式的值为真,执行循环体内的if语句,判断if后面括号内表达式的值为真,执行“continue;”语句.因continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判断,所以i的值未发生变化,循环条件仍然为真,if语句也仍然成立,因此循环将无止境地进行下去。所以,4个选项中D为所选。

4.D解析:运算符“%”的两侧都应该是整型数。另外,本题需要掌握的知识点是:x%=k,等价于x=x%k。注意:强制类型转换表达式。

5.B

6.C本题考查函数的调用及参数传递,当执行函数point时,刚开始指针P指向“a”,经过+3,指针p指向“f”,所以最后的输出结果是f。

7.C解析:关系中每一个属性都有一个取值范围,称为属性的值域。每—个属性对应一个值域,不同属性可对应同一个值域。对应同一值域的却不一定是不同的属性。属性的值域用DOM(A)表示,A表示属性的名称。

8.B

9.A

10.D程序定义double变量x、y,给x赋初值2.0。if语句判断,当x小于0.0时,给y赋值0.0。否则当x小于10.0时,y的值为1.0/x;当x大于等于10.0时,y的值为1.0。题干中x的值为2.0,所以y的值为1.0/x,即0.500000。本题答案为D选项。

11.B

12.B在函数fun中,前一个while循环的作用是,如果形参指针t所指内容不为0,则让t增1,直到它指向0;后一个while循环的作用是,将s所指内容赋给t所指地址,然后两者同时增1,直到赋给t的内容为0。由此可见,函数fun的作用就是将形参s所指字符串连接到形参t所指字符串末尾,相当于库函数strcat。主函数中使用fun将数组aa中的字符串连接到数组ss中原有字符串之后,所以执行完后,ss中的字符串为“accbbxxyy”。程序最后输出的结果是accbbxxyy,bbxxyy。故本题答案为B选项。

13.Ddouble*p,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量p;scanf("%If",p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,scanf函数要求在输入double型数据,格式控制符必须用%1f。否则,数据不能正确输入。所以选项D正确。

14.B解析:C语言中注释可以放在任何位置,选项A错误;C语言中的变量只要在使用之前定义即可,位置可以是使用前的任何位置,故选项B正确;C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选项C错误;C语言数值常量中不允许存在空格,选项D错误。

15.C当if执行到第一个满足(i*i>=20)(i*i<=100)这个条件的i出现时,通过break语句跳出循环,执行下面的prinlf语句。

16.A

17.B题目中先是将s2字符串写入adc.dat中,然后执行rewind函数将写指针放置于文件开头,写入s1字符串。s1字符串将前5个字符覆盖,所以最终结果为Chinang。故本题答案为B选项。

18.A

19.B

20.A本题考查简单的for语句,程序中当k<0时循环才执行,所以答案选择A。

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

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

23.数据结构数据结构

24.升序排列和降序排列升序排列和降序排列解析:ASC表示升序排列,DESC表示降序排列,多用在索引定义和SELECT语句中的ORDER子句中。

25.栈栈解析:考查考生对栈和队列概念的掌握。按'先进后出'原则组织数据的数据结构是栈;按'先进先出'原则组织数据的数据结构是队列。

26.66解析:条件运算符的优先级高于赋值运算符,因此本题先计算关系表达式(*ptr+y)<x)?*(ptr+y):x的值,再赋给变量z。当y=0时,*(ptr+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=2,所以z=2;当y-1时,*(ptr+y)=4,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以z=4;当y=2时,*(ptr+y)=6,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=6,所以z=6;循环结束。因此输出z的结果为6。

27.11解析:本题考查的是基本赋值运算符和赋值表达式。a-=(b-5)等价于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1确定为1。

28.*(srt+i)或str[i]i*(srt+i)或str[i]\r\ni解析:求str指向的字符串长度的算法是:用一个变量i表示字符串中字符的位置,一开始赋值为0,取出i位置的字符,判断是否为'\\0',若不是则i的值加1,如此循环直到取出的字符是'\\0'为止,此时i的值就是字符串的长度。由此可知,第一个空处应填第i位置上的字符*(str+i);第二个空格应该填字符串的长度i。

29.(y%2)==1或(y%2)!=0(y%2)==1或(y%2)!=0

30.自然连接自然连接解析:在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。

31.c>='a'&&c<='z'c>='a'&&c<='z'解析:小写字母在内存中以ASCII的形式存入,且从a到z依次递增,所以可以直接用c>='a'&&c<='z'判断是不是小写字母;c!='\\n'判断是用换行符结束循环。

32.p!=NULLcount++(*p).next

33.1616解析:在程序中首先将8赋值给变量a,然后在进行复合赋值运算。即a=a+a=8+8=16,所以该空格处应该填16。

34.算法或程序或流程图算法或程序或流程图解析:算法是问题处理方案正确而完整的描述。

35.x==0x==0解析:!x的逻辑意思就是x为非,即x==0。

36.交换排序交换排序解析:常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)。注意:常见的排序方法及其作用机制和区别。

37.3232解析:while(表达式)的功能是:首先计算表达式的值,若为真,则执行循环体语句,执行完毕,再计算表达式的值,若仍为真,则重复执行循环体语句,直到表达式的值为假时,结束while语句的执行,继续执行while语句后面的语句:i=0时满足循环条件,也满足if的条件,执行语句得i=11,a=11,第2次循环不满足if的条件,执行i--,i=10,执行i+=11;a+=i后,得i=21,a=32,不满足i<20,循环结束。

38.GGGHGGGH解析:由于在函数main中定义了数组变量b,其将屏蔽全局变量b。对于一维数纽变量,其值为一常数,等于数组首元素地址。strcpy(&b[0],'GH'),是将字符串'GH'复制到数组b中从首元数开始的空间中,此是b中的字符串为”叫”:strcpy(&b[1],'GH'),是将字符串'GH'复制到数组b中从第二个元素开始的空间中,此是b中的字符串为“GH”。执行第三次strcpy函数后,b中的字符串为'GGGH'。

39.1212解析:字符类型的数据在内存中以相应的ASCII码存放,在C语言中,字符数据可以等价为与其相应的ASCII码的整数,还可以作为整数参加运算。在本题中,n1=ch1-'0'='1-'0'=49-48=1,n2=n1*10+(ch2-'0')=1*10+('2'-'0')=10+2=12,所以,最后输出为12。

40.ACBEGFDACBEGFD解析:①确定根节点。在前序遍历中,首先防问根结点,因此可以确定前序序列DBACFEG中的第一个结点D为二叉树的根结点。

②划分左子树和右子树。在中序遍历中,访问根结点的次序为居中,首先访问访问左子树上的结点,最后访问右子树上的结点,可知,在中序序列ABCDEFG中,以根结点D为分界线,子序列ABC在左子树中,子序列EFG在右子树中。如下图所示。

③确定左子树的结构。对于左子树ABC,位于前序序列最前面的一个结点为了树的根结点,根据前序遍历结果,B为该了树的根结点,中序序列中位于该根结点前面的结点构成左子树上的结点子序列,位于该根结点后面的结点构成右子树上的结点子序列,所以A为该左子树的左结点,C为右结点。现在可确定左子树结构如下:

④确定右子树的结构。同理,可知右子树的结构。

本二叉树恢复的结果如图所示。

根据后序遍历的原则,该二叉树后序遍历的结果为ACBEGFD。

41.C解析:本题a[2][3]定义为一个具有两行三列的元素的数组,malloc()函数的作用是开辟了一个长度为sizeof(int)的内存区,p为指向整型数据的指针变量,程序调用fut()函数,将第一行第一列对应的元素值赋给**s,由于数组中第一行第一列对应的元素为9,所以本题输出值9。

42.D解析:返回指针值的函数,其—般定义形式为:类型标识符*函数名(参数表);例如:int*f(x,y);其中,f是函数名,调用它以后能得到—个指向整型数据的指针(地址),x,y是函数f的形参。在f的两侧为别为*运算符和()运算符,而()优先级高于*,因此f先与()结合,显然是函数形式。这个函数前面有一个*,表示此函数是指针型函数(函数值是指针)。前面的int表示返回的指针指向整型变量。

43.C解析:对象的基本特点包括;标识惟一性、分类性、多态性、封装性和独立性等。继承性不属于对象的基本特点。

44.D

45.A解析:模块化设计是指把一个大程序按人们能理解的大小规模进行分解。划分模块的基本原则是使每个模块都易于理解。按照人类思维的特点,按功能来划分模块最为自然。在按功能划分模块时,要求各模块的功能尽量单一,各模块之间的联系尽量少。所以选项B错误;选项C错误;选项D错误。

46.D解析:本题考查的知识点是!和&&的运算规则.本题中,&&左边的表达式!(x+y)为!(3+7),结果为假,即为0。再加上2,然后减一,相当于0+5-1=4。左边等于4,&&右边的表达式y+z/2相当于4+5/2为6,所以整个表达式相当于4&&6为真,即为1,所以选项D正确。

47.B解析:本题scanf()函数的格式化控制串中,'%2d'表示输入一个2位的整数:'%f'表示输入一个浮点数;'%s'表示输入一个字符串。因此,从键盘上输入'555667777abe'后,前两位'55'被当作2位整数输入给j;'566'被当作浮点数输入给y;跳过空格后,剩下的字符串'7777abc'全部输入给name。故本题应该选择B。

48.C解析:E-R模型可用E-R图来表示,它具有3个要素:①实体(型)用矩形框表示,框内为实体名称。②属性用椭圆型来表示,并用线与实体连接。属性较多时也可以将实体及其属性单独列表。③实体间的联系用菱形框表示。用线将菱形框与实体相连,并上标注联系的类型。

49.A解析:条件表达式的一般形式为:表达式1?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式1的值为假,则求解表达式3。本题中先判断i==j不等,执行j=7。然后执行x=7。故本题为A。

50.B

51.A解析:gets函数和puts函数是库函数,必须包含的头文件是stdio.h。

52.A解析:在main函数中,p=&a[3]说明指针p指向a数组的第4个字符(即字符\'g\');fun1中的q=p意味着指针q也指向了a数组的第4个字符。执行while语句,表达式(*q)++使\'g\'+1,使\'g\'变成了\'h\';表达式q++使q指向a[4]的起始地址。继续执行while语句,直到遇到\'\\0\'结束循环,返回形参。最终得到的结果是从字符串'Program\'的第4个字符开始,每个字符加1。

53.D解析:*p=x的作用是将x的首地址赋给指针变量p。选项A)正确,*(P++)中括号内的++是在P的后面,所以它先取*P的值x[0],再执行p++;选项B)正确,p+i表示x[i]的地址,*(p+i)表示x[i]的值;选项C)中的*和++处于同一优先级别,而结合方向为自右而左,因此*p++相当于*(p++),与选项A)相同;选项D)中的(*p)++是使*p的值+1,即x[0]的值加1,它不能实现指针的移动,每次循环只是x[0]的值在改变,而P的值并没有改变,所以不能实现6个元素的输出。

54.B解析:软件开发阶段包括需求分析、总体设计、详细设计、编码和测试五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。

55.A解析:数据库技术的根本目标就是要解决数据的共享问题,选项A正确。

56.B解析:本题定义了一个返回值为指针的函数f(),此函数有两个指针型的形参x和y,该函数的功能,是返回x和y指向的变量中值较小的那个指针变量。主函数中定义了两个指针变量p和q,井让它们指向了变量a和b,调用函数f(),返回指向的变量值较小的指针变量,r的值为指针变量p的值(变量a的地址),因此最后输出的*p、*q和*r的值是7、8和7。

57.B解析:此题考查了函数指针的概念,函数指针是定义一个指针指向函数的入口地址,可用这个指针来调用函数。

58.C解析:数值常量分为整型常量、实型常量、字符型常量。实型常量有两种表示形式:十进制小数形式和指数形式,用指数形式表示时字母e(或E)之前必须有数字,且c(或E)后面的指数必须为整数。如:e3,7e3.5,3.OEO.5都是不合法的。

59.D解析:本题是计算50之内的自然数相加之和,题中if语句括号中的条件表达式!(i%5)&&!(i%3)表明只有能同时被5和3整除的数才符合相加的条件,1~49之间满足这个条件的只有,15、30和45,因为s的初始值为1,所以s=1+15+30+45=91。

60.B解析:选项A)main();的分号是错误的,不能有分号;选项C)的注释语句多了两个*号;选项D)include前面没有#。

61.C\n线性表的顺序存储结构是把线性表中相邻的元素存放在相邻的内存单元中,而链式存储结构是用一组任意存储单元来存放表中的数据元素,为了表示出每个元素与其直接后继元素之间的关系,除了存储元素本身的信息外,还需存储一个指示其直接后继的存储位置信息。故线性表的链式存储结构所需的存储空间一般要多于顺序存储结构。

\n

62.D

温馨提示

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

最新文档

评论

0/150

提交评论