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

下载本文档

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

文档简介

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

一、单选题(20题)1.在C语言中,函数隐含的类型是()

A.autoB.staticC.intD.void

2.当执行下面的程序时,如果输入ABC,则输出结罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789

3.有以下程序

#include<stdio.h>

main()

{structnode{intn;structnode*next;}*p;

structnodex[3]={{2,x+1},{4,x+2},{6,NULL}};

p=x:

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

printf("%d\n",P->next->n);

}

程序运行后的输出结果是A.A.2,3B.2,4C.3,4D.4,6

4.有以下程序:#include<stdio.h>intfun(int*a,int*b,intn){inti=0,j=0,sum=0;for(;i<n;i++){sum+=a[i];if((i+1)%2==0){b[j++]=sum;sum=0;}}returnj;}main(){inta[8]={1,0,2,3,5,4,2,1},b[8],k,i;k=fun(a,b,8);for(i=0;i<k;i++)printf(“%d”,b[i]);}程序的运行结果是()。

A.0242B.1593C.1351D.286

5.程序运行后的输出结果是()。A.0304.B.2050C.3344D.3040

6.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为()

A.100B.40C.55D.80

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

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

8.设变量n为f1oat类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五人运算的表达式是()。

A.n=(n*100+0.5)/100.0

B.m=n*100+0.5,n=m/100.0

C.n=n*100+0.5/100.0

D.n=(n/100+0.5)*100.0

9.

10.下面的排序算法中初始数据集的排列顺序对算法的性能无影响的是()A.插入排序B.堆排序C.冒泡排序D.快速排序

11.软件调试的目的是______。

A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能

12.

13.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}运行该程序的输出结果是______。

A.34B.42C.43D.33

14.有说明语句“inta,b;”,如果输入111222333,使得a的值为111,b的值为333,则以下正确的语句是()。A.scanf("%3d%*3d%3d",&a,&b);

B.scanf("%*3d%3d%3d",&a,&b);

C.scanf("%3d%3d%*3d",&a,&b);

D.scanf("%3d%*2d%3d",&a,&b);

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

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

16.若有定义:typedefint*(*T[10])[10];Tb;则以下选项中所定义的a与上述定义中的b,其类型完全相同的是()。

A.int*(*a[10][10]);

B.int**a[10][10];

C.int*(a[10])[10];

D.int*(*a[10])[10];

17.设有定义:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函数fun返回值的类型是()。

A.T类型的结构体B.指向结构体类型的指针C.int类型的元素D.int类型的指针

18.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是()

A.cedbAB.acbeDC.decaBD.deabC

19.有以下程序:#include<stdio.h>intfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=3;i++)s*=fun();printf(“%d\n”,s);}程序的运行结果是()。

A.10B.30C.0D.64

20.设”inta=12;”,则执行完语句”a+=a*a;”后,a的值是()。

A.12B.144C.156D.288

二、2.填空题(20题)21.以下程序运行后的输出结果是______。

main()

{

intx=10,y=20,t=0

if(x==y)t=x;x=y;y=t;

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

}

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

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

23.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。

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

main()

{unsignedshorta=65536;intb;

printfC%d\n",b=a);

}

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

#include<stdio.h>

intfun(intx)

{intp;

if(x==0‖x==1)

return3;

else

p=x-fun(x-2);

returnp;

}

voidmain()

{printf("\n%d",fun(11));

}

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

#include<string.h>

cbar*ss(char*s)

{char*p,t;

p=s+1;t=*s;

while(-p){*(p-1)=*p;p++;}

*(p-1)=t;

returns;

}

main()

{char*p,str[10]="abcdefgh";

p=ss(str);

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

}

27.在数据库的概念结构设计中,常用的描述工具是【】。

28.下面程序的运行结果是()。

#defineEXCH(a,B){intt;t=a;a=b;b=t;}

main()

{intx=1,y=2;

EXCH(x,y);

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

}

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

#include<stdio.h>

sb(ints[],intb)

{staticintn=3;

b=s[n];

n--;

return(b);

}

main()

{ints[]={1,5,6,8};

inti,x=0;

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

{x=sb(s,x);

printf("%d",x);

}

printf("\n");

}

