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的初始状态为空,栈的容量为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

2.

3.

4.字符串"\\"ABCDEF\"\\”的长度是()。

A.11B.10C.5D.3

5.有以下程序:fun(intx){intP;if(x==0||x==l)return(3);p=x-fun(x-2);returnp;}main{printf("%d\n",fun(7));}程序执行后的输出结果是()。A.7B.3C.2D.0

6.在执行()操作时,需要使用队列做辅助存储空间。

A.查找哈希(Hash)表B.深度优先搜索网C.前序(根)遍历二叉树D.广度优先搜索网

7.有以下程序:#include<stdio,h>main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;printf("%d\n",n);}程序运行后的输出结果是()。

A.0B.4C.6D.7

8.

9.以下不能定义为用户标识符的是()。

A.scanfB.VoidC.3comD.int

10.以下叙述正确的是()。

A.“charc1,*c2,*c3[10];”是合法的变量定义语句

B.数组说明符的方括号中不能使用表达式

C.数组元素下标可以是非整数

D.若有定义“chararray[4];”,则语句“printf(“%c”,array[“3”]);”是合法的

11.栈通常采用的两种存储结构是A.A.线性存储结构和链表存储结构

B.散列方式和索引方式

C.链表存储结构和数组

D.线性存储结构和非线性存储结构

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

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

13.下列对队列的叙述正确的是A.队列属于非线性表B.队列按“先进后出”原则组织数据C.队列在队尾删除数据D.队列按“先进先出”原则组织数据

14.设x和y均为int型变量,且x=10,y=3,则以下语句的输出结果是()printf("%d,%d\n",x--,--y);

A.10,3B.9,3C.9,2D.10,2

15.以下程序输出的结果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"},k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}

A.ABCDFGHKLB.ABCEFGUMC.EFGJKOD.FGHKL

16.下列关于c语言用户标识符的叙述中正确的是()。

A.用户标识符中可以出现下划线和中划线(减号)

B.用户标识符中不可以出现中划线,但可以出现下划线

C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头

D.用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头

17.下列关于字符串的说法中错误的是

A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符'\0'作为字符串结束标志

B.'\0'作为标志占用存储空间,计入串的实际长度

C.在表示字符串常量的时候不需要人为在其末尾加入'\0'

D.在C语言中,字符串常量隐含处理成以'\0'结尾

18.已有定义int(*q)(),指针q可以()。

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

19.若有运算符:>、*=、<<、%、sizeof,则它们按优先级(由低至高)的正确排列次序为()。

A.*=<<>%sizeof

B.<<*=>%sizeof

C.%=><<sizeof%

D.*=><<%sizeof

20.有以下程序voidf(intx,inty){intt;if(x<y){t=x;x=Y;y=t;)}main{inta=4,b=3,c=5;f(a,b);f(a,c);f(b,c);printf("%d,%d,%d\n",a,b,c);}执行后输出结果是()。A.3,4,5B.5,3,4C.5,4,3D.4,3,5

二、2.填空题(20题)21.下面程序的运行结果是【】。

#include<stdio.h>

#defineSIZE12

main()

{chars[SIZE];intI;for(I=0;I<SIZE;I++)s[I]=′A′+I+321;

sub(s,7,SIZE-1);

for(I=0;I<SIZE;I++)printf("%c",s[I]);

printf("\n");}

sub(char*a,intt1,intt2)

{charch;

while(t1<t2)

{ch=*(a+t1);

*(a+t1)=*(a+t2);

*(a+t2)=ch;

t1++;t2--;}}

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

main()

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

for(p=s;p<s+2;p++)printf("%s\n",p);

}

23.数据库管理系统是位于用户与______之间的软件系统。

24.按“先进后出”原则组织数据的数据结构是[]。

25.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块),其中【】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。

26.下列程序执行输出的结果是______。

#include<stdio.h>

f(intA)

{intb=0;

staticc=7;

a=c++;b++;

return(A);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

27.下列程序的运行结果为【】。

main()

{inta[3]C4}={{1,3,5,7},{2,4,6,8},{15,17,34,12}};

printf("maxvalueis%d\n",maxvalue(3,4,a));

}

