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

下载本文档

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

文档简介

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

一、单选题(20题)1.

2.判断一个循环队列cq(最多元素为m)为满的条件是()。

A.cq->rear-cq-front=m;

B.(cq->rear+1)%m=cq->front;

C.cq->front=cq->rear;

D.cq->rear=m-1;

3.有3个节点的二叉树可能有()种。

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

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

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

5.有以下程序:#include<stdio.h>main(){intx=072;printf(“>%d<\n”,x+1);}程序运行后的输出结果是()。

A.>073<B.>73<C.>142<D.>59<

6.A[N][N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是()。

A.i(i-1)/2+jB.j(j-1)/2+iC.i(j-i)/2+1D.j(i-1)/2+1

7.设有以下定义:inta=0;doubleb=1.25;charc='A';#defined2则下面语句中错误的是()。

A.a++;B.b++;C.c++;D.d++;

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

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

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

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

9.有以下程序(注:字符a的ASCII值为97):#include<stdio.h>main(){char*s={“abc”};do{printf(“%d”,*s%10);++s;}while(*s);}程序的运行结果是()。

A.789B.abcC.7890D.979899

10.以下关于算法的叙述中错误的是()。

A.算法可以用伪代码、流程图等多种形式来描述

B.一个正确的算法必须有输入

C.一个正确的算法必须有输出

D.用流程图描述的算法可以用任何一种计算机高级语言编写成程序代码

11.一个栈的进栈序列是a,b,c,d,e,则栈的不可能的输出序列是()。

A.edcbaB.decbaC.dceabD.abcde

12.若执行以下程序时从键盘上输入9,则输出结果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8

13.以下函数的时间复杂度和空间复杂度为()A.T(n)=O(2^n),S(n)=O(n)

B.T(n)=O(1),S(n)=O(1)

C.T(n)=O(2^n),S(n)=O(1)

D.T(n)=O(n),S(n)=O(n)

14.下而程序的输出结果是()。

A)32

B)26

C)24

D)4

15.数据流图中带有箭头的线段表示的是()。

A.控制流B.事件驱动C.模块调用D.数据流

16.若要求从键盘读入含有空格字符的字符串,应使用函数

A.getc()B.gets()C.getehar()D.scanf()

17.有以下程序:#include<stdio.h>main(){charch[]=“uvwxyz”,*pc;pc=ch;printf(“%c\n”,*(pc+5));}程序的运行结果是()

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

18.若已包括头文件且已有定义charsl[18],s2={"ABCDE")和inti,现要将字符串”ABCDE”赋给sl,下列语句错误的是()。

A.strcpy(s1,s2)

B.strcpy(s1,"ABCDE");

C.sl="ABCDE";

D.for(i=0;i<6;i++)sl[i]=s2[i]

19.递归式的先序遍历一个n节点,深度为d的二叉树,则需要栈空间的大小为()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

20.

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

main()

{intarr[10],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

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

22.软件生命周期包括8个阶段。为了使各时期的任务更明确,又可分为3个时期:软件定义期、软件开发期、软件维护期。编码和测试属于【】期。

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

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

24.在先左后右的原贝吓,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、【】遍历和后序遍历。

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

main()

{charc;intn=100;

loatf=10;doublex;

x=f*=n/=(c=50);

printf("%d%f\n",n,x);

}

26.若a=l,b=2,则表达式!(x=a)||y=b)&&0的值是______。

27.软件工程研究的内容主要包括:【】技术和软件工程管理。

28.若从键盘输入58,则以下程序输出的结果是______。

main{)

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

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

30.以下程序的定义语句中,x[1]的初值是[9],程序运行后输出的内容是[10]。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

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

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");

}

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

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

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

