2021-2022年江西省宜春市全国计算机等级考试C语言程序设计测试卷(含答案)_第1页
2021-2022年江西省宜春市全国计算机等级考试C语言程序设计测试卷(含答案)_第2页
2021-2022年江西省宜春市全国计算机等级考试C语言程序设计测试卷(含答案)_第3页
2021-2022年江西省宜春市全国计算机等级考试C语言程序设计测试卷(含答案)_第4页
2021-2022年江西省宜春市全国计算机等级考试C语言程序设计测试卷(含答案)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年江西省宜春市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.fscanf函数的正确调用形式是()

A.fscanf(fp,格式字符串,输出表列);

B.fscanf(格式字符串,输出表列,fp);

C.fscanf(格式字符串,文件指针,输出表列),

D.fscanf(文件指针,格式字符串,输入表列);

2.若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组元素的地址为()。

A.334HB.30DHC.352HD.31AH

3.有以下程序:voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i+=2)for(j=i+2;j<n;j+=2)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);for(i=0;i<10;i++)printf("%d",aa[i]);printf("\n");}其输出结果是

A.1,2,3,4,5,6,7,8,9,10,

B.10,9,8,7,6,5,4,3,2,1,

C.9,2,7,4,5,6,3,8,1,10,

D.1,10,3,8,5,6,7,4,9,2,

4.成功的测试是指A.A.运行测试实例后未发现错误

B.发现程序的错误

C.证明程序正确

D.软件产生

5.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是

A.a^bB.a|bC.a&bD.a<<4

6.

7.下列选项中,当X为大于1的奇数时,值为0的表达式是()。

A.x%2==0B.x/2C.x%2!=0D.x%2==1

8.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2) if(b!=2||c--!=3) printf(“%d,%d,%d\n”,a,b,c); elseprintf(“%d,%d,%d\n”,a,b,c);elseprintf(“%d,%d,%d\n”,a,b,c);}程序的运行结果是()。

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

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

A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的

B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

C.顺序存储结构能存储有序表,链式存储结构不能存储有序表

D.链式存储结构比顺序存储结构节省存储空间

10.数据流图用于抽象地描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。

A.控制流B.加工C.数据存储D.源和潭

11.以下不合法的用尸标识符是()。A.A.804zhangB._hhC.yy614D.If

12.树最适合用来表示()。

A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据

13.由3个结点可以构造出______种不同形态的二叉树。

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

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

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

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

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

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

15.若变量c为char类型,能正确判断出c为小写字母的表达式是_______。A.′a′<=c<=′z′

B.(c>=′a′)||(c<=′z′)

C.(′a′=C)

D.(c>=′a′)&&(c<=′z′)

16.以下选项中能表示合法常量的是()。

A.1,200B.1.5E2.0C.‘\’D.“\007”

17.设有如下定义:intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是()。

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

18.二维数组A的每个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。若A按行先存储,元素A[8][5]的起始地址与当A按列先存储时的元素()的起始地址相同。设每个字符占一个字节。

A.A[8][5]B.A[3][10]C.A[5][8]D.A[0][9]

19.若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。Structstu{inti;intname;}st,*p;p=&st;

A.st.iB.*p.iC.(*p).iD.p->i

20.在待排序的元素序列基本有序的前提下,效率最高的排序方法是()。A.A.冒泡排序B.选择排序C.快速排序D.归并排序

二、2.填空题(20题)21.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

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

return(num);

}

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

main()

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

for(p=s+1;p<s+4;p++)printf("%s\n",p);}

23.以下程序的功能是将字符串s中的数字字符放人d数组中,最后输出d中的字符串。例如,输入字符串abc123edf456gh,执行程序后输出123456。请填空。

#include<stdio.h>

#include<ctype.h>

main()

{chars[80],d[80];inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(【】){d[j]=s[i];j++;)

d[j]='\0';

puts(D);

}

24.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

请填空。

#include"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

25.设顺序输入数列为:24,30,8,5,1,27,24,26,10,21,9,28,7,13,15。假定每个结点的查找概率相同,若用顺序存储方式组织该数列,则查找一个数成功的平均比较次数为【】;若按二叉排序树结构组织该数列,则查找一个数成功的平均比较次数为【】。

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

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