maxvalue(m,n,array)

intm,n,array[][4];

{inti,j,max;

max=array[0][0];

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

for(i=0;i<n;j++)

if(max<array[i][j])max=array[i][j];

return(max);

}

28.以下程序的功能是建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next==NULL),请填空。

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

{p=(structlist*)malloc(sizeof(structlist));

[14]=a;q->next=p;[15]=p;scanf("%d",&a);}

p->next='\0';return(ph);}

main()

{stuctlist*head;head=creatlist();}

29.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指内存空间中,形成一个新字符串s。

请填空。

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstrl[100],str2[]="abcdefgh";

sstrcpy(strl,str2);

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

}

30.以下sum函数的功能是计算下列级数之和。请给函数中的各变量正确赋初值。

doublesum(doublex,intn)

{inti;doublea,b,s;

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

{a=a*x;b=b*i;s=s+a/b;}

returns;

}

31.若a是int型变量,则表达式(a=2*3,a*2),a+6的值为______。

32.某二义树中度为2的结点有18个,则该二叉树中有______个叶子结点。

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

34.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

35.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整型数据,成员变量link是指向自身结构体的指针,请将定义补充完整。

structnode

}intinfo;

【】link;

};

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

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

#defineS(x)4*x*x+1

mah()

{inti=6,j=8;

printf("%d\n",S(i+j));

}

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

voidreverse(inta[],intn)