{for(j=0;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

32.数据模型按不同应用层次分成三种类型,它们是概念数据模型、【】和物理数据模型。

33.下列程序执行后输出的结果是【】。

f(inta)

{staticc=0;

c=a+c++;

return(c);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

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

voidsstrcpy(char*s,char*t)

{while(*s++=______);}

main()

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

sstrcpy(str1,str2);

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

}

35.C语言用于结构化程序设计的3种基本结构是______、选择结构和循环结构。

36.下面程序的输出是()。

main()

{intarr[8],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

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

}

37.在数据库理论中,数据库总体逻辑结构的改变,如修改数据模式、增加新的数据类型、改变数据间联系等,不需要修改相应的应用程序,称为【】。

38.以下程序的运行结果是______。

structexmp{charname[10];

intnumber;

};

structexmptest[3]={{"WangXi",1},{"QiYu",2},{"HuHua",3}};

main()

{printf("%c,%s\n",test[0].name[1],test[2].name+3);

}

39.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值。请填空。

intadd(intx,inty,【】,)

{【】=x+y;}

40.设y为血型变量,请写出描述“y是偶数”的表达式______。

三、1.选择题(20题)41.______是构成C语言程序的基本单位。

A.函数B.过程C.子程序D.子例程

42.若有如下程序:main(){intn;for(n=0;n<9;n++){if(n<1){printf("%d",n);continue;}if(n==4)break;printf("%d",n);}}则循环体执行的次数是()。

A.1B.5C.9D.死循环

43.有以下等程序#include<string.h>voidf(char*s,char*t){chark;k=*s;*s=*t;*t=k;s++;t--;if(*s)f(s,t);}main(){charstt[10]="abcdefg",*p;p=str+strlen(str)/2+1;f(p,p-2);printf("%s\n",str);}

A.abcdefgB.gfedcbaC.gbcdefaD.abedcfg

44.结构化程序设计主要强调的是

A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性

45.内聚性是对模块功能强度的衡量,下列选项中,内聚性较弱的是()

A.顺序内聚B.偶然内聚C.时间内聚D.逻辑内聚

46.设p1和p2是指向一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是

A.k=*p1+*p2B.p2=k;C.p1=p2;D.k=*p1*(*p2);

47.模块本身的内聚是模块独立性的重要性度量因素之一。在7类内聚中,具有最强内聚的一类是__________。

A.顺序性内聚B.过程性内聚C.逻辑性内聚D.功能性内聚

48.若有以下定义,则正确的swish语句是______。floatx;inta,b;

A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}

B.switch(x){case1,2:printf("*\n");case3:printf("**\n");}

C.switch(a+b){case1:printf("\n");case1+2:printf("**\n");}

D.switch(a+b);{case1:printf("*\n");case2:printf("**\n");}

49.设有定义语句int(*f)(int);,则以下叙述正确的是()。

A.f是基类型为int的指针变量

B.f是指向函数的指针变量,该函数具有一个int类型的形参

C.f是指向int类型一维数组的指针变量

D.f是函数名,该函数的返回值是基类型为int类型的地址

50.以下不正确的定义语句是

A.doublex[5]={2.0,4.0,6.0,8.0,10.0};

B.inty[5]={0,1,3,5,7,9};

C.charc1[]={′1′,′2′,′3′,′4′,′5′};

D.charc2[]={′\x10′,′xa′,′\x8′};

51.下面叙述正确的是______。A.算法的执行效率与数据的存储结构无关

B.算法的空间复杂度是指算法程序中指令(或语句)的条数

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.以上三种描述都不对

52.应用数据库的主要目的是A.A.解决数据保密问题

B.解决数据完整性问题

C.解决数据共享问题

D.解决数据量大的问题

53.请读程序:#include<stdio.h>main(){inta;floatb,c;scanf("%2d%3t%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c);}若运行时从键盘上输入(图片),则上面程序的输出结果是______。

A.a=98,b=765,c=4321

B.a=10,b=432,c=8765

C.a=98,b=765.000000,c=4321.000000

D.a=98,b=765.0,c=4321.0

54.有如下程序:main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n)printf("%d\n",s);}若要使程序输出2,则应该从键盘输入的值是______。

A.-1B.-3C.-5D.0

55.有以下程序:#include<string.h>main(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%d\n",strlen(p),strlen(q));}以下叙述中正确的是()。

A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3

B.由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3

C.由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3

D.由于p和q数组中都没有字符串结束符,故长度都不能确定

56.下列表达式中,可以正确表示x≤0或x≥1的关系是()。

A.(x>=1)‖(x<=0)

B.x>1‖x=0

C.x>=1ORx<=0

D.x>=1&&x<=0

57.设有结构体类型定义:structtry{intone;floattwo;}*str;若要动态开辟一个结构单元,使指针str指向其首地址,正确的语句是______。

A.str=(try*)malloc(sizeof(try));

B.*str=(structtry*)malloc(sizeof(structtry));

C.str=(strucytry*)malloc(sizeof(structtry));

D.str=(structry)malloc(sizeof(structtry));

58.当执行下面的语句定义一维数组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]

59.有以下程序段intn=0,p;do{scanf(“%d”,&p);n++;}while(p!=12345&&n<3);此处do-while循环的结束条件是

A.P的值不等于12345并且n的值小于3