#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");

}

28.Jackson方法是一种面向【】的结构化方法。

29.执行以下程序后,输出‘#’号的个数是______。

#include<stdio.h>

main()

{

inti,j;

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

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

putchar('#');

}

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

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

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

PRINT(a+i);

printf("\n");

}

31.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。

32.函数sstrcmp的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp)。请填空。

#include<stdio.h>

intsstrcmp(char*s,char*t)

{while(*s&&*t&&*s==【】)

{s++;t++;}

return【】;

}

33.若给fun函数的形参s传送字符串“∪∪6354'abc"(其中∪表示空格字符),则函数的返回值是【】。

longfun(chars[])

{longn;intsign;

for(;isspace(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*s-'0');

returnsign*n;

}

34.数据库系统中实现各种数据管理功能的核心软件是______。

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

#include<stdio.h>

main()

{intx=20;

printf("%d",0<x<20);

printf("%d\n",0<x&&x<20);

}

36.执行下面程序段后,k的值是【】。

r=1;n=203;k=1

do}k*=n%10*r;n/=10;r++;}while(n);

37.下面程序的功能是输出数组s中最大元素的下标,请填空。

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

38.以下程序运行后的输出结果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}

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

main()

{inta=2,b=4,c=6;

int*p1=&a,*p2,&b,*p;

*(p=&c)=*p1*(*p2);

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

}

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

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);

}

三、1.选择题(20题)41.下面程序段的运行结果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

42.若变量均已正确定义并赋值,以下合法的C语言赋值语句是

A.x=y==5;B.x=n%2.5;C.x+n=i;D.x=5-4+1;

43.在执行下述程序时,若从键盘输入6和8,则结果为

main()

{inta,b,s;

scanf("%d%d",&a,&b);

S=a

if(a<b)

s=b;

S*=s;

printf("%d",s);}

A.36B.64C.48D.以上都不对

44.以下程序的输出结果是()#include<string.h>main(){chars1[]="123",s2[]="abc",ss[20]="010";strcat(ss+1,strcpy(s2,s1));printf("%s\n",ss);}

A.10123B.0abcC.1123D.01abc

45.已知二叉树BT的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______.

A.cedbaB.acbedC.decabD.deabc

46.一棵二叉树的前序遍历结果是ABCEDF,中序遍历结果是CBAEDF,则其后序遍历的结果是()。A.DBACEFB.CBEFDAC.FDAEBCD.DFABEC

47.有下列程序:main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}程序运行后的输出结果是()。

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*1=22*2=43*1=33*2=63*3=9

48.下列程序的输出结果是______。#include<stdio.h>main(){inta,b,c=246;a=c/100%9;b=(-1)&&(-1);printf("%d,%d\n",a,b);}

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

49.下列程序段执行后,c3中的值是______。intc1=1,c2=2,c3;c3=1.0/c2*c1;

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

50.有以下程序:#include<stdio.h>main(){FILE*fp;inti,k=0,n=0;fp=fopen("d1.dat","w");for(i=1;i<4;i++)fprintf(fp,"%d",i);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}执行后输出结果是()。

A.12B.1230C.123D.00

51.已知inta=1,b=3则ab的值为

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

52.有如下程序

main()

{charch[2][5]={"6937","8254"},*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′;j+=2)

s=10*s+p[i][j]-′0′;

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

该程序的输出结果是

A.69825B.63825C.6385D.693825

53.下列语句所定义字符串在内存中占的字节数是______。char*s="\'Name\'\\\'Age\'\n";

A.定义中有语法错误B.20C.19D.14

54.以下程序的输出结果是()。#include<stdio.h>intfan(int);main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d",k);}

A.54321B.012345C.12345D.543210

55.下列叙述中,不属于软件需求规格说明书的作用的是()

A.便于用户,开发人员进行理解和交流

B.反映出用户问题的结构,可以作为软件开发工作的基础和依据

C.作为确认测试和验收的依据

D.便于开发人员进行需求分析

56.下面4个关于C语言的结论中错误的是()。

A.可以用do…while语句实现的循环一定可以用while语句实现

B.可以用for语句实现的循环一定可以用while语句实现

C.可以用while语句实现的循环一定可以用for语句实现