{inti,t;

for(i=0;i<n/2;i++)

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

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

40.软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于______中的一个阶段。

三、1.选择题(20题)41.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a<回车>后,以下叙述正确的是()。

A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入第2个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

42.下述程序的输出结果是()。#include<stdio.h>voidmain(){inta[5]={1,2,3,4,5};int*p=a,**q=&p;printf("%d,",*(p++));printf("%d",**q);}

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

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

A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示

44.若有定义inta[10],*p=a,则p+6表示()。

A.数组元素a[5]的值B.数组元素a[5]的地址C.数组元素a[6]的地址D.数组元素a[0]的值加上5

45.以下程序的输出结果是#include<stdio.h>#include<string.h>main(){charb1[8]=“abcdefg”,b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pb);printf(“%d\n”,strlen(b2));}

A.8B.3C.1D.7

46.关于结构化程序设计原则和方法描述错误的是()。

A.选用的结构只准许有一个入口和一个出口

B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

C.不允许使用GOTO语句

D.语言中所没有的控制结构,应该采用前后一致的方法来模拟

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

A.x=y*5=x+z

B.int(15.8%5.

C.x=y+z+5,++y

D.x=25%5.0

48.以下叙述中正确的是______。

A.C语言比其他语言高级

B.C语言可以不用编译就能被计算机识别执行

C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D.C语言出现的最晚,具有其他语言的一切优点

49.下面程序的输出结果是______。main(){inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;printf("%d\n",p[3]);}

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

50.设有如下的程序段:inta[]=(1,2,3,4,5),*t;t=a;则下列说法正确的是()

A.a和t的内容相同B.a数组的长度和t所指的字符串长度相等C.a和t完全相同D.指针变量t指向数组a的第一个元素

51.已知a=15,执行fprintf(fp,"%d",a)后,写入fp指向的文件的是______。

A.15B.1111C.63D.1111

52.

(3)

A.p->nextB.pC.sD.s>next

53.下列程序执行后的输出结果是()。voidfuncl(inti);voidfunc2(inti);charst[]="hello,friend!";voidfuncl(inti){printf("%C",st[i]);if(i<3){i+=2;func2(i);)}voidfunc2(inti){printf("%c",st[i]);if(i<3){i+=2;func1(i);}}main(){inti=0;funcl(i);printf("\n");)

A.hlmB.hloC.helloD.he1

54.若有定义inta[9],*p=a;则p+5表示

A.数组元素a[5]的值B.数组元素a[5]的地址C.数组元素a[6]的地址D.数组元素a[0]的值加上5

55.有下列二叉树,

对此二叉树前序遍历的结果为()。

A.ACFHIBEDGB.ABCDEFGHIC.ABDEGCFHID.ABCDEFHGI

56.下面不属于软件工程的3个要素的是______。

A.工具B.过程C.方法D.环境

57.有以下程序

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

程序的运行结果是

A.a=1,b=0B.a=2,b=2C.a=1,b=1D.a=2,b=1

58.若有下面的说明和定义,则sizeof(structaa)的值是structaa{intrl;doubler2;floatr3;unionuu{charul[5];longu2[2]}ua;}mya;

A.30B.29C.24D.22

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

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

60.在执行完下列的C语句段之后,则B的值是()。Chara="A";intb;B=((34&&56)&&(a<'b'));

A.int类型B.float类型C.void类型D.函数无类型说明,定义有错

四、选择题(20题)61.

有以下程序:

main

{inti,n=0:

for(i=2;i<5;i++)

{do

{if(i%3)continue:

n++:

}while(!i);

n++:

}

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

}

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

A.n=5B.n=2C.n=3D.n=4

62.结构化程序设计所规定的三种基本控制结构是()。

A.for、while、switchB.输入、输出、处理C.顺序结构、选择结构、循环结构D.主程序、子程序、函数

63.

64.

65.

66.设有定义:

67.

68.执行下列程序时输入:123<空格>456<空格>789<回车>输出结果是main(){chars[100];intc,i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s\n",c,i,s);}

A.123,456,789B.1,456,789C.1,23,456,789D.1,23,456

69.若有条件表达式

则以下表达式中能完全等价于表达式(exp.的是()。

A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)

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

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

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

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

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

71.在数据库管理系统DBMS中,用来定义内模式和外模式等一些数据库管理系统中其他结构的语言为

A.CB.BasicC.DDLD.DML

72.以下程序的输出结果是______。#include<stdio.h>#defineFUDGE(y)2.84+y#definePR(a)printf("%d",(int)(a))#definePRINT1(a)PR(a);putchar('\n')main(){intx=2;PRINT1(FUDGE(5)*x);}

A.11B.12C.13D.15

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

#include<stdio.h>

#definePT5.5

#defineS(x)PT*x*X

main

{inta=1,b=2:

printf("%4.1f\n",s(a+b));

}

A.49.5B.9.5C.22.0D.45.0

74.设有如下定义:int(*ptr);则以下叙述中正确的是()。

A.ptr是指向一维组数的指针变量

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指int型数据的指针

75.if语句的基本形式是:if(表达式)语句,以下关于“表=迭式”值的叙述中正确的是()。

A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值

76.

77.

78.有以下程序

79.下列程序的运行结果是()。

#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.A.5,4,3,2B.2,3,4,5C.2,2,2,2D.5,5,5,5

80.若有以下程序段

intm=0xabc,n=0xabc;

m-=n;

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

执行后的输出结果是A.A.0X0

B.0x0

C.0

D.0xABC

五、程序改错题(1题)81.下列给定程序中,函数proc()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。

例如,若输入“I,anl,A,Student”,则输出“i,am,a,student”。

请修改程序中的错误。使它能得到正确结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

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

参考答案

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

2.D

3.D

4.B解析:本题涉及字符串的两个最基本的概念。①字符串的长度是指字符串中字符的个数,但不包含字符串结束符;②以反斜线“\\”开头的特殊字符序列,意思是把反斜线后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“\\”连同后面的字符为一个长度。

5.C在函数funlintx)中,有个if语句判断,如果参数x等于0或1时,返回值,否则进入下面的p=x-fun(x-2)递归函数。当在主函势中调用fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5一fun(3))=7-(5-(3-fun(1)))=7-(5-(3—3))=7-5=2”,所以最后的输出结果为2。

6.D

7.D解析:在程序中,当L的值为5和4时,case都没有与其匹配的值,所以执行default语句;当k=3时,执行n+=k;得n=3;当L=2时,执行case2:然后顺序执行case3:n+=k;得n=5;当k=1时,执行case1:n+=k;得n=6,然后顺序执行case2:和case3:n+=k;使得n=7。

8.B

9.D解析:标识符是C语言中用来表示变量名、数组名、函数名、指针名、结构名、联合名、枚举常数名、用户定义的数据类型名、语句标号等用途的字符序列。标识符由1~32个字符组成,第一个字符必须是字母或下划线,后面的字符可以是字母、数字或下划线。标识符不能与C关键字相同,并区分大小写。选项D)错误,因为int是C语言中的关键字。