B.P的值等于12345并且n的值大于等于3

C.P的值不等于12345或者n的值小于3

D.P的值等于12345或者n的值大于等于3

60.下列选项中不屑于C语言数据类型的是()

A.整型B.逻辑型C.双精度型D.枚举型

四、选择题(20题)61.已定义以下函数:

fun(char*p2,char*p1)

{while((*p2=*p1)!=’\0’){p1++;p2++;}}

函数的功能是()。

A.将p1所指字符串复制到p2所指向内存空间

B.将p1所指字符串的地址赋给指针p2

C.对p1和p2两个指针所指字符串进行比较

D.检查p1和p2两个指针所指字符串中是否有’\0’

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

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

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

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

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

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

64.以下程序段完全正确的是()。

A.int*p;scanf(”%d”,&p);

B.int*p;scanf(”%d”,P);

C.intk,*P:&k;scanf(’’%d”,P);

D.intk,*p;*P=&k;scanf(”%d”,P);

65.

A.*P=*q;B.P=q;C.*P=&nl;D.P=*q;

66.以下函数返回a所指数组中最大值所在的下标值

fun(int*a,intn)

{

inti,j=0,p;

p=j;

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

if(a[i]>a[p])_________;

return(p);

}

在下画线处应填入的内容是

A.i=pB.a[p]=a[i]

C.p=iD.p=j

67.

68.

69.

70.

71.以下叙述中错误的是()。

A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B)数组名代表的是数组所占存储区的首地址,其值不可改变

C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界的出错信息”

D)可以通过赋初值的方式确定数组元素的个数

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

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

73.

74.下面描述中,不属于软件危机表现的是()A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高

75.有以下程序

#include"stdio.h"

main()

{charstr[]="tomeetme",str1[]="toseeyou";

char*p=str,*p1=str1;

inti;

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

if(*(p+i)==*(p1+i))

putchar(*(p+i));

printf("\n");

}

程序的运行结果是

A.to

B.tomeet

C.toee

D.程序段不能通过编译

76.

77.有以下程序:

#include<stdio.h>

main()

{intx=1,y=0;

if(!x)y++;

elseif(x==0)

if(x)y+=2;

elsey+=3;

Drintf("%d\n"。v);

}

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

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

78.

79.链表不具有的特点是()。

A.不必事先估计存储空间B.可随机访问任意元素C.插入、删除不需要移动元素D.所需空间与线性表长度成正比

80.面向对象方法中,继承是指()。

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

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。

例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

六、程序设计题(1题)82.请编写函数proc(),它的功能是:求出str所指字符串中指定字符的个数,并返回此值。例如,若输入字符串12341234123,输入字符4,则输出2。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B

2.B

3.C

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

5.D题干中x是一个整型变量,赋值为072。以0开头的整数是八进制的表示形式。printf函数中,格式字符%d表示以十进制形式输出“x+1”,所以需要将072转换成十进制数,即7×8+2=58,输出“x+1”为59。故本题答案为D选项。

6.B

7.D解析:本题考核的知识点是在自加运算符的运算对象。自加运算对象可以是整型变量也可以是实型变量,但不能是表达式和常量。本题中,#defined2定义了d为常数2,不能在对d进行自加运算.故选项D是个不正确的语句,所以,4个选项中选项D符合题意。

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

9.A因为小写字符a、b、c的ASCII值分别为97、98、99。在dowhile循环语句中,每次对字符的ASCII值取余数并输出,所以分别输出7、8、9。故本题答案为A选项。

10.B【答案】B

【知识点】算法描述

【解析】一个算法应该有0个或多个输入,但是必须有一个或多个输出。

11.C

12.B当n为9时,此时if语句成立,执行n++后,n为10,因此输出n的值为10,故选择B选项。

13.A

14.C本题考查的是联合所占的存储空间。sizeof(t)=sizeof(douhle)*3=8*3=24。联合体所占的存储空间取决于所占空间最大的成员所占的空间。

15.D解析:数据流图是描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统的功能建模。数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要的图形元素与说明如下:

加工(转换):输入数据经加工变换产生输出。

数据流:沿箭头方向传送数据的通道,一般在旁边标注数据流名。

存储文件(数据源):表示处理过程中存放各种数据的文件。

源,潭:表示系统和环境的接口,属系统之外的实体。

16.B解析:scanf()语句用“空格”区别不同的字符串;getc()与getchar()语句不能用于字符串的读入。

