2021-2022年辽宁省锦州市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2021-2022年辽宁省锦州市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2021-2022年辽宁省锦州市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2021-2022年辽宁省锦州市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2021-2022年辽宁省锦州市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年辽宁省锦州市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.有以下程序:

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

A.0B.一1C.1D.7

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

A.*=<<>%sizeof

B.<<*=>%sizeof

C.%=><<sizeof%

D.*=><<%sizeof

4.对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为()。

A.顺序表B.用头指针表示的循环单链表C.用尾指针表示的循环单链表D.单链表

5.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3,d=4,r=0;if(a!=1)r=1;if(b==2)r=2;elseif(c!=3)r=3;elseif(d==4)r=4;printf(“%d\n”,r);}程序运行后的输出结果是()。

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

6.若有定义语句:“charsE10]="1234567\0\0";”,则strlen(s)的值是()。

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

7.待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第()个位置。

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

8.以下合法的字符型常量是A.B.C.D.

9.设有程序段:intk=12:while(k=1)k=k-1:则下列描述中正确的是()。

A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次

10.若i和k都是int类型变量,有以下for语句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面关于语句执行情况的叙述中正确的是()。

A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环

11.若变量已正确定义,下列正确的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

12.若有定义“intx=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为()。

A.1B.1.9C.2D.2.4

13.以下选项中与“if(a==l)a=b;elsea++;”语句功能不同的switch语句是()。

A.switch(a){casel:a=b;break;default:a++;}

B.switch(a==l){case0:a=b;break;casel:a++;}

C.switch(a){default:a++;break;casel:a=b;}

D.switch(a==l){casel:a=b;break;case0:a++;}

14.以下叙述中正确的是

A.语句inta[4][3]={{1,2},{4,5}};是错误的初始化形式

B.语句inta[4][3]={1,2,4,5};是错误的初始化形式

C.语句inta[][3]={1,2,4,5};是错误的初始化形式

D.在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵

15.在长度为n的顺序存储的线性表中,删除第i个元素(1≤i≤n)时,需要从前向后依次前移____个元素。

A.n-iB.n-i+1C.n-i-1D.i

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

B.散列方式和索引方式

C.链表存储结构和数组

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

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

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

18.若有定义语句:inta[3][6];,按在内存中的存放顺序,a数组的第10个元素是A.a[0][4]B.a[1][3]C.a[0][3]D.a[1][4]

19.下列程序的输出结果是()。main(){inta=1,b=2;printf("%d,%d\n",--a,++b);}

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

20.设有以下函数:voidfun(intn,char*s){…}则下面对函数指针的定义和赋值均正确的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

二、2.填空题(20题)21.以下程序中,for循环体执行的次数是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

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

{…}

}

22.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数数返回字符串:yes!否则函数返回这符串:no!并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adgda。请填空

#include<string.h>

char*huiwen(char*str)