10.AC语言规定定义数组时,数组的长度必须是整型常量,数组说明符的方括号中表达式只要是常量即合法,因此选项B错误。C语言规定,数组元素下标必须是非负整数,因此选项C错误。选项D中,“chararray[4]”数组的长度为4,“army[“3”]”中“3”是常量字符串,与C语言规定数组的下标必须是非负整数不符。故本题答案为A选项。

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

12.C

13.D解析:本题考查数据结构中队列的基本知识。队列是一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出的特性。在队列中,允许插入元素的一端叫做队尾,允许删除的一端则称为队头。这与日常生活中的排队是一致的,最早进入队列的人最早离开,新来的人总是加入到队尾。因此,本题中只有选项D的说法是正确的。

14.D

15.D当k=1时,引用的是二维数组元素w[1][1],值为字符串“FGH”;当k=2时,引用的是数组元素w[2][2],即字符串“KL”;当k=3时,结束程序的执行。注意:字符串数组的定义。

16.B解析:在C语言中,合法的标识符由字母,数字和下划线组成(故选项A不正确),并且第一个字符必须为字母或者下划线(故选项B和选项D不正确).所以,B选项为所选.

17.B解析:'\\0'作为标志占用存储空间,但是不计入串的实际长度。当给一个字符型指针赋值时,赋给这个指针的是这个字符串的地址。

18.A解析:本题考查的是指向函数的指针。函数指针的定义方式是:类型标识符(*指针变量名)()。其中,“类型标识符”为函数返回值的类型;“指针”指向函数的入口地址。

19.D解析:本题主要考查算术运算的优先级。顺序如下:

[*]

注:*=、>、<<、%、sizeof的优先级依次递增。

20.Da、b、C都是按值传递给函数f,函数f不能改变它们的值。所以,a、b、t的值仍然是4、3、5。

21.abcdefglkjIhabcdefglkjIh解析:本题主要考查了字符变量可参与的运算。因为字符在计算机中是以ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大写字母的ASCII码值比它对应的小写字母ASCII码值小32。

22.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:

类型说明符*指针变量名;

23.操作系统操作系统解析:数据库管理系统是帮助用户创建和管理数据库的应用程序的集合。因此,数据库管理系统需要操作系统的支持,为用户提供服务。

24.栈栈解析:栈和队列都是—种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的—端进行插入或删除操作,是—种“先进后出”的线性表;而队列只允许在表的—端进行插入操作,在另—端进行删除操作,是—种“先进先出”的线性表。

25.驱动模块驱动模块解析:在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中,驱动模块相当于被测试模块的主程序,它接收测试数据,并传给被测试模块,输出实际测试结果。承接模块通常用于代替被测试模块调用的其他模块,其作用仅做少量的数据操作,是一个模拟子程序,不必将子模块的所有功能带入。

26.88解析:第1次for循环,i=0,调用函数f(2),然后将a的值加1,在f()函数中,变量c为static类型,所以c=8:第2次for循环,i=1,调用函数f(3),然后将a的值加1,调用函数f(3)时,a=c++=8,所以k=8。

27.maxvalueis34

28.p->dataqp->data\r\nq解析:本题考查的是链表这一数据结构对结构体变量中数据的引用。链表的特点是结构体变量中有两个域,一个是数据,另一个是指向该结构体变量类型的指针,用以指明链表的下一个结点。

29.*t++或*(t++)*t++或*(t++)解析:主函数中定义了两个字符型数组strl和str2,并且给str2赋初值“abc&fgh”,接着调用函数sstrcpy(str1,str2),将字符串str2的值赋给str1。在函数sstrcpy(*s,*t)中,用了一个while循环,每循环一次将形参指针t所指的字符赋给形参指针s所指向的存储空间,然后指针s和指针t都下移到下一个元素。所以空格处应该填*t++或*(t++)。