D.do…while语句与while语句的区别仅是关键字“while”出现的位置不同

57.关系数据库管理系统能实现的专门关系运算包括()。

A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表

58.下面是对宏定义的描述,不正确的是______。

A.宏不存在类型问题,宏名无类型,它的参数也无类型

B.宏替换不占用运行时间

C.宏替换时先求出实参表达式的值,然后代入形参运算求值

D.宏替换只不过是字符替代而已

59.阅读下面程序段,则执行后的结果为#inclide"stdio.h"main(){intm=4,n=2,k;k=fun(m,n);printf("%d\n",k);}fun(intm,intn){return(m*m*m-n*n*n);}

A.64B.8C.56D.0

60.结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法

A.对象B.数据结构C.数据流D.目标

四、选择题(20题)61.下面不属于软件工程三要素的是()。

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

62.以下变量x、y、z均为double类型且已正确赋值,不能正确表示x/(y*z)的C语言表达式是()。

A.x/y*zB.x*(1/(y*z))C.x/y*1/zD.x/y/z

63.若k是int类型变量,且有以下for语句:

for(k=-1;k<O;k++)printf("****\n");

下面关于语句执行情况的叙述中正确的是()。、

A.循环体执行一次

B.循环体执行两次

C.循环体一次也不执行

D.构成无限循环‘

64.

有以下程序:

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

65.

66.若变量x、Y已正确定义并赋值,以下符合C语言语法的表达式是()。

A.++x,y=x-B.x+1=yC.x=x+10=x+yD.double(x/10)

67.有以下程序

main()

{

intx[]={1,3,5,7,2,4,6,0},i,j,k;

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

for(j=2;j>=i;j--)

if(x[j+1]>x[j])

{

k=x[j];

x[j]=x[j+1];

x[j+1]=k;

}

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

for(j=4;j<7-i;j++)

if(x[j]>x[j+1])

{

k=x[j];

x[j]=x[j+1];

x[j+1]=k;

}

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

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

printf("\n");

}

程序运行后的输出结果是

A.75310246B.01234567

C.76310462D.13570246

68.

69.

70.

71.

72.

73.

74.下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmain{intm=1,n=2,k=3;intS=ADD(m+n)*k;printf("s=%d",s);}A.sum=18B.sum=10C.sum=9D.sum=25

75.下列选项中不是字符常量的是()。

A.'\v'B.'\x2a'C.'a'D."\0"

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

A.15,16B.16,15C.15,15D.16,16

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

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

78.有以下程序:

程序的运行结果是()。

A.*****a*bB.a*bC.a*b****D.ab

79.

80.

五、程序改错题(1题)81.已知一个数列,从0项开始的前3项为0、0、1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc()的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=11时,程序的输出结果应为32.197745。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将ss所指字符串中所有下标为奇数的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入“abc4EFg”,则应输出“aBc4EFg”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*ss){}voidmain(void){ chartt[51]; printf(“\nPleaseenterancharacterstringwithin50characters:\n”); gets(tt); printf(“\n\nAfterchanging,thestring\n%s”,tt); fun(tt); printf(“\nbecomes\n%s”,tt);}

参考答案

1.D

2.C解析:解答本题,首先要明白在对指针进行加、减运算的时候,数字“1”不是十进制的数“1”,而是指'1'个存储单元长度,而1个存储单元长度占多少存储空间,应该视具体情况而定。如果基本类型是int型,移动1个存储单元的长度就是位移2个字节,如果基本类型是float型,移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址:300H+(13*上标)4)H=352H。

3.C解析:本题考核的知识点是程序中算法的基本分析。sort()函数作用是将数组aa中的下标为偶数的元素按大到小排序.主函数中首先定义了一个长度为10的数组并赋值,然后调用sort()函数,将数组aa中奇数个元素的值按大到小排序,因此执行完该函数后,数组中奇数个元素的值为9,7、5、3和1,故主函数中最后通过一个for循环输出数组aa中各元素的值为9、2、7、4、5、6、3、8、1和10,所以,4个选项中选项C符合题意。

4.B软件测试的目的主要有以下几个方面。

(1)软件测试是为了发现错误而执行程序的过程。