30.按数据流的类型,结构化设计方法有两种设计策略,它们是变换分析设计和______。

31.用指针法求出数组元素中最大者和最小者。

intmax,min;

voidmax_min_value(array,n)

intarray[],n;

{【】;

max=min=*array;

for(【】;p<array+n;p++)

if(*p>max)max=*p;

elseif(*p<min)min=*p;

}

main()

{inti,number[20],*p;

p=number;

printf("输入20个数据:\n");

for(i=0;i<20;i++,p++)scanf("%d",p);

【】;

max_min_value(p,10);

printf("max=%-10dmin=%d\n",max,rain);

}

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

#include<stdio,h>

#include<string,h>

char*huiwen(char*str)

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

p1=str;p2=【】;

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

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

if(【】)return("yes!");

elsereturn("no!");

}

main(){charstr[50];

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

printf("%s\n",【】);

33.若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是【】。

chara[10],b;scanf("a=%sb=%c",a,&b);

34.注释说明了程序的功能,它分为【】注释和功能性注释。

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

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

37.fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大数,再求这N个最大值中的最小的那个数作为函数值返回。请填空______。

#include<stdio.h>

#defineN100

intfun(int(*a)[N])

{

introw,col,max,min;

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

for(max=a[row][0],col=1;col<N;col++)

if()max=a[row][col];

if(row==0)min=max;

elseif()min=max;

returnmin;

}

38.若有以下程序:

intf(intx,inty)

{

return(y-x)*x;

}

main()

{

inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

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

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

#definePR(ar)printf("ar=%d",ar)

main()

{intj,a[]={1,3,5,7,9,1l,13,1},*p=a+5;

for(j=3;j;j--)

switch(j)

{case1:

case2:PR(*p++);break;

case3:PR(*(--p));}}

40.以下程序的功能是:通过函数func输入字符并统计输入字符的个数。输入时用字符作为输入结束标志。请填空。#include<stdio.h>long();/*函数说明语句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}

三、1.选择题(20题)41.需求分析阶段的任务是确定()

A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能

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

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

43.以下程序运行后的输出结果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}

A.699B.669C.61515D.6615

44.下列程序运行后,输出结果是______。main(){charch[2][5]={"693","825"),*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>='0'&&p[i][j]<='9';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}

A.6385B.22C.33D.693825

45.以下程序的输出结果是______。#include<stdio.h>voidprt(int.*x,int*y,int*z){printf("%d,%d,%d\n",++*x,++*y,*(z++));}inta=10,b=40,c=20;main(){prt(&a,&b&c);prt(&a,&b,&c);}

A.11,42,3112,22,41

B.11,41,2012,42,20

C.11,21,4011,21,41

D.11,41,2112,42,22

46.执行以下程序段后,w的值为()。intw='A',x=14,y=15;w=((x||y)&&(w<'a'));

A.-1B.NULLC.1D.0

47.下列程序的输出结果是#include"stdio.h"main(){inti,a=0,b=0;for(i=1;i<10;i++){if(i%2==0){a++;continue;}b++;}printf("a=%d,b=%d",a,b);}

A.a=4,b=4B.a=4,b=5C.a=5,b=4D.a=5,b=5

48.有以下函数:charfun(char*p){returnP;}该函数的返回值是()。

A.无确切的值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值

49.若有说明:intn=2,*p=&n,*q=p;,则以下非法的赋值语句是

A.p=q;B.*p=*q;C.n=*q;D.p=n;

50.若变量a,b已正确定义,且b已正确赋值,则合法的语句是()。

A.b=double(b);B.++b;C.a=a++5;D.a=double(b);

51.以下的for循环()for(x=0,y=0;(y!=123)&&(x<4);x++)

A.是无限循环B.循环次数不定C.执行4次D.执行3次

52.定义如下变量和数组:

inti;

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

则下面语句的输出结果是()。

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

printf("%d",x[i][2-i]);

A.159B.147C.357D.369

53.下列程序的执行结果是()。#include<stdio.h>main(){inta,b,c;a=b=2;c=(a++)-1;printf("%d,%d",a,c);c+=-a+++(++b);printf("%d,%d",a,c);}

A.3,14,1B.3,14,2C.2,04,1D.2,14,1

54.若有定义:inta[4][10];,则以下选项中对数组元素a[i][j]引用错误的是______。(o<=i<4,0<=j<=10

A.*(&a[0][0]+10*i+j)B.*(a+i)+jC.*(*(a+i)+j)D.*(a[i]+j)

55.C语占中,函数值类型的定义可以缺省,此时函数值的隐含类型是

A.voidB.intC.floatD.double

56.以下叙述中正确的是A.构成C语言程序的基本单位是函数

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

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

D.所有被调用的函数一定要在调用之前进行定义

57.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是()

A.多对多B.一对一C.多对一D.一对多

58.有以下程序voidf(intv,intw){intt;t=v;v=w;w=t}main(){intx=1,y=3,z=2;if(x>y)f(x,y);elseif(y>z)f(y,z);elsef(x,z);pfintf("%d,%d,%d\n",x,y,2);}执行后输出结果是

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

59.下面程序的输出结果是()。#include<stdio.h>#include<string.h>main(){charp1[]="WHO",p2[]="who",str[50]="xyz";strcpy(str+1,strcat(p1,p2));printf("%s",str);}

A.xyzWHOwhoB.zWHOwhoC.zWHOwhoD.xWHOwho

60.下面不属于软件设计原则的是()。

A.抽象B.模块化C.自底向上D.信息隐蔽

四、选择题(20题)61.有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母:

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

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

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

A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈与队列都是非线性结构D.以上三种说法都不对

63.有定义如下:

structsk

{inta;

floatb;

}data,*p;

如果p=&data;则对于结构变量data的成员a的正确引用时()

A)(*).data.aB)(*p).a