17.A语句“pc=ch;”使得指针变量pc指向字符数组ch的首地址,即指向字符‘u’。而“pc+5”指向的是指针向后移动5位所指的字符,即指向字符‘z’,所以输出的“*(pc+5)”的值为‘z’。故本题答案为A选项。

18.C数组名sl是代表sl数组首地址的地址常量,因为“=”左边不能出现常量,所以s1="ABCDE"的方法是错误的。

19.D

20.D

21.1212解析:本题通过第一个for循坪将数组arr[0]-arr[9]分别赋值为0-9,通过第二个for循环的三次循环累加,求出结果为12,具体分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

22.软件开发软件开发解析:软件生命周期可以分为3个时期:软件定义期,包括问题定义、可行性研究和需求分析3个阶段;软件开发期,包括系统设计、详细设计、编码和测试4个阶段;软件维护期,即运行维护阶段。编码和测试属于软件开发阶段。

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

24.中序中序解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。前疗遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树;并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然先遍历右子树,然后访问根结点,最后遍历左子树。

25.0

26.00解析:根据运算符的运算顺序可知,该表达式最后运算的是与(&&)运算,而任何表达式与“0”进行“与”运算,结果都为0。

27.软件开发

28.585858585858解析:在程序中,执行scanf()语句后,a被赋值为58。接着执行第一个if语句,因为,a=58>50,执行第一个订语句后面的输出语句,输出58;接着执行第二个if语句,因为,a=58>4O,执行第二个if语句后面的输出语句,输出58;接着执行第三个if语句,因为,a=58>30,执行第三个if语句后面的输出语句,输出58,所以最后的输出为585858。

29.封装封装

30.在主函数中根据整型数组x[]的定义可知,x[1]的初值等于2。在for循环语句中;当i=0时,p[0]=&x[1],p[0][0]=2;当i=1时,P[1];&x[3],p[1][0]=4;当i=2时,p[2]=及x[5],p[2][0]=6;当i=3时,p[3]=&x[7],p[3][0]=8,所以程序输出的结果为2、4、6、8。\r\n\r\n

31.123056009123\r\n056\r\n009解析:数组a中元素的初值为:a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[12][0]=7、a[2][1]=8、a[2][2]=9。执行第1个for循环后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2个for循环的功能是将数组元素按照3行3列的格式输出。

32.逻辑数据模型逻辑数据模型解析:数据模型按不同的应用层次分成三种类型,它们是概念数据模型、逻辑数据模型、物理数据模型。

33.77解析:在程序执行时,static变量仅初始化一次,下次使用时将使用上次保存的值。

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

35.顺序结构顺序结构解析:结构化程序有3种摹本结构,即顺序结构、选择结构(包括if语句和switch语句)和循环结构(包括for语句、while语句、do…while语句)。

36.20

37.逻辑独立性逻辑独立性解析:数据库总体逻辑结构改变,而不需要相应修改应用程序叫做逻辑独立性。

38.aua。a,ua。解析:test是结构体数组,每个元素均可看作是一个结构体变量,主函数将结构体数组元素test[0]中的name域下标为1的元素以字符形式输出,将结构体数组元素test[2]中的name域从地址name+3开始以字符串的形式输出。

39.int*p*p或p[0]int*p\r\n*p或p[0]

40.(y%2)==0(y%2)==0解析:因符合偶数的条件是对2取余为0,所以要描述y是偶数的表达式是(y%2)==0。

41.A解析:C程序是由函数构成的。—个C源程序至少包含—个main函数,也可以包含—个main函数和若干个其他函数,因此,函数是C程序的基本单位。

42.B解析:因为在循环中存在一条这样的语句“if(n=4)break;”,所以循环变量n递增到4的时候循环会被强行结束。故一共循环了5次,每次n的值分别为0、1、2、3、4。应该选择B。

43.B解析:本题考查的是递归函数。在一个函数中直接或间接地调用了自身,则称此函数为递归函数。本题定义的函数f()就是一个递归函数。它先交换两个字符指针所指的内容,然后将第1个指针往后移动一位,第2个指针往前移动一位,如果第1个指针所指内容不是字符串结束标志,则递归调用自身。主函数中首先定义了一个字符数组sTR[10]='abcdefg',然后定义了一个字符指针p=str+strlen(str)/2+1,即让p指向str+4(或&str[4])的位置.然后调用f(p,p-2);,这使得p所指的str[4]及其以后的2个位置str[5]、str[6]中的内容同p-2所指的3tr[2]及其以前的2个位置str[1]、str[0]中的内容互相交换。即让整个字符串逆序。所以本题应该选择B。