(2)一个好的测试用例能够发现至今尚未发现的错误。

(3)一个成功的测试是发现了至今尚未发现的错误的测试。

另外,即使经过了最严格的测试,可能仍然还有没被发现的错误藏在程序中,测试只是找出程序中的错误,不能证明程序中没有错误。

5.A解析:本题考查的是位运算的知识,对于任何二进制数,和1进行异或运算会让其取反,而和0进行异或运算不会产生任何变化。

6.A

\r\n

7.A算术运算符的优先级高于关系运算符的优先级。所以当x为大于1的奇数时,A选项的值为假,即0。B选项的值为不定值,但绝对不是0。C选项的值为真,即1。0选项的值为真,即1。故本题答案为A选项。

8.Belse总是和最近的if配对。进入第1个if语句进行条件判断时,因为是選辑与操作,需要两边运算对象的值均为非零值才为真,所以需要逐个执行判断。结果为1,进入第2个if语句进行条件判断。因为“b!=2”条件成立,所以整个条件表达式的值为真,不再执行逻辑或的第2个运算对象“(c--!=3)”变量c的值不变,也不再执行第1个else语句。输出a的值1,b的值3,c的值3。故本题答案为B选项。

9.A解析:顺序存储结构就是用一组地址连续的存储单元依次存储该线性表中的各个元素,链式存储结构中各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致,所以选项A是正确的。两者都可以存储线性的、有序的逻辑结构,所以选项B、C不正确。顺序结构使用的是连续物理空间,链式结构可以使用零散的物理空间存储,链式结构更灵活,不存在谁节约空间的说法,所以选项D不正确。

10.A解析:数据流图包括四个方面,即加工(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体),不包括选项中的控制流。

11.AC语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线。

12.C树最适合用来表示元素之间具有分支层次关系的数据,故本题选C。

13.C难易程度:易

14.B解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。本题答案为B。

15.D

16.DA选项中整型常量应表示为1200,数字中不能包含逗号。B选项中E后面的指数必须为整数。C选项中转义字符以“\\”开始,若要表示字符“\\”,应写为“\\\\”。故本题答案为D选项。

17.D

18.A

19.B解析:本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变量访问,即st.i,也可以用等价的指针形式,即(*p).i和p->i。

20.A解析:以下几种算法的时间复杂度分别为:冒泡排序(n2);选择排序(n2);快速排序(nlog2n);归并排序(nlog2n)。当排序元素序列基本有序的情况下,冒泡排序的交换次数为0,只是顺序扫描数据而已,所以其效率是最高的。

21.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1

22.BCDCDDBCD\r\nCD\r\nD解析:本题考查指向字符串的指针的运算方法。指针变量p首先指向字符串中的第一个字符A,执行p=s+1后,p指向字符串中的第二个字符B,然后输出值“BCD”并换行,依次执行循环语句。

23.s[i]>='0'&&s[i]<='9'或s[i]>=48&&s[i]<=57s[i]>='0'&&s[i]<='9'或s[i]>=48&&s[i]<=57解析:根据题意,if语句的条件应当是判断数组元素s[i]是否为数字,故正确答案为:s[i]>='0'&&s[i]<='9'或s[i]>=48&&s[i]<=57,其中48是字符0的ASCII码值,57是字符9的ASCII码值。

24.x+8sin(x)x+8,sin(x)解析:考查考生对函数调用相关知识的了解。用x+8代替函数fun(doublex)中形式参数x;用sin(x)代替函数fun(doublex)中形式参数x。

25.857/15

26.3232解析:while(表达式)的功能是:首先计算表达式的值.若为真,则执行循环体语句,执行完毕,再计算表达式的值.若仍为真,则重复执行循环体语句,直到表达式的值为假,结束while语句的执行,继续执行while语句后面的语句;i=0时满足循环条件,也满足if的条件,执行语句得i=11,a=11,第2次循环不满足if的条件,执行i--,i=10,执行i+=11;a+=i后,得i=21,a=32,不满足i<20,循环结束。

27.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逆序输出。

28.数据结构数据结构解析:Jackson方法是—‘种面向数据结构的结构化方法。