C)p->data.aD)p.data.a

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

A.ad_intB.bb_7C._dd7D.int

65.下列关于数据库设计的叙述中,正确的是()。

A.在需求分析阶段建立数据字典

B.在概念设计阶段建立数据字典

C.在逻辑设计阶段建立数据字典

D.在物理设计阶段建立数据字典

66.

67.

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

main

{charx=0xFFFF;printf("%d\n",x--);}

A.-32767B.FFFEC.1D.32768

68.有三个关系R、S和T如下:

则由关系R和s得到关系T的操作是()。

A.自然连接B.差C.交D.并

69.软件生命周期中所花费用最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

70.若变量a、i已正确定义,且i已正确赋值,合法的语句是()。A.A.a==1B.++iC.a=a++=5D.a=int(i)

71.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1

72.

73.(11)算法的时间复杂度是指()

A.执行算法程序所需要的时间

B.算法程序的长度

C.算法执行过程中所需要的基本运算次数

D.算法程序中的指令条数

74.下面四个选项中,均是不正确的8进制数或16进制数的选项是

A.0160x8f018

B.0abc0170xa

C.010-0x110x16

D.0a127ff-123

75.以下程序段中,与语句:k=a>;b?(b>;c?1:O):0;功能相同的是()。

76.层次型、网状型和关系型数据库的划分原则是()

A.数据之间的联系方式B.记录长度C.联系的复杂程度D.文件的大小

77.若变量已正确定义,有以下程序段其输出结果是()。

A.0,1B.0,0C.1,1D.程序进入无限循环

78.

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

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

79.以下程序的输出结果是()。

#definef(x)x*x

main

{inta=6,b=2,c;

c=f(a)/f(b);

printf(“%d\n”,c);

}

A.9B.6C.36D.18

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:计算并输出下列级数的前N项之和SN,直到SN+1大于q为止。q的值通过形参传人。SN=2/1+3/2+4/3+(N+1)/N例如,若q的值为57,则函数值为59.593612。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。

例如,若二维数组中的数据为

13233343

14243444

15253545

则一维数组中的内容应该是132333431424344415253545。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。

试题程序:

#include<stdio.h>

