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

下载本文档

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

文档简介

2021年山东省滨州市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.面向对象方法中,继承是指()。

A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之间的共同性质D.类之间共享属性和操作的机制

2.计算机算法指的是()。

A.计算方法B.排序方法C.解决问题的有限运算序列D.调度方法

3.表达式a+=a-=a=9的值是()。

A.9B.-9C.18D.0

4.有以下程序:#include<stdio.h>main(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i+j;}}printf("m=%d\n",m);}程序运行后的输出结果是()。A.m=6B.m=2C.m=4D.m=3

5.有以下程序:#include<stdio.h>main{intx=4,y;do{y=x;if(!y)printf(“x”);elseprintf(“y”):x--;}while(x);}程序的输出结果是()。A.xyyxB.yyyyC.yyxxD.yxyx

6.数组A中,每个元素的长度为3个字节,行下标i从1到8,列下标j从1到10,从首地址SA开始连续存放的存储器内,该数组按行存放,元素A[5][8]的起始地址为()。

A.SA+141B.SA+180C.SA+222D.SA+225

7.下列叙述中正确的是()。A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化

B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化

C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化

D.在栈中,栈中元素不会随栈底指针与栈顶指针的变化而动态变化

8.下列运算符中优先级最低的算符是()。

A.||B.!=C.<;=D.十

9.排序的算法很多,若排序的稳定性和不稳定性分类,则()是不稳定排序。

A.冒泡排序B.归并排序C.直接插入排序D.希尔排序

10.若有定义“floata=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为()。

A.两个语句都是将变量a的值赋予变量P

B.*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P

C.*p=a是将变量a的值赋予变量b,而&a是使P指向变量a

D.两个语句都是使P指向变量a

11.下列不属于软件工程的3个要素的是

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

12.若已知一个栈的进栈序列是1,2,3,,n,其输出序列为p1,p2,p3,?,pn,若p1=n,则pi为()。

A.iB.n-iC.n-i+1D.不确定

13.计算机硬件组成中,CPU包含______。

A.控制器和存储器B.控制器和运算器C.控制器、运算器和存储器D.内存储器和外存储器

14.设有定义“struct{charmark[12];intnum1;doublenum2;}t1,t2;”,若变量均已正确赋初值,则下列语句中错误的是()。

A.t1=t2;

B.t2.num1=t1.num1;

C.t2.mark=t1.mark;

D.t2.num2=t1.num2;

15.

16.在循环双链表的p所指的结点之前插入s所指结点的操作是()。A.p->prior->prior

B.p->prior->prior

C.s->prior->next=s

D.s->prior->prior=s

17.若有定义“inta,b;”,通过语句“scanf(“%d;%d,”&a,&b)能把整数3赋给变量a、5赋给变量b的输入数据是()。

A.35B.3,5C.3;5D.35

18.设有定义“intk=0;”,以下选项的4个表达式中与其他3个表达式的值不相同的是()。

A.++kB.k+=1C.k++D.k+1

19.将两个各有n个元素的有序表归并成一个有序表,最少的比较次数是()。

A.nB.2n-1C.2nD.n-1

20.折半查找法的查找速度一定比顺序查找法快()。

A.正确B.错误

二、2.填空题(20题)21.算法的复杂度主要包括时间复杂度和______复杂度。

22.写出下列程序的输出结果______。

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

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

}

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

#include<stdio.h>

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

main()

{inti=6,j=8;

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

}

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

#include<stdio.h>

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

如:dp=x*-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,D);

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

}

25.以下程序的运行结果为【】。

#defineFORMAT"%u,%u"

main()

{inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

printf("\n");

printf(FORMAT,**a,*a[0]);

printf(FORMAT,*(a[0]+1),*&a[0][1]);

printf(FORMAT,a[1][0],*(*(a+1)+0));

}

26.对于长度为n的顺序存储的线性表,当随机插入和删除—个元素时,需平均移动元素的个数为【】。

27.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。

28.要求使下列程序输出5个整数,请填空。

for(i=0;i<=______;printf("%d\n",i+=2));

29.函数fun的返回值是【】

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')mm++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

30.以下函数的功能是删除字符串s中的所有数字字符。请填空。

voiddele(char*s)