29.66解析:本题中,i,j分别为外循环和内循环的循环控制变量,外层循环共执行了四次.当i=1时,由于内层循环判断条件(2<=1)为假不执行内层循环.当i=2时,执行内层循环,输出一个#当i=3时,内层循环循环两次,输出两个#,当i=4时,内层循环循环三次,输出三#。当i=5时,循环判断条件不成立,退出外层循环。所以一共输出6个#。

30.1234theend1,2,3,4,theend解析:本题考查带参数的宏的定义。第1次循环,i=1时,调用PRINT(1),P(1)输出1;第2次循环,i=2时,调用PRINT(2),P(2)输出2;第3次循环,i=3时,调用PRINT(3),P(3)输出3;第4次循环,i=4时,调用PRINT(4),P(4)输出4,theend。

31.参照完整性参照完整性

32.*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]*t或t[0]\r\n*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]解析:函数sstrcmp()有两个字符型指针变量,用来指向两个字符串。比较两个字符串的大小方法是:从第一个字符开始依次向后比较,若对应的字符相等则接着比较下一个字符,一直到两个字符串中对应字符不等,或者有一个为\\0,此时字符的ASCII码大的字符串就大。故循环条件是*s和*t不为\\0,且*s和*t相同,第一处应填“*t”或其他等价形式。根据题意可知第二处应填*s-*t或其等价形式。

33.63546354解析:函数fun的第一个for循环跳过字符串的前导空白符,接着判断第一个非空白符是否是负号,若是,则置变量sign为-1;否则,置变量sign为1。接着的if语句在第一个非空白字符是负号或正号时,跳过该字符。以后的for循环将后面的数字符当作十进制数的各位数字转换为一个长整数n,当遇字符a时,结束循环。最后,函数返回sign与n的乘积。所以若调用函数时提供的实参是“∪∪6354abc”,则函数的返回值是6354。

34.数据库管理系统数据库管理系统解析:数据库管理系统是数据库的管理机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。

35.1010解析:表达式0<x<20,首先计算0<x,其值为1,再计算1<20,其值为1,输出1;表达式0<x&&x<20,0<x为1,x<20为0,再计算1&&0,其值为0,输出0。所以输出结果为10。

36.00解析:本题考查的是do…while循环。第一次执行循环体,因为k=1,r=1,n=20;所以k=1*20%10*1=0,n=20/10=2,r=2;第二次执行循环体,k=0*2%10*2=0,n=10/10=1,r=3;第三次执行循环体,k=0*1%10*3=0,n=1/10=0,r=4。所以k的值为0。

37.k=p;k=p;解析:为要寻找数组中的最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查是从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k)更大时,应该用p更新k。所以在空框处应填入代码“k=p;”。

38.6262解析:本题考查的是宏定义。带参数的宏定义是按#indefine命令行中指定的字符串从左到右进行转换。本题中替换的式子为:6+8*6+8,代入i,j的值得到62。

39.本程序定义了3个指针变量p1、p2、p,并且将a、b的地址分别赋给p1、p2,则*p1=a=2,*p2=b=4,所以表达式*p1*(*p2)的值是8。在赋值语句的左边是*(p=&c),即使指针p指向了变量c,因而*(p)代表了c的存储单元,赋值语句“*(p=&c)=*p1*(*p2);”是把整数8赋给了变量c。\r\n\r\n

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

41.C在本题中,程序段首先定义了字符型指针变量p,并使其指向一个字符串,然后将指针变量p加3,即使其指向字符串的第四个元素。然后执行输出语句,通过输出语句的输出格式我们可以知道,最后输出的是一个十进制数的整型数值,其输出列表为strlen(strcpy(P,″ABCD″))。这就要求我们了解strlen函数和strcpy函数的作用。

strcpy的调用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串复制到目的地址中,这种复制将覆盖原来的字符串。strcat函数的功能是将源地址的字符串复制到目的地址字符串的后面。

strlen的调用格式是:strlen(字符串地址),其功能是返回字符串中字符的个数。

那么程序中执行strcpy(P,″ABCD″)后指针变量p所指向的字符串为“ABCD”,该字符串中字符的个数为4,那么执行strlen后,程序最终输出的结果是4。因此本题正确的答案是C。

42.A

43.B解析:本题中a的值为6,b的值为8,最后s的值为8,s*=s等价于s=s*s。