voidproc(int(*s)[103,int*b,int*n,intrain.intnn)

{}

voidmain

{

intarr[10][10]={{33,33,33,33),{44,44,44,44},

{55,55,55,55}),i,j;

inta[l00]={o),n=o;

printf("Thematrix:\n");

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

{

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

printf("%3d",arr[i][j]):

printf("\n");

}

proc(arr,a,&n,3,4):

printf("TheAarray:\n");

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

printf("%3d",a[i]):

printf("\n\n");

}

参考答案

1.C

2.A当执行gets(ss)后,ss数组中的元素为ABC,再执行strcat(ss,"6789"),strcat的作用,是把6789连接到了ss数组后面,执行完后SS数组为ABC6789,故选择A选项。

3.B解析:p指向x的第一个元素,所以p->n的值为2,p->next指向x+1,即指向x的第二个元素,所以p->next->n为4。

4.B程序中,fun函数的功能是接收两个数组a、b,以及数组a的元素个数n,然后通过for循环将数组a中下标为偶数的元素与后面相邻的下标为奇数的元素两两相加,赋给数组b中下标为j的元素,最后返回数组b的个数。所以main函数中,通过调用fun函数,将数组a的元素两两相加,得到数组b的各个元素,再通过for循环输出,结果为:1593。故本题答案为B选项。

5.D[解析]第一次循环沩0.i%2为0.执行switch(a[0]%62)中的case0语句后内容即a[0]++,a[0]的值变成3;第二次循环的值为1.i%62为1.执行case1:a[]=0;所以a[1]的值变成0;第三次循环的值为2.i%62为0.执行switch([2]%62)中的case1语句后的内容a[2]--,a[2]的值变成4;第四次循环的值为3.i%2为1.执行case1:ai]=0;所以a[3]的值变成0.

6.C

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

8.B

9.B

10.B

11.B解析:在对程序进行测试时会发现错误,这就要进行程序调试(排错)。程序调试活动由三部分组成:一是错误定位,根据错误的外部表现形式,确定程序中出错的位置,找出错误的内在原因;二是对程序进行修改,排除这个错误;三是进行回归测试,防止引进新的错误。所以程序调试的目的就是诊断和改正程序中的错误。软件调试不能改善软件的性能,也不能挖掘软件的潜能。

12.D

13.D解析:逗号表达式(++x,y++)的值应该是y++的值,由于y++是先引用后自增,所以y++的值是3。

14.A根据题意,要使a的值为111,b的值为333,必须在读入时指定a的读入宽度为3,b的读入宽度为3,且a和b的控制字符之间必须额外增加%*控制符,用于跳过中间的3位输入数字,选项A正确。本题答案为A选项。

15.D是按位异或运算,其功能是参与运算的两个数,按位异或,如果两个相应位相同,结果为0,否则为1。接位异或运算满足如下规则:①满足交换律;②一个数与0异或的结果仍是原数;③一个数与1异或的结果是原数按位取反。所以题干中,“y^x^y”等价于等价于“y^y^x”,等价于“0^x”,等价于x,即“z1=x”;“x^y^x”等价于“x^x^y”,等价于“0^y”,等价于y,即“z2=y”,输出结果为:3,5。故本题答案为D选项。

16.D“typedefint*(*T[10])[10];”使用typedef定义一种新类型名T,T的类型是二维数组指针,指向10个元素的数组。其中数组元素类型为int*[10],即数组的每个元素又是包含10个元素的数组,数组的元素是整型指针类型。故本题答案为D选项。

17.B由题意可知:使用typedef将类型“struct{intx,y;}*”重命名为“USER”,所以函数fun的返回类型为“struct{intx,y;}*”,即指向结构体类型的指针。故本题答案为B选项。

18.A

19.D本题中静态局部变量X,在静态存储区内分配存储单元,在程序整个运行期间都不释放。在main函数中,执行for循环,第1次循环,变量s的值为2;第2次循环,函数的返回值为4,所以变量s的值为8;第3次循环,函数的返回值为8,所以s的值为64。故本题答案为D选项。

20.C

21.20020,0解析:本题考查的知识点是if语句的基本概念。在主函数中首先定义了三个整型变量x、y,t,并分别给它们赋初值为10,20,0,接着执行if语句,在if后面括号内的条件表达式中,条件“x==y”即“10==20”不成立,则不执行其后的语句“t=x”,然后退出if语句,顺序执行语句X=y;y=t;。执行完这两条语句后x的值变为20,y的值变为0,所以最后输出x,y的值为20和0。