{char*p1,*p2;inti,t=0;

pl=str;p2=______;

for(i=0;i<=strlen(str)/2;i+*)

if(*p1++!=*p2--){t=1;break;}

if(______)return("yes!");

elsereturn(*no!");

}

main()

{charstr[50];

printf("Input:");scanf("%s",str);

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

}

23.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统—管理与控制。

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

main()

{ints,i;

for(s=0,i=1;i<3;i++,s+=i);

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

}

25.若有如下程序:

#include"stdio.h"

main()

{chars[30];

strcpy(&s[0],"abc");strcpy(&s[1],"de");strcpy(&s[2],"f");

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

则程序运行后的输出结果是【】。

26.函数de1ete(s,i,n)的作用是从字符串s中删除从笫i个字符开始的n个字符,请填空。

voidde1ete(chars[],inti,intn)

{intj,k,length=O;

whi1e(s[length])

【】

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

whi1e(k<length)

s[j++]=s[k++];

s[j]='\0;}

27.在两种基本测试方法中,【】测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。

28.设有以下结构体类型:

structst

{charname[8];

intnum;

floats[4];

}student[50];

并且结构体数组student中的元素都已有值。若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:

fwrite(student,【】,1,fp);

29.下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空______。

30.以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。

#defineN4

voidrotate(inta[][N],intb[][N])

{inti,j;

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

{b[i][N-1]=a[0][i];【】=a[N-1][i];}

}

31.下面程序的功能是用来统计文件中字符个数。请填空。

#include"stdio.h"

main()

{longcount=OL;

FILE*fp=【】("text.dat","r");

if(fp==0)

{printf("Openerror\n");

exit(0);

}

while(【】)

{

fgetc(fp);

count++;

}

fclise(fp);

printf("%1d\n",count);

}

32.有以下程序;

inta=2;

intf(int*A)

{return(*A)++;}

main()

{ints=0;

{inta=5;

s+=f(&A)

}

s+=f(&A)

printf("%d\n",s)

}

执行后的输出结果是【】。

33.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

34.以下程序运行后的输出结果是()。main(){inta=3,b=4,c=5,t=79;if(b<a&&a<C)t=a;a=c;c=t;if(a<c&&b<C)t=b;b=a;a=t;printf("%d%d%d\n",a,b,C);}

35.在面向对象方法学中,直接反映了用户对目标系统的要求的模型是【】。

36.数据结构分为逻辑结构与存储结构,带链的栈属于【】。

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

#include<stdio.h>

unsignedfun6(unslgnednum)

{unsignedk=1;

do{k*=mum%10;num/=10;}

while(num);

returnk;

}

main()

{unsignedn=26;

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

}

38.若有如下程序:

main()

{ints=8,a=3,b=5,c=6;

if(a>b)s=a;a=b;b=s;

if(a>c){s=a;a=c;b=s);

if(b>c)s=b;b=c;c=s;

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

}

则程序运行后的输出结果是【】。

39.若输入tc,则程序的运行结果为【】。

#include<stdio.h>

main()

{charstr[40];

fscanf(stdin,"%s",str);

fprintf(stdout,"%s\n",str);

}

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

intx=0,y=0;

while(x<15)y++,x+=++y;

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

三、1.选择题(20题)41.若有定义和语句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf(%d,%d\n",*p,**pp);则输出结果是()。

A.20,10B.20,20C.10,20D.10,10

42.数据库的物理设计是为一个给定的逻辑结构选取一个适合应用环境的______的过程,包括确定数据库在物理设备上的存储结构和存取方法。

A.逻辑结构B.物理结构C.概念结构D.层次结构

43.当执行下面的语句定义一维数组a后,此数组的所有元素为()inta[10];

A.a[1],a[2],a[3],a[4],a[5],a[6],a[8],a[9],a[10],a[10]

B.a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]

C.a[0],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10]

D.a[1],a[2],a[3],a[4],a[5],a[9],a[7],a[8],a[9],a[10],a[11]

44.有以下程序

main()

{inti,s=0,t[]={l,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

45.语句“printf("a\bhow\'are\'y\\\bou\n");”的输出结果是()。

A.a\bhow\'are\'y\\bou

B.a\bhow\'are\'y\bou

C.how'are'you

D.ahow'are'y\bou

46.以下程序的输出结是_______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf(%d",a);}

A.200100B.100100C.100200D.200200

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

A.构成C程序的基本单位是函数

B.可以在一个函数中定义另一个函数

C.main函数必须放在其他函数之前

D.C函数定义的格式是K&R格式

48.有以下程序:#include<stdio.h>main(){intaa[5][5]={{1,2,3,4},{5,6,1,8},{5,9,10,2},{1,2,5,6}};inti,s=0;for(i=0;i<4;i++)s+=aa[i][2];printf("%d",s);}程序运行后的输出结果是()。

A.26B.19C.10D.20

49.下列程序的输出结果是______。main(){intx,y;for(x=1,y=1;x<=10;x++){if(y>=5)break;if(y%3==1)}y+=3;continue;}y-=5;}printf("%d\n",x);}

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

50.下列程序的输出结果是()。#include<stdio.h>main(){inta=3,b=2,c=1;if(a<b)if(b<O)c=0;elsec++;printf("%d\n",c);}

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

51.有下列二叉树,对此二叉树中序遍历的结果为()。

A.ABCDEFB.BDAECFC.ABDCEFD.ABCDFE

52.下列程序的输出结果是()。#include<stdio.h>main(){inta=4printf("%d\n",(a+=a-=a*A));}

A.-8B.14C.0D.-24

53.在结构化程序设计方法中,下面哪种内聚性最弱?

A.逻辑内聚B.时间内聚C.偶然内聚D.过程内聚

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

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

55.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的输出是______。

A.23B.26C.33D.36

56.在下列选项中,没有构成死循环的程序段是()。

A.inti=100;for(;;){i=i%10+1;if(i>10)break;}

B.while(1);

C.intk=0;do{++k;}while(k<=10);

D.ints=12;while(s);--s;

57.在函数scanf的格式控制中,格式说明的类型与输入项的类型应该对应匹配。如果类型不匹配,系统将()。

A.不予接收B.并不给出出错信息,但不能得到正确的数据C.能接收到正确输入D.给出出错信息,不予接收输入

58.下列选项中不属于软件生命周期开发阶段任务的是()。

A.软件测试B.概要设计C.软件维护D.详细设计

59.在16位IBM-PC机上使用C语言,若有如下定义:stmctdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是()。

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

60.执行以下程序后i的值为()。main(){intx,i;for(i=l,x=1;i<=36;i++){if(x>=20)break;if(x%5==1){x+=5;continue;}x-=5;)printf("%d",i);}

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

四、选择题(20题)61.下面程序的输出结果为()。

structst

{intx;

int*y;

}*p;

intdt[4]={10,20,30,40};

structstaa[4]={50,&dt[0],60,&dt[1],

70,&dt[2],80&dt[3]};

main()

{p=aa;

printf("%d\n",++p->x);

printf("%d\n",(++p)->x);

printf("%d\n",++(*p->y));

}

A.10B.50C.51D.60

20606070

20212131

62.

63.有以下程序程序执行后的输出结果是()。

A.y=一1B.y=oC.y=1D.while构成无限循环

64.有以下程序:

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

A.1*1=11*2=21*3=32*1=22*2=43*1=3

B.1*1=11*2=21*3=32*2=42*3=63*3=9

C.1*1=11*2=22*2=41*3=32*3=63*3=9

D.1*1=12*l=22*2=43*1=33*2=63*3=9

65.下面程序的输出结果是()。

#inclde<stdio.h>

#defineSUB(X,Y)(X)*Y

main()

{inta=3,b=4;

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

}

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

66.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

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

}

程序运行后输出的结果是A.A.63

B.36

C.编译出错

D.00

67.为了使模块尽可能独立,要求()。

A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强

B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱

C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱

D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

68.下列C语言用户标识符中,不属于合法标识符的是

A._1B.d3_7C._a7D.m—n

69.以理对枚举类型名的定义中正确的是______。

A.enuma={one,two,three);

B.enuma{one=9,two=1three};

C.enuma={"one","two","three"};

D.enuma{"one","two"."three"};

70.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是

A.插入排序B.冒泡排序C.直接插入排序D.堆排序

71.

72.

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

#include<stdio.h>

main

{inti;

for(i=l;i<=10;i++)

{if(i*i>=20)&&(i*i<=100))

break;

}

printf("%d\n",i*i);

}

A.49B.36C.25D.64

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

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

74.

75.

76.有以下程序:

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

A.12B.14C.1234D.123456

77.

78.下列叙述中正确的是()。A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

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

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

D.线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性

79.非空循环链表所表示的数据结构()。

A.有根结点也有叶子结点B.没有根结点但有叶子结点C.有根结点但没有叶子结点D.没有根结点也没有叶子结点

80.有以下程序:

若想通过键盘输入,使得al的值为12,a2的值为34,cl的值为字符a,c2的值为字符b,程序运行后的输出结果是:l2,a,34,b。则正确的输入格式是(以下-代表空格,<;CR>;代表回车)()。

A.12-a34-b<CR>

B.12-a-34-b<CR>

C.12,a,34,b<CR>

D.12a34b<CR>

五、程序改错题(1题)81.下列给定程序中函数proc()的功能是:将长整型数中为偶数的数依次逆向取出,构成一个新数放在t中。高位在低位,低位在高位。例如,当s中的数为12345678时,则t中的数为8642。

请修改函数proc()中的错误,使它能得出正确的结果。

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

试题程序:

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

参考答案

1.A

2.Ba一一的含义是先用后减l,所以当a的值为0时,跳出循环,但是仍要执行a一一,g的值变为一1。

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

[*]

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

4.C

5.D第1个if语句是单独的一条语句,所以执行完第1个if语句后,r的值仍为初值0。第2个if语句与后续的两个elseif都是嵌套的,所以只会执行其中的一个语句,即“if(b==2)r=2;”这条语句。故本题答案为D选项。

6.A"\0"表示空字符,strlen函数求得的是不包括字符串结束符\0的长度。故选A。

7.BB.【解析】快速排序的基本思想是:从表中选取一个元素(如本题中的33),将表中小于此元素的移到前面,大于此元素的移到后面,结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表再次分割……本题中33作为分割的中界线,第一趟排序后排在比它小的18、9、25、12后面。

8.A解析:C语言的字符常量是用单引号(即撇号)括起来的一个字符。除此之外,在C语言中还允许用以一个“\\”开头的字符序列来表示字符常量。其中,形式“\\ddd”表示1到3位8进制数所代表的字符;形式“\\xhh”表示1到2位16进制数所代表的字符。在本题中‘\\x13’表示回车符,是一个字符常量;‘\\081’用\u30008进制数所代表的字符,但形式不正确,因为8进制数所表示的字符中不会出现数字“8”;‘65’不是一个字符,而是一个+进制数字;“\\n”是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。

9.C本题考查while,while循环表达式k-1是个赋值表达式而不是逻辑表达式,k的初值为l2不符合循环条件,所以循环体语句一次也不执行。

10.D此题考查的是基本的循环,答案为D。

11.D解析:本题考查两个知识点:①C语言用'\\n'这个字符常量表示换行;②函数getchar()的作用是从终端输入一个字符,当遇到换行时结束输入。

12.A在表达式“z=0.9+x/y”中,先计算“3.6-2”,结果为1;再计算“0.9+1”,结果为1.9。因为变量z为整型,所以z的值为1。故本题答案为A选项。

13.B题中当a的值为l时,关系表达式a==l的值为真,即1,因此程序将跳转到easel执行a++操作,与题干程序刚好相反。

14.D二维数组在初始化时,可以省第1维,但是不可以省第2维。可以为部分数组元素初始化。A选项、B选项和C选项内的初始化都没有错误。因此D选项正确。

15.A

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

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

18.B解析:二维数组的元素在内存中是按行列顺序连续存放的。以本题的二维数组a[3][6]为例,它的元素在内存中的存放顺序是:a[0][0]、a[0][1]、a[0][2]…a[0][5]、a[1][0]、\u3000a[1][1]…a[1][5]、a[2][0]…a[2][5]。由此可见,第10个元素就是第2行第4个元素,即a[1][3]。故应该选择B。

19.D解析:本题主要考查自加(++)、自减(--)运算符的使用。“++i,--i”在使用i之前,先使i的值加1或者减1,然后再使用i此时的值参与运算;“i++,i--”是在使用i参与表达式运算之后,再使i的值加1或者减1。本题中--a和++b是先执行a减1和b加1操作,再输出表达式的值。

20.A函数指针的定义格式为函数类型(*指针变量名)(形参列表);函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。所以选项A正确。

21.44解析:将程序中所有的宏替换掉可得:M=2+1,K=2+1*2+1/2=4,所以for循环共循环了K-1+1次,即4-1+1共4次。

22.str+strlen(p1)-1或str+strlen(str)-1残str-1+strlen(str)或3tr-1+strlen(p1)t==0或!t或t=='\0'huiwen(str)str+strlen(p1)-1或str+strlen(str)-1残str-1+strlen(str)或3tr-1+strlen(p1)\r\nt==0或!t或t=='\\0'\r\nhuiwen(str)解析:判断回文教一般使用两个指针或下标变量分别从检查串的第1个字符和最后一个字符开始相向移动,并比较两者内容是否相同,直到中间相遇一直相同则是回文数,否则不是。函数huiwen中开始定义了两个字符指针p1和p2,并让p1指向str的开始位置,所以p2应该指向str的尾部,即&str[strlen(sir)-1]或写成str+strlen(str)-1或者其他等价形式。然后使用一个循环,循环str的长度的一半次数,比较p1和p2的内容,并分别递增和递减这两个指针。若有不同,则让标志t为1,并跳出循环。所以最后一个if语句应该为判断标志t是否为1,即应该填t==0或者其他等价形式。在主函数中,应该输出huiwen()函数的返回结果,印最后一空应该填huiwen(str)。

23.共享性共享性解析:数据库技术的主要特点有以下几个方面:数据的集成性,数据的高共享性与低冗余性,数据的独立性,数据统—管理与控制。

24.55解析:此程序中,for循环语句后面直接跟了一个“;”,表明循环体为空.输出语句不在for循环体内,所以在循环执行完毕后才输出s的值.s、i的初值分别为0和1,判断循环条件,表达式“1<3”成立,执行“i++,s+=i”后,i和s的值分别为2和1,继续判断循环条件,表达式“2<3”成立,执行“i++,s+=i”后,i和s的值分别为3,再次判断循环条件,表达式“3<3”不成立,循环结束。

25.adf

26.length++i<lengthlength++\r\ni<length解析:第—个循环极有可能是计算串的长度,在i<=length时字符才被删除,被删除的是从第i个到第i+n或最后—个间的所有字符。删除前,应判断i<=length。由于已经进行了-i运算,故实际应填入i<length。

27.白盒或白箱或白盒子或WhiteBox白盒或白箱或白盒子或WhiteBox解析:本题考查软件工程的测试。测试一般有两种方法:黑盒测试和白盒测试。黑盒测试不考虑程序的内部逻辑结构和处理过程,只着眼于程序的外部特性。用黑盒测试来发现程序中的错误,必须用所有可能的输入数据来检查程序能否都能产生正确的输出。白盒测试是在了解程序内部结构和处理过程的基础上,对程序的所有路径进行测试,检查路径是否都能按预定要求正确工作。因此,划线处应填入“白盒(箱)”或“WhiteBox”。

28.sizeof(structst)*50sizeof(structst)*50解析:fwrite函数的一般调用形式为:fwrite(buffer,size,count,fp);其中:buffer是一个指针变量,是要输出数据的起始地址;size是要写的字节数;count是要写多少个size字节的数据项;fp是文件指针。

29.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查逻辑表达。年号能被4整除(y%4==0)但不能被100整除(y%100!=0),两者是与的关系,年号能被400整除即y%400==0,与前两项是或的关系。

30.b[i][0]b[i][0]解析:因为要将a的最后一行放在b的第0列中,【】应填b的第0列的元素。

31.fopen!feof(fp)fopen\r\n!feof(fp)解析:第一空从右边的括号中可以看出,这里应该填入一个fopen,整条语句用来打开一个名为text.dat的文件。第二空是一个while循环的循环条件表达式,循环体每次读取一个字符,并让count增1,所以循环条件应该是“如果文件还没结束”,故应该填!feof(fp)。

32.77解析:如果局部变量与全局变量重名,在局部变量的作用域,全局变量不起作用。所以在main函数中第一次调整函数f时a=5得s=5,第二次调用函数f时a=2得s=5+2=7。函数f在执行语句return(*A)++时首先返回*A,然后将*A的值加1。

33.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。

34.45794579解析:本题考查的是条件判断语句。本题特别需要注意的是“;”的问题,不能把“t=a;a=c;c=t;”误认为是第一个if的语句,实际上,只有“t=a;”才是第一个if的语句。所以判断第一个if语句的表达式不成立后,执行的是“a=c;c=t;”,此时a=5,c=79。然后判断第二个if语句的条件表达式,表达式成立,执行后面的3条语句,让a、b、c分别为4、5和79。

35.功能模型功能模型

36.存储结构存储结构解析:带链的栈属于栈的链式存储结构。

37.1212解析:循环语句中,表达式num%10是取num的个位。循环直至num为0结束,这是逐一求出num+进制表示的各位数字,并累乘于变量k中。函数最后返回k,所以程序输出12。

38.5685,6,8解析:首先要清楚当满足第1个if的判断条件时只执行一条语句“s=a;”,当满足第2个if的判断条件时执行一条复合语句“{s=a;a=c;b=s};”,当满足第3个if的判断条件时只执行一条语句“s=b;”。执行程序:判断a>b,由于a=3,b=5则3>5为假,不执行“s=a;”,执行“a=b;”和“b=s;”,则a=5,b=8。判断a>c,由于a=5,c=6则5>6为假,不执行“{s=a;a=c;b=s};”。判断b>c,由于b=5,c=6则5>6为假,不执行“s=b;”,执行“b=c;”和“c=s;”,则b=6,c=8。最后输出5,6,8。

39.tc

40.8208,20解析:本题考查while循环和++运算符的运用。x=0符合条件x<15,则执行y++,x+=++y后,y=1,x=0+2=2后y=2,符合条件继续循环,y=3,x=x+4=6后y=4,再循环y=5,x=x+6=6+6=12后,y=6,继续循环y=7,x=x+8=12+8-20,此时y=8。

41.D解析:本题考查指针变量的赋值。

**pp是定义了一个指向指针的指针变量,语句pp=&p的意思是将pp指向指针p,*p和**pp都是指针p所指的内存空间的内容,即b的值。

42.B解析:根据数据库物理设计的概念可知:为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构的过程,就是数据库的物理设计。数据库的物理结构就是指数据库在物理设备上的存储结构与存取方法。

43.B

44.C解析:统计1~9九个数中的奇数和,此题考察指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是1+2+3+4+5+6+7+8+9=25。

45.C解析:“\\b”格式符表示退格,功能是将它后面的字母把它前面的字母覆盖,导致“\\b'’格式符前面的字母不能输出;“\\'”格式符表示输出单引号字符;“\\\\”格式符表示输出反斜线字符。

46.C解析:#define宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用#undef命令终止宏定义的作用域。本题由于#undef的作用,使a的作用范围在#definea100到#undefa之间,故答案为C。

47.A解析:本题考查C语言的综合基础知识。构成C程序的基本单位是函数,一个C程序总是从main函数开始执行,而不论main函数在整个程序中的位置如何。C语言的函数定义都是互相平行、独立的,在定义函数时,一个函数内不能定义另一个函数。C函数定义的一般格式有两种:传统格式和现代格式。传统格式也称K&R格式,是早期编译系统使用的格式;现代格式又称ANSI格式,是现代编译系统使用的格式。

48.B解析:本题考查二维数组元素的引用。二维数组可以看成是一个矩阵,aa[i][2]其实就是第i行的第3个元素,for循环内的s+=aa[i][2]其实就是将矩阵第3列的数相加,即s=3+1+10+5=19。

49.B解析:本题考查循环辅助控制语句break和continue,前者退出整个for循环,后者跳过本次循环没有执行完的若干条语句,开始下一次循环操作,建议读者采用本书推荐的列表法分析。

50.C解析:本题考查if语句。第一个if语句,先判断条件,发现a<b不成立,不再执行下列的语句,直接执行最后的printf输出语句,然后结束程序,整个过程c的值没有发生变化。

51.B解析:对二又树的中序遍历是指:首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左,右子树时,注意依旧按照“左子树—根结点—右于树”的顺序。

52.D解析:表达式a+=a-=a*a看起来复杂,其实将它分成两个表达式来计算就简单了:①第一个表达式(a-=a*a)=(a=a-a*a=-12);②第二个表达式(a+=a-=a*a)=(a=a+a=-24)。

53.C解析:内聚有很多种类,其中内聚性由弱到强的顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚。

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

55.A解析:观察题目,可以发现,*p=&aa[0][0]语句实际是将数组aa的首地址赋给了指针变量p,将i的值带入for循环中,i=0时,aa[0][1]=3,*p=2;*p输出的是指针所指向的数组值,此时p所指向的是aa[O][0],输出2,而i=1时执行了++p操作使指针向后移动指向了aa[0][1],所以在输出*p时应为3。

56.C

57.B解析:在scanf函数的格式控制中,格式说明的类型与输入项的类型必须一一对应匹配,如不匹配将导致数据输入出现错误,但是系统并不报错。

58.C解析:软件生命周期由软件定义、软件开发和软件维护三个时期组成,每个时期又进一步划分为若干个阶段。软件定义时期的基本任务是确定软件系统的工程需求。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由下面五个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。即当软件在使用过程中发现错误时应加以改正;当环境改变时应该修改软件,以适应新的环境;当用户有新要求时应该及时改进软件,以满足用户的新要求。根据上述对软件生命周期的介绍,可知选项C中的软件维护不是软件生命周期开发阶段的任务。因此,本题的正确答案是C。

59.D解析:结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加即可。

60.C解析:第1次循环执行情况如下:

i=1,x=1,判断i<=36为真执行循环体。

x=1,判断x>=20为假。

判断x%5==1为真,执行x+=5;x值为6,执行continue;跳过本次循环余下的语句,即不执行X-=5:。

执行i++,i=2。

第2次循环执行情况如下:

i=2,判断i<=36为真执行循环体。

x=6,判断x>=20为假。

判断x%5==1为真,执行x+=5:x值为11,执行continue;跳过本次循环余下的语句,即不执行X-=5;。

执行i++,i=3。

第3次循环执行情况如下:

i=3,判断i<=36为真执行循环体。

x=11,判断x>=20为假。

判断x%5==1为真,执行x+=5;x值为16,执行continue;跳过本次循环余下的语句,即不执行X-=5:。

执行i++,i=4。

第4次循环执行情况如下:

i=4,判断i<=36为真执行循环体。

x=16,判断x>=20为假。

判断x%5==l为真,执行x+=5;x值为21,执行continue;跳过本次循环余下的语句,即不执行X-=5;。

执行i++,i=5。

第5次循环执行情况如下:

i=5,判断i<=36为真执行循环体。

x=21,判断x>=20为真。

执行break;,跳出循环体,即结束循环。最后i=5,选项C正确。

61.Cp指向aa的首地址,++p->x首先取x的值,再增1,即50+1;(++p)->x使p指向下一元素,然后取其值,即60,++(*p->y)取y指向的值,即20,然后增1,即20+1

62.B

63.A当y为。时,y--表达式为0,条件为假,循环结束,执行判断条件后v为一l,所以选择A)。

64.B本题考查的是循环嵌套。在一个循环体内又完整地包含了另一个循环,称为循环嵌套。外循环i的值分别为1、2、3,当i=1,内循环J=1时,输出1*1=1;当内循环j=2时,输出l*2=2;当内循环j=3时,输出l*3=3,此时跳出内层for循环打印换行符”\n”;当i=2

温馨提示

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

最新文档

评论

0/150

提交评论