44.A

45.A解析:由二叉树后序遍历序列和中序遍历序列可以唯一确定一棵二叉树。二叉树BT的后序遍历序列为dabec,故BT的根结点为c(后序遍历序列的最后一个结点为树的根结点):而BT的中序遍历序列是debac,即遍历序列中最后一个结点为根结点,说明BT的右子树为空。由BT的后序遍历序列和中序遍历序列可知BT左子树的后序遍历序列和中序遍历序列分别为dabe和deba,因此BT左子树的根结点是e。再由中序遍历序列可知其左子树为d,右子树为ba。因此BT的前序遍历序列为cedba。

46.BB)【解析】由于该二叉树的前序遍历结果是

ABCEDF,显然A结点为根结点,所以后序遍历时A结点是最后遍历的,其后序遍历的结果为CBEFDA。

47.B解析:外层for循环的自变量i从1开始,每次循环后增1,直到i等于3结束.对于外层循环自变量i的每一个值,内层循环的自变量j每次从i开始,每次循环后增1,直到j等于3结束。所以在每次外循环开始后,内层循环在一行先打印i*j=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。

48.A

49.A

50.B解析:函数fopen(constchar*filename,constchar*mode)的功能,是以mode指定的模式打开filename指定的磁盘文件;fclose(FILE*fp)的功能是关闭文件指针fp指向的文件;函数fscanf(FILE*fp,constchar*format[,address,--])的功能是根据format中的格式从fP指向的文件中读取数据,并存入到相应的address指向的变量中。函数fprintf(FILE*fp,constchar*format[,argument,--])的功能是把argument列表中的表达式值写到fp所指向的文件中:本题中首先定义了一个文件指针fp,然后通过函数fopen以“w”的方式打开文件“d1.dat”,直接通过一个for循环,每循环一次调用函数fpfintf将i的值写进fP所指的文件中,该循环共循环3次,循环完后fP所指文件的内容为123,然后通过fclose函数关闭fp所指文件。接着通过fscanf函数将fP所指文件的内容读出并赋值给变量k和变量n,由于fp所指文件中只有123没有分隔符,故只给k赋值为123,变量n的值依然为以前的值,故最后输出k和n的值为123。

51.C解析:^是按位异式运算,如果对应位不同则结果为1,相同则为0。

52.C解析:该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向二维数组ch的第二行字符串,这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串'6937',第二行ch[1]中的内容为字符串'8254'。③程序中第二个循环中的循环体s=s*10+p[i][j]-\'0\';的功能是这样的,每执行一次,将s中的值乘以10(也即,将s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前p[i][j]中的字符量转换为相应的数字,然后把这个数字加到s的个位上。④注意到内层循环的循环条件p[i]\ue009[j]>\'\\0\'是指p[i][j]中的字符只要不是字符串结束标志\'\\0\'就继续循环,语句j+=2;是使下标j每次增加2,也即一个隔一个地从p[i]所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p[0]所指向的字符串'6937'中一个隔一个地取出字符,分别是\'6\'和\'3\',然后从p[1]所指向的字符串'8254'中一个隔一个地取出字符,分别是\'8\'和\'5\',同时经过转换和相加运算后,结果s中的值应该是6385。

53.D解析:转义字符在内存中占一个字节,字符串结束标志也占一个字节,实际存储空间是14个字节,但若用strlen函数求长度时,值为13,结束标志不算。

54.B解析:本题考查函数的递归调用。fun函数共被调用6次,即fun(5)、fun(4)、fun(3)、fun(2)、fun(1)、fun(0),其中fun(5)是main函数调用的,其余是在fun函数中调用的。

55.D解析:软件需求规格说明书SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用,①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。

56.D解析:本题考查几个循环语句的关系。①do…while语句、while语句、for语句所实现的循环可以相互替代;②do…while语句和while语句的区别是do…while语句至少执行一次,再判断循环条件,while语句是先判断条件再执行。

57.B解析:此题为数据库的基本概念,可以对照办工软件的电子表格进行如下理解:选择:我们根据某条件选择出一行或多行元组(一个元组即为二维表中的一

温馨提示

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

最新文档

评论

0/150

提交评论