22.136136解析:本题考核的知识点是函数递归。主函数调用函数fun(6),由于6/2>0为真递归调用fun(3),接着递归调用fun(1),输出1,返回上一层输出3,在返回上一层输出6。故空格处应该填136。

23.模块模块解析:矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。

24.00解析:对于一个unsignedshort来说,它能取的最大值是65535。这里给a赋值65536,已经超出了它的取值范围,这样它的高位将被截掉,只把低位赋给它(全零)。所以a的值实际为0。

25.44解析:本题考查函数的递归调用.在主函数中第1次调用于函数是调用的fun(11),返回11-fun(9);第2次调用于函数是调用的fun(9),返回9-fun(7);第3次调用于函数是调用的fun(7),返回7-fun(5):第4次调用子函数是调用的fun(5),返回5-fun(3):第5次调用于函数是调用的fun(3),返回3-fun(1):第6次调用于函数是调用的fun(1),返回3。总的返回值是:11-(9-(7-(5-(3-3))))=4.

26.bcdefghabcdefgha解析:while循环的功能把字符从第二个元素开始左移一位,并将原第一个元素赋给最后一个元素。

27.E-R图E-R图解析:E-R图是设计概念模型的有力工具。

28.x=2y=1

29.86518651解析:主程序中,第一次循环时,i=0,调用sb(s,x)子函数,此时n=3,x=s[n]=s[3]=8,然后将n减1变为2;第二次循环时,i=1,调用sb(s,x)子函数,因为将n定义为了静态变量,所以此时n=2,返回x=s[n]=s[2]=6;第三次循环时,i=2,调用sb(s,x)子函数,此时n=1,返回x=s[n]=s[1]=5;第四次循环时,i=3,调用sb(s,x)子函数,此时n=0,返回x=s[n]=s[0]=1。此程序实际上是将数组s逆序输出。

30.事务分析设计事务分析设计解析:典型的数据流图有两种,即变换型和事务型。按照这两种类型把设计方法分为两类,即变换分析设计和事务分析设计。

31.int*pp=array+1p=numberint*p\r\np=array+1\r\np=number解析:函数max_min_value()中用到了指针变量p,显然应在第一个空格处填int*p。函数max_min_value()中的for循环逐一把数组中的元素与max和min的当前值进行比较。max和rain的初值是数组的第1个元素值,第1次比较应与第2个元素比较,即array+1。第二个空格处应填p=array+1。主函数main()中的指针变量p首先指向数组number的第1个元素,当第1个for循环结束时,它指向数组的最后一个元素。若这时将p作为实参传给被调用函数,形参array[]数组的首址将是number口数组的最后元素的地址,而number[]数组的前n-1个元素不能参加比较,这将引起计算出错。因此,在调用max_min_value()函数之前,应将指针p指向number[]数组首址,即在第三个空格应填写p=umber。

32.p1+(stfien(str)-1)或str+(strlen(str)-1)t==0或!thuiwen(str)或(strlen(str)-1)+p1或(stden(str)-1)+strp1+(stfien(str)-1)或str+(strlen(str)-1)\r\nt==0或!t\r\nhuiwen(str)或(strlen(str)-1)+p1或(stden(str)-1)+str解析:回文字符串是指正向与反向拼写都一样。由huiwen函数可知,第三处应该填写调用函数huiwen(str)。在函数huiwen中,执行P1=str;使p1指向字符串str中第一个字符的地址,则第一处应该使p2指向字符串str中最后一个字符的地址,故填p1+(stden(str)-1)或str+(strlen(str)-1)。本题要求如果是回文,则返回'yes!',否则,返回'no!',故当t=0时,说明字符串str为回文,所以第二处应填t==0或!t。

33.a=123b=5

34.序言性序言性解析:注释一般分为序言性注释和功能性注释。

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

36.55解析:分析程序,当a=3;b=4;c=5时,判断语句a>b不成立,所以不执行后面的语句,直接执行“printf('%d\\n',c);”语句,输出c的值,输出结果为5。