30.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或给abs赋1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或给a,b,s赋1或1.0或1.解析:sum函数的功能是求表达式s的级数之和,该函数的大致思路是:在该函数中,定义了—个整型变量i用作循环计数器,定义一个变量a用来表示各个子项的分子,初始为第一个子项的分子,故为1,定义了一个变量b用来表示各个子项大分母,初始为第一个子项的分母,故为1,定义一个变量s存放累加和,初始为第一个子项的值即为1,然后给各个定义的变量初始化,然后通过一个for循环将题目中的数学表达式的各个子项求出来并累加到s中,所以说,在该题的空格处应该填写将a、b和s赋初值的语句,即为a=1;b=1;s=1:(说明:语句的顺序可任意)或a=b=s=1;(说明:变量的顺序可任意)或a=1,b=1,s=1(说明:赋值表达式的顺序可任意)给a,b,s赋1或1.0或1都可以。

31.1212解析:本题考查逗号表达式的运算规则。逗号表达式的基本格式为:“表达式1,表达式2,…”,其整个表达式的结果取最后一个子表达式的值。本题中首先计算逗号表达式中的第1个表达式a=2*3=6,然后计算第2个表达式a*2,这时整个表达式的值为12,但要注意,因为第2个表达式并没有给a赋值,因此a的值不变;接下来执行最后一个表达式a+6=12,所以整个表达式最后的值为12。

32.1919解析:二叉树具有如下性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。根据题意,度为2的节点为18个,那么,叶子结点就应当是19个。

33.数据存储数据存储

34.n/2性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。

35.struetnode*struetnode*解析:本题中的结构类型名为struetnode,所以空白处应填:structnode*,即定义一个指向自身的结构体指针。

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

37.8181解析:本题的宏调用S(i+j)将被替换成表达式4*i+j*i+j+l等于4*6+8*6+8+1=24+48+8+1=81。所以本题输出81。

38.2222解析:在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},然后再执行for循环结构,将b[6],b[7]...b[9]的值相加,结果为22。

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

40.软件开发软件开发解析:软件生命周期分为3个时期共8个阶段:软件定义期(问题定义、可行性研究和需求分析)、软件开发期(系统设计、详细设计、编码和测试)、软件维护期(即运行维护阶段)。

41.A解析:本题考查的是getchar()函数。getchar()函数执行时将从键盘缓冲区中读取用户的输入,而不管输入的是否可打印字符,所以当输入a<回车>后,键盘缓冲区被输入的实际上是两个字符:'a'和'\\n'。故选项A的说法是正确的。

42.D解析:题干中,*(p++)就是数组元素a[0],输出a[0],之后指针p的值加1,**q即是数组元素a[1]。

43.D数据的逻辑结构是指数据元素之间的逻辑关系的数据结构。数据的存储结构则是数据的逻辑结构在计算机中的物理实现,有时也称作数据的物理结构。两者的区别是数据的逻辑结构只涉及到数据之间抽象的数学关系。存储结构则涉及到如何在计算机中通过对数据的物理存储进行组织来表达数据元素之间的逻辑关系。比如在线性表的顺序存储中是利用物理存储空间上的连续性来表达线性表中数据的前后件关系;在线性表的链式存储中是通过指针域构成的逻辑链条来表达数据的前后件关系。一般的,一种数据的逻辑结构对应的物理实现,即数据的存储结构不止一种。因此选项D正确。

44.C解析:指针中存放的是变量的地址,指针也可以进行加减运算,这时指针移动的最小单位是一个存储单元,而不是一个字节。所以题中p+6指的是将指针向后移动了6个存储单元,指向a[6],存放的是a[6]的地址。

45.D解析:strcpy()函数的作用是把第二个参数代表的字符串,复制到第一个参数指向数组中。首先定义了两个字符数组b1和b2,并用一个字符串给b1赋初值,然后定义了一个字符型指针变量pb,通过赋初值使它指向b1[3]。接着执行while循环,该循环执行了3次:第一次判断条件“--pb>=b1”,使pb的值为“b1+2”,执行“strcpy(b2,pb);”后,b2中的内容为“cdefg”;第二次判断条件“--pb>=b”,使pb的值为“b1+1”,执行“strcpy(b2,pb);”后b2的内容为“bcdefg”第三次判断条件“--pb>:b1”使pb的值为“b1”,执行“strcpy(b2,pb);”后b2的内容为“abcdefg”。最后输出b2数组中存放的字符串长度,显然是7。(这里还有一个关键点:就是每当执行一次while循环判断条件,就执行一次“--pb”,使得指针pb自减1,即前移一位)。