{

intn=0,i;

for(i=0,s[i];i++)

if(【】)

s[n++]=s[i];

s[n]=【】;

}

31.阅读下列程序,则程序的输出结果为【】。

#include"stdio.h"

structty

{intdata;

charc;};

main()

{structtya={30,'x'};

fun(a);

printf("%d%c",a.data,a.c);}

fun(structtyb)

{b.data=20;

b.c='y';}

32.一棵二叉树第六层(根节点为第一层)的节点数最多为______。

33.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。

34.软件定义时期主要包括______和需求分析两个阶段。

35.下面程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是【】。

main()

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

p=a;

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

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

}

36.函数compare的功能是比较两个字符串是否相等,若相等则函数返回值0,否则返回值1,请填空。

compare(chars[],chart[])

{inti=0;

while(s[i]==t[i]||【】)i++;

return(【】?1:0);

}

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

38.源程序文档化要求程序应加注释。注释一般分为序言性注释和【】注释。

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

40.数据库系统中实现各种数据管理功能的核心软件称为【】。

三、1.选择题(20题)41.以下程序的输出结果是main(){charch[3][5];{“AAAA”,“BBB”,“CC”};printf(“\”%s“n”,ch[1]);}

A.“AAAA”B.“BBB”C.“BBBCC”D.“CC”

42.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。

A.125B.n/2C.nD.n+1

43.以下4组用户定义标识符中,全部合法的一组是()A._mainencludesin

B.If-maxturbo

C.txtREAL3COM

D.intk_2_001

44.有以下程序;main(){chars[]={"aaiou"},*ps;ps=s;printf("%c\n",*ps+4);}程序运行后的输出结果是()。

A.aB.eC.uD.元素s[4]的地址

45.源程序的文档化不包括()。

A.符号名的命名要有实际意义B.正确的文档形式C.良好的视觉组织D.正确的程序注释

46.以下程序试图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符串#号时结束输入和输出操作,但程序有错#include<stdio.h>main(){FILE*fout;charch;fout=fopen('abc.txt''w');ch=fgetc(stdin);while(ch!='#'){fputc(ch,fout);ch=fgetc(stdin);}fclose(fout);}出错的原因是______。

A.函数fopen调用形式错误B.输入文件没有关闭C.函数fgetc调用形式错误D.文件指针stdin没有定义

47.

对两个数组a和b进行下列初始化:

charm[]="1234567";

charn[]={1,2,3,4,5,6,7};

则下列叙述正确的是()。

A.数组m与数组n完全相同B.数组m与数组n长度相同C.数组m比数组n长1D.数组m与数组n中都存放字符串

48.以下叙述中正确的是______。A.调用printf函数时,必须要有输出项

B.使用putchar函数时,必须在之前包含头文件stdio.h

C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D.调用getchar函数读入字符时,可以从键盘上输入字符所对应的ASCII码

49.有以下程序:voidfun1(char*p){char*q;q=P;while(*q!='\0'){(*q)++;q++;}}main(){chara[]={"Program"),*p;p=&a[3];funl(p);printf("%s\n",A);}程序执行后的输出结果是()。

A.ProhsbnB.PrphsbnC.ProgsbnD.Program

50.下面关于对象概念的描述中,错误的是

A.对象就是C语言中的结构体变量

B.对象代表着正在创建的系统中的一个实体

C.对象是一个状态和操作(或方法)的封装体

D.对象之间的信息传递是通过消息进行的

51.在结构化程序设计中,模块划分的原则是()。

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

B.各模块的规模应尽量大

C.各模块之间的联系应尽量紧密

D.模块内具有高内聚度,模块间具有低耦合度

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

A.软件交付使用后还需要进行维护

B.软件一旦交付使用就不需要再进行维护

C.软件交付使用后其生命周期就结束

D.软件维护是指修复程序中被破坏的指令

53.以下选项中不属于字符常量的是

A.'C'B.CC.'\xCC'D.'\072'

54.关系代数运算是以______为基础的运算。

A.关系运算B.谓词运算C.集合运算D.代数运算

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

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

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

A.程序就是软件

B.软件开发不受计算机系统的限制

C.软件既是逻辑实体,又是物理实体

D.软件是程序、数据和相关文档的集合

57.有以下程序:#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);程序运行后的输出结果是()。