37.a[iow][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[iow][col]max<min或min>maX或max<=min或min>=maxa[iow][col]>max或a[row][col]>=max或max<=a[row][col]或max<a[iow][col]\r\nmax<min或min>maX或max<=min或min>=max解析:本题有两层for循环,主函数中定义了整型变量iow、col、max和min,其中row用来存放外循环中的循环次数,col用来存放内循环中的次数,max记录每行中的最大值;min记录所有行中最大值中的最小值。在内循环中,首先给max赋初值为每行的第0列元素值,然后从第一列开始依次与max进行比较。如果大于max则将其值赋给max,当每一行循环结束,max记录了每一行的最大值。所以第一个空应该填a[row][col]>max或a[row][col]=max.退出内循环,在第一次退出内循环时,将min赋初值为第0行的max,然后在每次退出内循环时,将min和每行的max比较,如果大于max,则将max值赋min,所以第二个空应该填max<min或min>max,当退出外循环时,min为所有行中的最大值的最小值。

38.99解析:在主函数中函数f(f(3,4),f(3,5))的返回值赋给do函数的第一个参数为f(3,4)的返回值,函数f(3,4)返回值为(4-3)*3=3,f(3,5)返回值为(5-3)*3=6,那么函数f(f(3,4),f(3,5))等价于函数f(3,6)其返回值为(6-3)*3=9。因此d被赋值为9,所以输出9。

39.ar=9ar=9ar=11ar=9ar=9ar=11解析:本题综合考查了for循环,switch语句及宏替换等几个知识点。j=3时,执行PR(*(--p));输出数组元素a[4]的值;j=2时,执行PR(*p++);取出p所指位置的元素a[4],然后p++;当j=1时,执行PR(*p++);取得是数组元素a[6]的值11。

40.tunc()m++tunc()m++解析:第一空白处,在C语言中如果子函数在主函数之后定义,就要对其进行说明,说明的形式为:“函数类型名函数名”。所以此处填写func()。第二空白处,整型变量m表示输入字符的个数,所以每输入一个字符,变量m的值就加1。所以此处填写m++。

41.D解析:结构化分析方法,数据流图,数据字典,软件需求规格说明书

评析,需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织,部门、企业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能.选项A)软件开发方法是在总体设计阶段完成的任务;选项B)软件开发工具是在实现阶段需完成的任务:选项C)软件开发费用是在可行性研究阶段需完成的任务。

42.D

43.C解析:静态局部变量在编译时赋初值,即只赋初值一次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。本题在程序开头定义了全局变量d并赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在第一次调用函数fun时,d初值为5,p由主函数传递过来的值为1,则d=d+p=5+1=6,由于d是静态局部变量,在函数调用结束后,它仍保留d=6。再次调用fun函数,d的初值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的值并返回主函数。

44.A

45.B解析:由于实参传送的是变量的地址,所以对形参指针所指向的单元内容的改变,即对实参内容的改变。

46.C解析:字符变量w的初值为字符'A',其ASCII码值为65,字符'a'的ASCII码值为97,所以关系表达式w<'a'的值为1;变量x=14,变量y=15,x||y为或,x、y均为真,所以x||y的结果1。因而逻辑表达式(x||y)&&(w<'a')的值为1。

47.B解析:continue语句的作用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。当能被2整除时,a就会增1,之后执行continue语句,直接执行到for循环体的结尾,进行i++,判断循环条件。

48.B

49.D解析:本题中首先定义了一整型变量n并赋初值为2,接着定义了一个整型指针变量p并让它指向n,接着又定义了一指向指针的指针变量q。选项A中给指针变量p赋值q,故这个赋值语句正确。选项B中*p=*q就是将*q的值赋给指针变量p所指向的变量n,故这个赋值语句不是非法的赋值语句。选项C中是将*q的值赋给变量n,故这个表达式不是非法的赋值语句。选项D中p为一指针变量,应该将一地址赋给它,而在此选项的表达式中将变量n而不是n的地址赋给它,故这个表达式不合法。