46.C解析:限制使用GOTO语句是结构化程序设计的原则和方法之一,但不是绝对不允许使用GOTO语句。其他3项为结构化程序设计的原则。

47.C解析:求余运算符'%'两边的运算对象必须是整型,而选项B)和D)中'%'两边的运算对象有浮点整数据,所以选项B)和D)是错误的表达式。在选项A)中赋值表达式的两边出现相同的变量x,也是错误的。选项C)是一个逗号表达式,所以正确答案为C)。

48.C解析:计算机语言分为低级语言、汇编语言和高级语言,C语言属于高级语言,但并不是说C语言比其他语言高级,所以选项A错误;除了低级语言外,其他各种语言都必须编译成能被计算机识别的二进制数才能执行,选项B错误;C语言出现在1972年到1973年间,并不是出现最晚的语言,所以选项D也是错误的。

49.B解析:指针变量p指向数组a的第5个元素,p[3]在原指向基础上移3个单位,指针变量p将指向第8个元素(下标为7的元素),值为7。

50.D

51.C解析:使用fprintf()函数时,函数向文件输出的是ASCⅡ码,特别在输出数值时,输出的是该数值的ASCⅡ码,而不是数值本身。

52.B解析:主函数中,定义了一个结构体型指针变量head,然后将函数CreatList()的返回值赋给指针变量head,从这里可知函数CreatList()的返回值为structnode*类型,所以第48处的空格处应该填structnode*,故48题选项C正确;在函数CreatList()中首先定义三个结构体型指针变量b,p和q。然后调用malloc()函数分配了一个结点空间,并让指针h指向它,开始指针p、q和h都指向它,然后调用一个while循环语句,当到达字符串数组s的末尾结束循环,在每次循环中,分配一个结点空间,并让p指向它,然后让该结点的data域的值等于字符串指针s所指的值,故49处的空格处应填*s,因此第49题的正确的答案为选项A;接下来让指针q所指结点的指针城指向结点p,然后让指针q指向该指针的所指结点的下一个结点即p,所以第50个空格处应该填p,因此第50题应该选择B。所以48题4个选项中选项C符合题意:第49题4个选项中选项A符合题意;第50题4个选项中选项B符合题意。

53.B解析:本题定义了两个很相似的子函数互相调用,子函数首先输出st[i],然后判断i是否小于3,是的话就让i增2后调用另一个子函数。在主函数中只调用了一次funcl(0),funcl()输出st[0],然后调用func2(2),func2()输出st[2],又调用func1(4),此时i不小于3,所以funcl()只输出st[4]就返回了。故最终输结果为h1o,正确答案为B。

54.B解析:本题考查了通过指针来引用一维数组元素的方法。题中*p=a;这一赋值语句是指针p指向了数组a的首地址,p+5是指针p向后移动了5个int类型的存储单元,所以p+5指向了数组元素a[5]。

55.C解析:对二叉树的前序遍历是指先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左、右子树。

56.D解析:软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制和管理。

57.D解析:本题考查switch语句,首先,x=1符合条件case1,执行switch(y)语句,y=0符合case0语句,执行a++并跳出switch(y)语句,此时a=1。因为case1语句后面没有break语句,所以向后执行case2语句,执行a++,b++,然后跳出switch(x),得a=2,b=1。

58.D解析:结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有自己的内存单元;共用体变量所占的内存长度等于最长的成员的长度。结构体变量aa中,成员r1占2个字节,r2占8个字节,r3占4个字节,共用体ua占8个字节,所以共占用2+8+4+8=22个字节。

59.C解析:本题考查了考生对数据库基础知识的记忆。数据库技术的主要目的是有效地管理和存取数据资源,包括提供数据的共享性,使多个用户能够同时访问数据库中的数据;减少数据的冗余度,以提交数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。数据库的人工

温馨提示

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

评论

0/150

提交评论