A.运行后报错觉B.66C.611D.510

58.执行下面程序的正确结果是()main(){floata=1.9switch(A){case0:printf("0000");case1:printf("1111");case2:printf("3333");}printf("%f",A);}

A.1.900000

B.111133331.900000

C.33331.900000

D.00001111233331.900000

59.阅读下述程序段:y=-1;if(x!=0)if(x>0)y=1;elsey=0;该程序段所描述的数学关系是()

A.

B.

C.

D.

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

A.15B.10C.7D.8

四、选择题(20题)61.以下定义语句中正确的是()。

A.

B.

C.

D.

62.下列程序的输出结果是()。

main

{inta,b,d=25;

a=d/10%9;

b=a&&(-1);

printf("%d,%d\n",a,b);}A.A.6,1B.2,1C.6,0D.2,0

63.(32)数据的存储结构是指()

A.数据所占的存储空间量

B.数据的逻辑结构在计算机中的表示

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

D.存储在外存中的数据

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

A.zB.0C.元素Ch[5]地址D.字符y的地址

65.设有定义:“char*c;”,以下选项中能够使字符型指针c正确指向一个字符串的()。

A.charstr[]="string";c=str;

B.scanf(%s,c):

C.c=getchar();

D.*c="strin9";

66.以下选项中合法的标识符是()。A.1_2B._12C.2_1D.12__

67.

68.

69.若有说明:int*P,m=5,n;,以下正确的程序段是()。A.p=&n;scanf("%d",&p);

B.p=&n;scanf("%d",*p);

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

D.p=&n;*p=m;

70.在下列结论中,只有一个是错误的,它是()。

A.C语言允许函数的递归调用

B.C语言中的continue语句,可以通过改变程序的结构而省略

C.有些递归程序是不能用非递归算法实现的

D.C语言中不允许在函数中再定义函数

71.下列程序的输出的结果是()。main{doubled=3.2;intx,Y;x=1.2;v=(x+3.8)/5.0;printf("%d\n",d*y);}A.3B.3.2C.0D.3.07

72.以下描述中正确的是()。

A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B.do-while循环由do开始,用while结束,在while(表达式.后面不能写分号

C.在do-while循环体中,是先执行一次循环,再进行判断

D.do-while循环中,根据情况可以省略while

73.若有定义:则以下不能正确表示该数组元素的表达式是()。

74.运行下列程序时,若输入的数据为“1,2,3”,则输出结果是()。main{floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a<b){t=a;a=b.b=t;)if(a<c){t=a;a=c;c=t;)it(b<c){t=b;b=C;c—=;)printf("%f\n%f\n%f\n",a,b,c);}A.1.002.003.00B.1.003.002.00C.132D.3.000002.000001.00000

75.

76.设有如下函数定义:

若执行调用语句“ll=fm(3);”,则函数tim总共被调用的次数是()。

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

77.

以下程序执行后sum的值是()。

main

{inti,sum;

for(i=1;i<6;i++)sum+=i:

printf("1%d\n",sum):

}

A.15B.14C.不确定D.0

78.有以下程序:

#include<stdio.h>

main()

{chara[5][10]={"one","tw0","three","four","five"};

inti,j;

chart:、

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

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

if(a[i][O]>a[j][0])

{t=a[i][O];a[i][O]=a[j][O];a[j][O]=t;)

puts(a[1]);

}

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

A.fwo

B.fix

C.two

D.owo

79.

80.

五、程序改错题(1题)81.下列给定程序的功能是:读入一个整数n(2<=n<=5000),打印它的所有为素数的因子。例如,若输入整数1234,则应输出:2,617。

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

注意:不要改动main函数,不能增选或删行,也不能匿改程序的结构。

试题程序:

#include<conio.h>

#include<stdio.h>

//****found****

Prime(intm);