50.B解析:要解答此题只要知道两个知识点:①在C语言中规定进行强制类型转换的格式是:(double)变量名;②在C语言中不允许给表达式赋值。

51.C

52.C解析:考查二维数组元素的引用方法。题中通过二维数组的行、列下标来定位元素的位置,从而实现元素的引用。

53.A解析:本题主要考查自加运算符(++、--)的使用。①前缀变量“++i、--i”,在使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参与运算;②后缀变量“i++、i--”,先使用此时的表达式的值参与运算,在使用i之后,再使i的值加1或者减1。本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此语句后a的值是3;表达式c+=-a+++(++b)等价于c=c+(-a++)+(++b),c=1+(-3)+3=1,此时a=4,b=3。

54.B解析:本题中选项B是错误的引用,*(a+i)+j只代表了a[i][j]的地址。

55.B解析:本题考查的知识点是函数值类型的缺省定义。C语言规定:在定义函数时,若其返回值类型为int,则可以缺省。所以4个选项中B正确。

56.A解析:根据函数的定义语法规定,在C语言程序中,不能嵌套定义,即不能在函数中再定义函数;main()函数在C语言程序中是必须的,但函数可以放在程序中的任意位置;当在所有函数的外部、被调用之前说明函数时,在函数说明后面的任何位置上都可以对函数进行调用。函数说明也可以放在调用函数的说明部分,如在main函数内部进行说明,则只能在main函数内部才能识别函数。

57.C解析:该题考查的是实体间的联系。多对多联系(m:n):如果对于实体集A中的每个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每个实体,实体集A中有m个实体(m≥0)与之联系,则称实体集A与实体集B之间是多对多联系,记作m:n。一对一联系(1:1):如果对于实体集A中的每一个实体,实体集B中至多有一个实体与之有联系,反之亦然,则称实体集A与实体集B之间是一对一联系,记作1:1。一对多联系(1:n):如果对于实体集A中每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B之间是一对多联系,记作1:n。那么根据题意可知是多对一联系。所以选项C是正确的。

58.C解析:C语言规定else总是和离它最近的if语句配对。分析可以知道,函数f()作用是让形参v和形参w的值交换。在主函数中首先定义了三个变量x、y和z。然后再执行下面的if-else语句。由程序可以看出第一个else和第一个if搭配,第二个else和第二个if搭配。由于调用函数时是进行值传递的。即将实参x,y,z传给形参v和w,以后形参和实参再无联系,故通过if语句调用f()函数后,x、y和x的值并没有改变。故最后输出的x、y和z的值为1、3和2。

59.D

60.C解析:软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念。①抽象是一种思维工具,就是把事物本质的共同特性抽出来而不考虑其他细节。②模块是指可以单独命名且可编址的元素。如高级语言中的过程、函数、子程序等。③信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。④模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。因此,本题的正确答案是C。

61.D调用缸函数后,实参数组名sl传给形参指针P,P也指向数组sl。m函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母的话,就把前一个字符转换为大写。程序中语句P[i一1]=P[i—1]一ga’+-A‘;即P[i一1]=P[i一1]一32,意思是将P[i一1]中的字符转换为大写。因此D选项正确。

62.D【答案】:D

【知识点】:栈和队列

【解析】:栈和队列都是线性结构,所以选项C错误;栈是一种先进后出的线性表,故选项A错误;队列是一种先进先出的线性表,故选项B错误,所以选D。

63.B结构体变量的引用。

64.DC语言的标识符主要用来表示常量、变量、函数和类型等的名字,只起到标识作用。标识符由数字、下画线或英文字母构成,可以分为三类:保留字、预定义标识符和用户定义标识符。保留字是指每一个标识符都有其特定的含义,不允许用户把它们当做变量名使用,如if、int、for等。预定义标识符也是一类具有特殊含义的标识符,它们被用做库函数名和预编译命令,如define、include等。用户定义标识符是用户根据自己的需要定义的一类标识符,用于标识变量、符号常量、用户定义函数、类型名和文件指针等。这类标识符主要由英文字母、数字和下画线构成,但开头字符

温馨提示

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

最新文档

评论

0/150

提交评论