44.D结构化程序设计由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主张“清晰第一,效率第二”,以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,为设计一些较大的软件打下了良好的基础。

由于模块相互独立,因此,在设计其中一个模块时,不会受到其他模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为可以充分利用现有的模块作为积木式的扩展。

结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;“单入口单出口”的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序。

45.BB)【解析】内聚是从功能角度来衡量模块的联系,它描述的是模块内的功能联系。内聚有如下种类,它们之间的内聚度由弱到强排列:

偶然内聚——模块中的代码无法定义其不同功能的调用。但它使该模块能执行不同的功能,这种模块为巧合强度模块。

逻辑内聚——这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的参数来确定该模块应完成哪一种功能。

时间内聚——这种模块顺序完成一类相关功能,比如初始化模块,它顺序地为变量置初值。

过程内聚——如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。

通信内聚——这种模块除了具有过程内聚的特点外,还有另外一种关系,即它的所有功能都通过使用公用数据而发生关系。

顺序内聚——如果一个模块内各个处理元素和同一个功能密切相关,而且这些处理必须顺序执行,处理元素的输出数据作为下一个处理元素的输入数据,则称为顺序内聚。

功能内聚——如果一个模块包括为完成某一具体任务所必需的所有成分,或者说模块中所有成分结合起来是为了完成一个具体的任务,此模块则为功能内聚模块。

46.B解析:本题主要考查了一维数组指针的赋值和用指针引用数组元素进行运算。选项B)中p2为指向int型变量的指针。而k为int型变量,不能将int型变量直接赋值给指向int型变量的指针,所以选项B)错误。

47.D解析:内聚性是一个模块内部各元素间彼此结合的紧密程度的度量。内聚是从功能角度来度量模块内的联系。内聚共有7类,它们之㈨的内聚性由弱到强排列顺序为:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。

48.C解析:switch后必须是整型或字符型的表达式,因此选项A、B错误;表达式的括号外没有分号,因此选项D错误。

49.B本题考查的是指向函数的指针。语句“int(*f)(int);”是对一个函数的声明,其中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。故答案选B)。

50.B解析:在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。

51.C解析:算法的执行效率与数据的逻辑结构和存储结构都有很紧密的关系。算法的空间复杂度是指执行该算法需要的内存空间,并非算法程序中指令的条数。算法一般应该具有以下4个特征:可行性、确定性、有穷性和拥有足够情报。其中,有穷性是指算法必须能在执行有限个步骤之后终止,否则可能失去实际意义。

52.C数据库是对数据进行操作和管理的,可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。数据库可以被直观地理解为存放数据的仓库,数据库可以对大量数据进行管理和应用。一个应用数据库的主要目的就是要实现数据的共享,能使应用数据库的数据被大量用户使用。

53.C解析:scanf()把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf()遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。

54.B解析:本题中如果printf函数输出为2,需要执行两次s+=1语句,第一次执行完循环语句后得s=1、a=1-2=-1,第二次执行完循环语句后得s=1+1=2、a=-1-2=-3,所以正确答案为-3。

55.A解析:在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组p和q都有3个字符,所以长度均为3。

56.A解析:题中要求x的取值是小于等于0或者大于等于1,这说明表达式是或的关系,所以在写成C语言表达式应是逻辑或的关系,逻辑或运算符是“‖”。

57.C解析:由于在ANSIC中malloc函数返回的地址为void,故在调用函数时,必须利用强制类型转换将其转换成所需的类型。

58.B

59.D解析:本题考查的知识点是do-while循环结构循环执行条件的判断.使用do-while语句必须注意以下几点:

先执行语句,后判断表达式。所以,无论一开始表达式的值为“真”还是“假”,循环体中的语句至少执行一次,这一点与while不同,

如果do-while语句循环体部分是由多个语句组成,则必须用花括号括起来,使其形成复合语句。

C语言中的do—while语句是在表达式“真”时重复执行循环体。

在本题中,循环执行判断条件为while后面括号里的表达式即p!=12345&&n<3(意思为p不等于12345且n小于3)是否为“真”,由此可得循环结束的条件为:p大于12345或者p小于12345又或者n大于等于3。选项A的意思是:p的值不等于12345并且n的小于3和while后面括号里的表达式等价是循环执行的条件而不是循环结束的条件,所以选项A不正确;选项B的意思是:p的值等于12345并且n的值大于3,不是循环结束的条件一个子集,所以选项B不正确

温馨提示

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

评论

0/150

提交评论