{

intj,P;

p=1;

//****found****

for(j=2;j<m;j++)

if!(m%j)

{

p=0;

break;

}

return(p);inti,n;

printf("\npleaseenteranintegernumberbetween2

and5000:");

scanf("%d",&n);

printf("\n\nTheprimefactor(s)of%dis(are):",n):

for(i=2;i<n;i4+)

if((!(n%i))&&(Prime(i)))

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

printf("\n");

}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#defineM4#include<stdio.h>intfun(inta[][m]){}voidmain(){intarr[2][M]={5,8,3,45,76,-4,12,82};printf(“max=%d\n”,fun(arr));}

参考答案

1.D继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。

2.C

3.D解析:+=、-=、=等符号优先级相同结合性是由右至左,所以选D。

4.A本题考查了多重for循环。当(i*j)>3时,跳出循环,本题中i=1,j=3,i*J后值为3,所以执行下边语句:m*=i+j,也可写成m=m*i+j,这时要注意优先级,所以m的值为6。

5.B本题考查do-while语句和if…else语句。do-while语句的功能是先执行循环体再判断条件,所以,先判断if语句的条件,y=-4,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x=3,条件不成立,执行下面的else语句,输出Y,然后将X的值减1,x=2,满足while循环条件,继续循环。第三次循环:先判断if语句的条件,y=2,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将X的值减1,x=l,满足while循环条件,继续循环。第四次循环:先判断if语句的条件,y=-1,!y为逻辑0,条件不成立,执行下面的else语句,输出Y,然后将x的值减1,x=0,不满足while循环条件,结束循环。所以B正确。

6.C

7.C栈是先进后出的数据结构,在对栈操作的整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来完成,因此本题答案为c)。

8.AC语言中规定运算符的优先顺序:一元算术运算符一>二元算术运算符一>关系运算符一>逻辑运算符一>赋值运算符,A项中为逻辑运算符,B项和c项都为关系运算符,D项为一元运算符。因此最低的是A项。

9.D

10.C“P”是指针变量,指向一个地址:“*P”为P指针所指向地址的内容“&”是取变量地址。

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

12.C

13.B

14.Cmark为结构体中的数组,不能直接赋值,所以C选项错误。故本题答案为C选项。

15.A

16.D

17.C输入数据的格式必须与scanf的格式控制字符串完全匹配。函数中非格式字符需要原样输入,所以输入时必须在3和5之间输入“;”。故本题答案为C选项。

18.C表达式“++k”是先使得k的值自增1后再使用。表达式“k++”是先取得k的值再将k的值自增1。所以C选项中表达式的值为0,而其他3个选项中表达式的值均为1。故本题答案为C选项。

19.B

20.B

21.空间空间解析:算法的复杂度主要包括时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算法所需要的计算工作量。一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。

22.333,3解析:本题在while(n++<=1)语句后,直接加了分号,说明如果while()的条件为真时,该循环什么都不做:n++是先取n的当前值和1做比较,然后再将n加1。第一次循环,n=0时,循环条件n++=<1成立,执行循环,然后得到n=1。第二次循环,n=1时,循环条件n++=1<=1成立,执行循环,然后得到n=2。第三次循环,n=2时,循环条件n++=2<=1不成立,不执行循环,但在判断循环条件时仍将n加1,得到n=3.退出循环后执行printf语句,第二个printf语句输出n++,是先输出n的当前值3,然后再将n加l,即程序结束后得到n=4,但输出的是3。

23.8181解析:带参数的宏定义是按#define命令行中指定的字符串从左到右进行替换。本题替换后得到:4*i+j*i+j+1,代入i,j的值得81。

24.7979解析:因为在调用子函数时进行的是数值传递,调用子函数并不能改变实参的值,所以经过调用子函数,c、d的值并没有发生变化还是原来的值。

25.113399

26.n/2n/2解析:删除—个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2:所以总体平均移动元素个数为n/2。

27.封装封装

28.88解析:本题考查基本的for循环条件,i+=2表示i每次递增2,从0开始,输出5个整数则需要的条件是i<=8。

29.字符串a和b的长度之和字符串a和b的长度之和解析:本题首先通过第一个while循环计算字符串a的长度,再通过第二个循环,将字符串a和b相连,最后返回连接后的总长度。

30.s[i]<'0'||s[i]>'9'或!(s[i]>='0'&&s[i]<='9')或!(isdigit(s[i]))或isdigit(s[i])==0或s[i]>'9'||s[i>'0'或!(s[i]<='9'&&s[i]>='0')或*(s+i)<'0'||*(s+i)>'9'或!(*(s+i)>='0'&&*(s+i)<=9或!(isdigit(*(s+i)))或*(s+i)>='9'&&*(s+i)<='0'或!(*(s+i)<='9'&&*(s+i)>='0'或isdigis[i]<'0'||s[i]>'9'或!(s[i]>='0'&&s[i]<='9')或!(isdigit(s[i]))或isdigit(s[i])==0或s[i]>'9'||s[i>'0'或!(s[i]<='9'&&s[i]>='0')或*(s+i)<'0'||*(s+i)>'9'或!(*(s+i)>='0'&&*(s+i)<=9或!(isdigit(*(s+i)))或*(s+i)>='9'&&*(s+i)<='0'或!(*(s+i)<='9'&&*(s+i)>='0'或isdigi解析:从一个字符串中删除某字符的力‘法是从字符串的第一个字符开始一一判断该字符是否是要被删除,若不是则把它放到结果字符串中,若是则不放入结果字符串中。本题的第一个空应判断s[i]是否为数字字符,只有在不是数字字符的情况下才存入结果字符串,所以应填入s[i]<'0'||s[i]>'9'。最后应在结果字符串的末尾填上字符串结束标志\\0。

31.30x30x解析:本题的参数传递属于值传递,所以函数内不能改变调用函数中的数据。

32.在二叉树的第k层上,最多有2k-1(k>1)个结点。

33.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。

34.可行性研究可行性研究解析:软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。

35.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18个字节。注意,本题是以十六进制输出的。

36.s[i]!='\0'||t[i]!='\0's[i]=='\0'&&t[i]=='\0's[i]!='\\0'||t[i]!='\\0'\r\ns[i]=='\\0'&&t[i]=='\\0'

37.

38.功能性功能性

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

40.数据库管理系统数据库管理系统(DBMS)

41.B解析:二维字符数组可以看成由若干个一维字符数组组成,每行是一个一维字符数组。本题首先定义了一个数组ch[3][5],并给它们按行赋初值,即相当于给ch[0]赋值“AAAA”,给ch[1]赋值“BBB”,给ch[2]赋值“BBB”,最后输出转义字符“'\\'”、ch[1]和转义字符“\\”,因此输出为“BBB”。

42.CC。【解析】对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。

43.A解析:标识符是以字母或下划线开头,由字母、数字或下划线组成的字符序列(例如,-max含非法字符-),并且用户标识符不能与C语言中的32个关键字同名(例如,int是关键字,不是合法的用户标识符)。选项B中-max不是字母、数字或下划线组成的字符序列,故选项B不正确;选项C中3COM不是由字母或下划线开头,故选项C不正确;选项D中int为C语言中的关键字,故选项D不正确;选项A中全部为合法的标识符,所以,4个选项中选项A符合题意。

44.B解析:程序首先定义了一个字符数组s,然后让字符指针ps指向该数组的首地址。最后按字符形式输出*ps+4的值,即s[0]+4的值,'a'+4='e'。故应该选择B。

45.B解析:源程序的文档化主要包括3点:(1)符号名应具有一定实际的含义,便于理解程序功能:(2)正确的程序注释;(3)良好的视觉组织。利用空格、空行、缩进等技巧使程序层次清晰。

46.A解析:本题考查的是文件的打开函数fopen(),其调用方式通常为FLIE*fp;fp=fopen(文件名,使用文件方式);,如:fp=fopen('abc.txt','w');表示要打开名字为abc.txt的文件,使用文件方式写入。fopen函数带回指向abc.txt文件的指针并赋给fp,即fp指向文件abc.txt。

47.C解析:本题考查字符数组和字符串赋值给数组的一些区别。语句“charm[]='1234567';”定义了一个字符型数组并进行了初始化,C语言规定,在字符串的末尾自动加上串结束标记\'\\0\',因此数组m的长度是8;而数组n是按照字符方式对数组进行初始化,系统不会自动加上串结束标记\'\\0\',因此数组n的长度是7。

48.B解析:本题考查了C语言的一些基本概念.printf()函数可以只有控制项而没有输出项,例如:printf('Hello!');,所以选项A不正确。C语言中不支持整数以十二进制输出,因此选项C不正确。getchar()函数从键盘读入一个字符,而不管该字符为数字还是字母,因此输入ASCII码的话,只能读到第1个数字字符,所以选项D不正确。故应该选择B,putchar是C语宫中的库函数,使用时必须包含sMio.h。

49.A解析:函数funl()实现的功能为将实参p所指的字符串顺序按位加1,而实参p通过“p=&a[3];”指向字符串数组a[]中的gram,敞输出结果为Prohsbn。

50.A解析:对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系,对象之间通过传递消息互相联系,从模拟现实世界中不同事物彼此之间的联系,B)、C)、D)是正确的,对象的思想广泛应用于C++、Java等语言中,因此A)错误。

51.D解析:本题考查软件工程中软件设计的概念和原理。人们在开发计算机软件的长期实践中积累了丰富的经验,总结这些经验得到如下的启发式规则:

(1)改进软件结构,提高模块独立性;通过模块的分解或合并,力求降低耦合提高内聚。低耦合也就是降低不同模块间相互依赖的紧密程度,高内聚是提高一个模块内各元素彼此结合的紧密程度。

(2)模块的规模应适中。一个模块的规模不应过大,过大的模块往往是由于分解不够充分:过小的模块开销大于有益操作,而且模块过多将使系统接口复杂。因此过小的模块有时不值得单独存在。

(3)模块的功能应该可以预测,但也要防止模块功能过分局限。如果模块包含的功能太多,则不能体现模块化设计的特点:如果模块的功能过分的局限,使用范围就过分狭窄。

经过上述分析,本题的正确答案是选项D。

52.A解析:维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段。软件工程学的目的就在于提高软件的可维护性,同时也要设法降低维护的代价。

软件维护通常有以下四类;

①为纠正使用中出现的错误而进行的改正性维护;

②为适应环境变化而进行的适应性维护;

③为改进原有软件而进行的完善性维护;

④为将来的可维护和可靠而进行的预防性维护。

软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。由此可知,本题中选项B、C、D中的说法都是错误的。

53.B解析:在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量,而选项B)是用双引号括起来的字符,表示一个字符串常量。

54.C解析:关系代数是以集合代数为基础女发展起来的,它是以关系代数作为运算对象的一组高级运算的集合。它的基本操作是并、交、差、笛卡尔积,另外还包括针对数据库环境专门设计的操作,包括对关系进行垂直分割(投影)、水平分割(选择)、关系的结合(连接)等。

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

56.D解析:软件是运行在计算机硬件之上的逻辑实体,包括程序、数据和相关的文档,软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制。

57.A解析:程序中将指针q赋予NULL,即指向了空地址,而对空地址所对应的内容赋值*q=*(p+5)虽然可以输出结果611,但最后是会报错的,即输出提示Nullpointerassignment。

58.B

59.C解析:y的初值为-1,第一个if语句的判断条件为x!=0,即当x!=0时y的值变化,x=0时y的值不变,仍为-1。第二个if语句的判断条件为x>O,如果x>0则y=1,否则y=0,即x<O时,y=O。4个选项中C符合题意。

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

61.C解析:选项A中两个变量的定义应当以逗号隔开;选项B中a和b应当分开赋值;选项D中变量类型不相匹配,b应当是指针型变量。

62.B当逻辑运算符“&&”两边的值是非零时,逻辑表达式的值为真(即为1)。所以b=2&&(-1)=1,2%9=2,故a=2,故先算a/10=25/10=2。

63.B

64.A表达式*(pc+5)先将指针向后移动5

65.A选项B是从键盘上输入字符串,选项C是接收字符,选项D不正确。

66.B标识符命名规则:标识符必须由字母(a~z或A~z)或下划线(_)开头;标识符的其他部分可以用字母、下划线或数字(0~9)组成;大小写字母表示不同意义,如cout和Cout代表不同的标识符;在定义标识符时,虽然语法上允许用下划线开头,但是,最好避免定义用下划线开头的标识符,因为编译器常常定义一些下划线开头的标识符。因此,本题正确答案为B)。

67.A

68.C

69.D"&”是求址运算符,”*”是指变量说明符。选项A)、B)改为scanf(”%d”,p);选项c)中指针变量P未指向一确定的内存单元,不能为其赋值,并且这样做很危险,建议不使用。

70.CC语言不仅可以递归调用,还可以对自己进行递归调用,但是,不允许在函

温馨提示

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

评论

0/150

提交评论