2021-2022年浙江省杭州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021-2022年浙江省杭州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021-2022年浙江省杭州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021-2022年浙江省杭州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021-2022年浙江省杭州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年浙江省杭州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

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

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

2.有以下程序:Main(){{intx,y,z;x=y=1;z=x++,y++,++y;print(“%d,%d,%d”,x,y,z);}程序运行后的输出结果是()。A.2,3,3B.2.3.2C.2,3.1D.2.2.1

3.一个无向连连通图的生成树是含有该连通图的全部项点的_______。

A.极小连通子图B.极小子图C.极大连通子图D.极大子图

4.微型计算机的运算器、控制器及内存储器组合在一起,称之为()

A.ALUB.CPUC.MPUD.主机

5.对两个数组a和b进行下列初始化:charm[]1="l234567":charn[]={1,2,3,4,5,6,7);则下列叙述正确的是()。A.数组m与数组n完全相同B.数组m与数组n长度相同C.数组m比数组n长1D.数组m与数组n中都存放字符串

6.在位运算中,操作数每左移两位,其结果相当于()。

A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4

7.若x,y,z均被定义为整数,则下列表达式能正确表达代数式1/(x*y*z)的是()。A.1/x*y*zB.1.0/(x*y*z)C.1/(x*y*z)D.1/x/y/(float)z

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

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

9.#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。

A.#definef(x)5*x*x+5*x+5

B.#definef5*X*x+5*x+5

C.#definef(a)(5*a*a+5*a+5)

D.#define(5*x*x+5*x+5)f(x)

10.字符串通常采用的两种存储方式是()A.散列存储和索引存储B.索引存储和链式存储C.顺序存储和链式存储D.散列存储和顺序存储

11.设有两个串p和q,求q在p中首次出现的位置的运算称为()。

A.连接B.模式匹配C.求子串D.求串长

12.要求当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,以下不满足要求的表达式是()。A.A%2==1B.!(A%2==0)C.A%2D.!(A%2)

13.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。A.log2+1

B.log2(n-1)

C.log2n

D.log2(n+1)

14.若有定义语句:“intx=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为()。A.1.9B.1C.2D.2.4

15.有以下程序:#include<stdio.h>intchange(int*data){*data=*data%2;return(*data)+1;}main(){intdata=12;change(&data);printf(“%d,”,data);data=change(&data);printf(“%d,”,data);}程序运行后的输出结果是()。

A.0,0,B.1,2,C.12,13,D.0,1,

16.以下数据结构中,()是线性结构。

A.有向图B.栈C.线索二叉树D.B树

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

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

18.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

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

}

程序的运行结果是

A.A.331

B.41

C.2

D.1

19.请选出以下程序的输出结果()#include<stdio.h>sub(x,y,z)intx,y,*z;{*2=y-x;}main(){inta,b,c;sub(10,5,&A);sub(7,a,&B);sub(a,b,&C);printf("%d,%d,%d\n",a,b,C);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

20.若有以下程序:inta=1,b=2;a=a^b;b=b^a;则执行以上语句后a和b的值分别是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l

二、2.填空题(20题)21.以下程序中,fun()函数的功能是求3行4列二维数组每行元素中的最大值,请填空。

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

for(i=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

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

{x=ar[i][0];

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

______=x;

}

}

22.设一棵完全二叉树共有500个结点,则在该二叉树中有【】个叶子结点。

23.设有下列宏定义:

#defineA2

#defineB(A+3)

则执行赋值语句“k=B*20;”(k为int型变量)后,k的值是______。

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

main()

{inta=1,b=2;

a=a+b;b=a-b;a=a-b;

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

}

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

main()

inta.b,c;

a=10;b=20;c=(a%b<)||{a/b>1);

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

}

26.需求分析的最终结果是产生【】。

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

main()

{

chara[]="Language",b[]"Programe";

char*p1,*p2;

intk;

p1=a,p2=b;

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

if(*(p1+k==*(p2+k))printf("%c",*(p1+k));

}

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

main()

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

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

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

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

}

29.如果有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是【】。

intw[10]={23,54,10,33,47,98,72,80,61),*p=w;

30.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是______。

31.若有如下结构体说明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。

【】t[20]

32.诊断和改正程序中错误的工作通常称为【】。

33.常用的黑箱测试有等价类划分法、【】和错误推测法3种。

34.语句:x++;、++x;、x=x+1;、x=1+x;,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)【】。

35.按照“先进先出”的原则组织数据的结构是______。

36.当输入的数据为2、5时,则下列程序的运行结果为【】。

#include<stdio.h>

#definemax100

main()

{

intf[max],i,j,k,m;

scanf("%d%d",&k,&m);

for(i=0;i<=m;i++)f[i]=0;

f[k-1]=1;

for(i=k;i<=m;i++)

for(j=i-k;j<=i-1;j++)f[i]+=f[i];

printf("%d%10d%10d\n",k,m,f[m]);

getch();

}

37.用链表表示线性表的突出优点是______。

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

longfun5(intn)

(longs;

if((n==l)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

39.下面程序的功能是:输出100以内能被4整除且个位数为8的所有整数,请填空。main(){inti,j;for(i=0=();i++){j=i*10+8;if(j%4!=0)continue;printf("%d",j);}}

40.下面程序的输出是【】。

main()

{inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;

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

}

三、1.选择题(20题)41.设有如下程序段:intx=2002,y=2003;printf("%d\n",(x,y));则以下叙述中正确的是()。

A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出

B.运行时产生出错信息

C.输出值为2002

D.输出值为2003

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

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

43.下面各语句行中,能正确地给字符串赋值的语句行是()。

A.charst[4]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'};

C.char*s="ABCDE";

D.char*s;scanf("%s",*s);

44.在以下术语中,与数据的逻辑结构无关的是______。

A.线性结构B.链式结构C.树型结构D.网状结构

45.下面各被调用函数首部书写正确的是()

A.voidsub(floatx;floaty);

B.voidsub(floatx,y)

C.voidsub(floatx,floaty)

D.voidsub(floatx,floaty);

46.已有定义:intx=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是

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

47.下列关于C语言数据文件的叙述中正确的是A.文件由ASCII码字符序列组成,C语言只能读写文本文件

B.文件由二进制数据序列组成,C语言只能读写二进制文件

C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

48.已知inta;floatb;所用的scanf调用语句格式为:scanf("a//%d,b=%f",&a,&b);为了将数据3和25.08分别赋给x和y,正确的输入应当是

A.3,25.08<Enter>

B.a=3,b=25.08<Enter>

C.a//3.b=25.08<Enter>

D.a//3<Enter>b=25.08<Enter>

49.以下程序的输出结果是main(){charx=040;printf("%o\n",x<<1);}

A.100B.80C.64D.32

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

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

51.有以下程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf(%c%c%c%c,&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf(%c%c\n,c5,c6);}程序运行后,若从键盘输入(从第1列开始)123<回车>45678<回车>则输出结果是()。

A.1267B.1256C.1278D.1245

52.执行语句printf("%u\n",+12345)的输出结果是()。

A.12345B.0C.-1D.非定值

53.按照“先进后出”原则组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

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

A.数据所占的存储空间

B.数据的逻辑结构在计算机中的存放形式

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

D.存储在计算机外存中的数据

55.已知在ASCII字符集中,数字0的序号为48,下列程序的输出结果为______。main()}chara='0',b='9';printf("%d,%c\n",a,b);}

A.因输出格式不合法B.48,57C.0,9D.48,9

56.下列程序的输出结果是#include"stdio.h"#defineM(x,y)x%ymain(){inta,m=12,n=100;a=M(n,m);printf("%d\n",a--);}

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

57.若变量已正确定义,有以下程序段

inta=3,b=5,c=7;

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

if(c!=a)c=b;

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

其输出结果是

A.程序段有语法错B.3,5,3C.3,5,5D.3,5,7

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

A.′C′B.′′C′′C.′\xCC′D.′\072′

59.下列程序的执行结果是______。#lnClude<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10x.c[l]=1;printf("\n%d,x.i);}

A.266B.11C.265D.138

60.以下合法的赋值语句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

四、选择题(20题)61.以下叙述中错误的是()。A.c程序在运行过程中所有计算都以十进制方式进行

B.c程序在运行过程中所有计算都以二进制方式进行

C.所有C程序都需要编译链接无误后才能运行

D.c程序中字符变量存放的是字符的ASCIl值

62.下列选项中,能正确定义数组的语句是()。

A.

B.

C.

D.

63.设有数组定义:chararray[]="Chinese";则数组array所占的空间为

A.6个字节B.7个字节C.8个字节D.9个字节

64.

65.若变量已正确定义,在if(W)埘ntf(”%d\n”,k);中,以下不可替代w的是()。

A.a<>b+CB.ch=getcharC.a==b+CD.a++

66.有如下程序:

该程序的输出结果是()。

A.0.000000B.0.250000C.0.500000D.1.000000

67.

68.

69.若有定义“inta=5,b=7;”,则表达式a%-(b%2)运算后,a的值为()。

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

70.若有定义:doublea=22;inti=0,k=18;,则不符合c语言规定的赋值语句是()。

A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;

71.

72.有以下程序l

该程序试图通过指针P为变量n读人数据并输出,但程序有多处错误,以下语句正确的是()。

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

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

74.

有以下程序:

main

{inta=0,b=0;

a=10;/*给a赋值

b=20;给b赋值*/

printf("a+b=%d\n",a+b);//输出计算机结果

}

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

A.a+b=10B.a+b=30C.30D.出错

75.

76.有以下程序:

执行后输出结果是()。

A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday

77.(39)在关系数据库中,用来表示实体之间联系的是()

A.树结构

B.网结构

C.线性表

D.二维表

78.

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

#include<stdio.h>

#defineADD(x)x+x

main

{intm=1,n=2,k=3;

intS=ADD(m+n)*k;

printf("s=%d",s);

}

A.sum=18B.sum=10C.sum=9D.sum=25

79.以下选项中,不能作为合法常量的是

A.1.24e03B.1.34e0.3C.1.24e+3D.1.34e0

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

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

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

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

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

五、程序改错题(1题)81.下列给定程序中,proc()函数的功能是:根据形参n。计算下列公式的值:t=1-1/2+1/3-1/4+…+(-1)(n+1)/n例如,若输入6,则应输出0.616667。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

1122234456666778

9910101010

删除后,数组中的内容应该是:

12345678910

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

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

试题程序:

参考答案

1.C

2.C整型变量x、y的初值都为1,“x++,y++,++y”是一个逗号表达式,程序执行“z=x++,y++,++y”之后,x的值为2,y的值为3,z取逗号表达式中的第二个表达式的值,为1。因此本题的答案为选项C。

3.A

4.D

5.C在m数组中赋值的是字符串,其长度为7,末尾有结束符\0,故字节数为8,而n数组中赋的是字符,其长度为7,故C选项正确。

6.D解析:本题主要考查左移、右移对数据值的影响,左移n位相当于乘以2的n次幂,右移n位相当于除以2的n次幂。

7.B

8.B

9.C解析:带参数宏的格式为:#define标识符(形参表)形参表达式。其功能是:在预处理程序中将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。

10.C

11.B

12.D

13.A

14.B此题考查除法运算,根据先乘除后加减,有括号先算括号的原则,先计算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,转化一下取整除部分,结果Z=1

15.Dchange函数接收一个整型指针data,然后将data指向的数对2求余,求余后的值重新赋给data指向的变量,最后将data指向的变量值加1后返回。注意,此处data指向的数对2求余会改变实参指针指向的值,但返回值并不影响data指向的值。程序第1次调用change函数,传入实参data的地址,将data的值修改为0(12%2=0),此时输出data的值是0;再次调用change传入data的地址,将data的值修改为0(0%2=0),然后将返回值1重新赋给主函数变量data,所以此时输出data的值是1。综上,程序输出0,1,。故本题答案为D选项。

16.B

17.A解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。

18.D本题考查if-else语句的使用。if-else语句可以在条件为“真”或为“假”时执行指定的动作,由if引导条件为“真”时执行的操作;由else引导条件为“假”时执行的操作。else语句要与上面最近的if语句进行匹配,如果要嵌套调用if-else语句,需要将嵌套部分用{}括起来,避免程序报错。题目中给出了一个if语句和一个if-else语句,if-else语句为第一个if语句的子语句。首先执行外层if语句,执行条件为x>y,由于x=1,y=2,故该条件为假,不执行if的子语句,直接执行语句printf("%d\\n",x++);,该语句先输出x的值,然后进行x++操作。x的初始值为1,输出结果为1。

19.B

20.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b一00000011,转化为十进制后为3,b=b^a=00000010^00000011=00000001,即1。

21.br[i]

22.250250解析:所谓完全二叉树是指除最后一层外,每—层上的结点数均达到最大值;在最后—层上只缺少右边的若干结点。具有n个结点的完全二叉树,其父结点数为int(n/2),而叶子结点数等于总结点数减去父结点数。本题n=500,故父结点数等于int(500/2)=250,叶子结点数等于500-25=250。

23.100100解析:本题考查带参数的宏定义及相关运算。运算过程为:k=B*20=(A+3)*20=(2+3)*20=100。

24.21

25.1020010200解析:本题的关键在于求表达式(a%b<1)‖a/b>1)的值。已知a=10,b=20,所以a%b=10,因此(a%b<1)为“假”。而a/b=0,因此(a/b>1)亦为“假”。,D运算的两边同时为“假”,所以整个表达式的值为。“假”,即c等于0。所以,本题最终输出为:10200。

26.需求规格说明书需求规格说明书解析:软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。需求规格说明书包括正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性等。

27.gaegae解析:本题定义了两个字符串数组a[],b[],字符型指针变量p1和p2,且分别指向字符串数组a和b,执行for循环,当if(*p1+k)=*(p2+k))条件为真,执打输出*(p1+k)对应的字符。即当k=0时,*(p1+k)对应的字符串数组a中的字符L,*(p2+k)对应的字符串数组b中的字符P,因此if(*(p1+k)=*(p2+k))条件为假,不执行printf语句,依此类推,将字符串数组a和b中对应位置上的字符一一比较,如果对应位置上的字符相同,则输出该字符。

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

29.*(p+5)*(p+5)解析:p+5指向了数组w的第6个元素,再取指针运算。

30.顺序存储(顺序方式存储)顺序存储(顺序方式存储)解析:二分法查找对表的要求是有序的顺序表,即第一要求是数据元素有序,第二要求是按顺序方式存储。

31.strudctSTRUstrudctSTRU解析:结构件类型是构造数据类型,是用户自己定义的一种类型。

结构体类型的定义:

struct结构体类型名

{

成员项表;

};

定义结构体变量的的形式为:

struct结构体类型名变量1,变量2,...?

其中变量包括;一般变量、指针变量、数组变量等。

32.程序调试程序调试解析:程序调试的任务是诊断和改正程序中的错误。程序调试与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于调试工具找出软件错误的具体位置。软件测试贯穿整个软件生命期,而调试主要在开发阶段。

33.边界值分析法边界值分析法解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价类划分、边界值分析法和错误推测法3种。

34.x+=1;

35.队列队列解析:队列是一种特殊的线性表,只允许在表的一端插入元素,在表的另一端删除元素,插入元素的一端叫做“队尾”,删除元素的一端叫做“队头”,先插入的元素先被删除,是按先进先出的原则组织数据的。

36.255

37.便于插入和删除操作。便于插入和删除操作。解析:为了克服顺序表中插入和删除时需要移动大量数据元素的缺点,引入了链式存储结构。链表表示线性表的突出优点是插入和删除操作方便,不必移动数据元素,执行效率高。

38.99解析:考查ifelse语句,n==4不满足条件,所以fun5(4)=4+fun5(3),n==3也不满足条件,fun5(3)=3+fun5(2),n==2满足条件fun5(2)=2,故x=4+3+2=9。

39.i<10i<10解析:分析程序:当(i=0,1,2,…)时,“j=i*10+8”语句的运行结果是(8,18,28,…)个位数字为8的所有整数;题中要求是100以内的整数,所以i<10;“if(j%4!=0)continue;”语句的功能是当条件不能被4整除时,继续循环不执行操作,直到能被4整除时输出该数,所以输出的数满足条件100以内能被4整除且个位数为8。

40.66解析:本题变量z的值应为最后一次给它赋的值,且最后一次for循环使prt指向a[2]

41.D解析:本题考查逗号表达式。逗号表达式的形式为:表达式1,表达式2,其求解过程为:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。

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

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

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

43.C解析:选项A)字符串的赋值产生越界错误,不正确;选项B)是字符数组的赋值,而不是字符串的赋值;选项D)中scanf的列表项必须为变量的地址。

44.B

45.C

46.D解析:本题考查的知识点是!和&&的运算规则.本题中,&&左边的表达式!(x+y)为!(3+7),结果为假,即为0。再加上2,然后减一,相当于0+5-1=4。左边等于4,&&右边的表达式y+z/2相当于4+5/2为6,所以整个表达式相当于4&&6为真,即为1,所以选项D正确。

47.D解析:C语言把文件看成是一个字符(字节)的序列,即由一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件又称文本文件,它的每一个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。

48.C解析:若在scanf的格式控制串中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符。由于scanf的格式控制串中插入了“a\\\\”、逗号和“b=”等字符,所以输入时候应该一一对应地在对应位置上输入这些字符。

49.A解析:本题考核的知识点是位运算符的应用.首先将八进制040转换成二进制数000100000,在将此;进制数左移一位为001000000,输出时转换成八进制数100。所以,4个选项中A为所选。

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

51.D解析:在题目中,程序执行到scanf()函数时,会暂停等待用户输入4个字符,按题意输入123<回车>后,字符1~3被分别输入到c1~c3中,而c4会得到一个换行符'\\n'。然后执行第1个getchar()函数,由于前面的scanf()函数读完了缓冲区中的所有字符,所以此时程序会又暂停等待用户输入,按题意输入45678<回车>后,缓冲区第1个字符'4'被读入并赋给c5,第2个getchar()函数会读入缓冲区第2个字符'5'。所以最后依次输出c1、c2、c5、c6的值后,屏幕上的结果是1245。故应该选择D。

52.A解析:“%u”表示输出无符号的整数(注意:如果输出值前有符号,将自动转化为相应的无符号数输出)。

53.BB.【解析】栈是一种特殊的线性表,其插入和删除运算都只在线性表的一端进行,而另一端是封闭的。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元索是最后被插入的元素,也是最后被删除的元素。栈是按先进后出的原则组织数据的。

【知识拓展】“栈”的形式如手枪的弹匣,最后压入的子弹总是最先被弹出,而最先压人的子弹最后才被弹出,也就是“先进后出”。

54.B解析:数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。

55.D解析:注意输出控制符%d,%c,分别表示以十进制形式输出字符的ASCII码值和字符。

56.C解析:带参数的宏定义命令行形式如下:

#define宏名(形参表)替换文本

在编译的时候编译预处理程序用“替换文本”来替换宏,即M(n,m)被替换为n%m,之后计算,将计算的结果赋给a。注意,宏替换是在编译时由预处理程序完成的,宏替换不占用运行的时间,而函数调用是在程序运行时进行的,在函数的调用过程中需要占用一系列的处理时间。

57.B解析:两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的值等于3,变量b的值没能变化,程序输出的结果为3,5,3。所以正确答案为B)。

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

59.A解析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同—个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。

60.B解析:本题中的答案A与D都缺少“;”,而答案C中,表达式是不能独立成为语句的,答案B使用了C语言的自减运算符它就相当于D=D-1,所以答案B为一赋值语句。

61.AC程序在运行过程中所有计算都以二进制方式进行,所以本题答案为A)。

62.D选项A)不符合c语言的语法要求;选项

B)中没有指定数组的大小;选项c)中数组大小不能用变量来指定。

63.C本题主要考查字符数组的初始化操作。字符数组的初始化可以逐个元素赋值,也可以作为字符串赋值。

逐个元素赋值初始化形式:

char数组名[n]={字符1,字符2,……,字符n};

char数组名[]={字符1,字符2,……,字符n};

作为字符串赋值形式:

char数组名[n]='字符串';

char数组名[]='字符串';

在C语言中,为了方便确定字符串的长度,编译系统在字符串后增加了一个结束标识’\\0’,即ASCII码的0。因此,当采用字符串初始化字符数组时,必须为其保留一个存放结束标识符的位置。

在本题中,用一个字符串作为数组的初值,这种方法直观、方便,而且符合人们的习惯。数组array的长度是7,但所占的空间是8,这点必须要注意。因为字符串常量的最后由系统加上一个’\0’,因此,上面的初始化是chararray[]={′C′,′h′,′i′,′n′,′e′,′s′,′e′,′\0′}。

64.C

65.A选项A是非法的表达式,C语言中没有<>运算符。

66.D本题考查if语句的嵌套。if语句中的一

种表达方式,即:if…elseif…。

该表达式的语句是:

if(表达式1)

语句l

elseif(表达式2)

语句2

elseif(表达式3)

语句3

else

语句4

本题执行elsey=1.0,并且以”%f”输出。

67.D

68.D

69.A本题考查“%”运算符的使用。运算符“%”是整数除法的余数。本题中表达式a%=(b%2)等价于a=a%(b%2)=5%(7%2)=5%1=0。

70.B取模运算符“%”,二元运算符,具有左结合性,参与运算的量均为整型。选项B中的a变量是doable实型,所以8不符合规定。

71.C

72.A选项B的正确写法应为P=&n;选项c的正确写法应为scanf(”%d”,P);选项D的正确写法应为printf(”%d\n”,*P)。

73.A循环语句中输出o,i为。循环结束,执行循环条件后i为l,输出1,所以选择A)。

74.A\n本题中/*……*/为多行注释,所以可知b=20为注释语句,在程序运行时不起作用,b仍为0,所以本题中A正确。

\n

75.B

76.CP指向字符串”tuesday”,因此*(P+1)的值为n。s[0]=”monday”。

77.D

78.B

\n本题考查带参数的宏的定义:“#defineADD(x)x+x”中X代表m+n,故s写成s=m+n+m+n*k=1+2+1+2*3=10。

\n

79.B本题考查实型数据的表示形式。

实型数据有十进制小数形式和指数形式两种表示方法,指数形式中e后面的指数必须为整数。选项B中e后面的指数为0.3,不符合实型数据的表示方式。

80.B解析:声明枚举类型用enum开头。例如:enumweekday(sun,mon,tue,wed,thu,fri,sat);

说明:1、在C编译中,对枚举元素按常量处理,同时可以改变他们的值。2、枚举值可以用来做判断比较。3、一个整数不能直接赋给一个枚举变量。

81.(1)错误:intproc(intnJ

正确:doubleproc(intn)

(2)错误:for(i=1;i(n;i++)

正确:for(i=2;i<=n;i++)

【解析】由主函数中的函数调用以及函数proc()中返回值的类型,可知函数proc()的返回值类型为double型数据。因此,“intproc(intn)”应改为“doubleproc(intn)”。由题目中给出的表达式可知,循环的最大值应该取到n,因此,“for(i=l;i<n;i++)”应改为“for(i=2;i<=n;i++)”。

82.

【解析】题目中要求删去一维数组中所有相同的数,使之只剩一个。首先需要将字符串中的每一个字符与其后的一个字符相比较,相同则不做任何操作,不相同则将其放入新的字符串中。最后将新的字符串中的字符个数返回给主函数。

2021-2022年浙江省杭州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

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

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

2.有以下程序:Main(){{intx,y,z;x=y=1;z=x++,y++,++y;print(“%d,%d,%d”,x,y,z);}程序运行后的输出结果是()。A.2,3,3B.2.3.2C.2,3.1D.2.2.1

3.一个无向连连通图的生成树是含有该连通图的全部项点的_______。

A.极小连通子图B.极小子图C.极大连通子图D.极大子图

4.微型计算机的运算器、控制器及内存储器组合在一起,称之为()

A.ALUB.CPUC.MPUD.主机

5.对两个数组a和b进行下列初始化:charm[]1="l234567":charn[]={1,2,3,4,5,6,7);则下列叙述正确的是()。A.数组m与数组n完全相同B.数组m与数组n长度相同C.数组m比数组n长1D.数组m与数组n中都存放字符串

6.在位运算中,操作数每左移两位,其结果相当于()。

A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4

7.若x,y,z均被定义为整数,则下列表达式能正确表达代数式1/(x*y*z)的是()。A.1/x*y*zB.1.0/(x*y*z)C.1/(x*y*z)D.1/x/y/(float)z

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

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

9.#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。

A.#definef(x)5*x*x+5*x+5

B.#definef5*X*x+5*x+5

C.#definef(a)(5*a*a+5*a+5)

D.#define(5*x*x+5*x+5)f(x)

10.字符串通常采用的两种存储方式是()A.散列存储和索引存储B.索引存储和链式存储C.顺序存储和链式存储D.散列存储和顺序存储

11.设有两个串p和q,求q在p中首次出现的位置的运算称为()。

A.连接B.模式匹配C.求子串D.求串长

12.要求当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,以下不满足要求的表达式是()。A.A%2==1B.!(A%2==0)C.A%2D.!(A%2)

13.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。A.log2+1

B.log2(n-1)

C.log2n

D.log2(n+1)

14.若有定义语句:“intx=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为()。A.1.9B.1C.2D.2.4

15.有以下程序:#include<stdio.h>intchange(int*data){*data=*data%2;return(*data)+1;}main(){intdata=12;change(&data);printf(“%d,”,data);data=change(&data);printf(“%d,”,data);}程序运行后的输出结果是()。

A.0,0,B.1,2,C.12,13,D.0,1,

16.以下数据结构中,()是线性结构。

A.有向图B.栈C.线索二叉树D.B树

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

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

18.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

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

}

程序的运行结果是

A.A.331

B.41

C.2

D.1

19.请选出以下程序的输出结果()#include<stdio.h>sub(x,y,z)intx,y,*z;{*2=y-x;}main(){inta,b,c;sub(10,5,&A);sub(7,a,&B);sub(a,b,&C);printf("%d,%d,%d\n",a,b,C);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

20.若有以下程序:inta=1,b=2;a=a^b;b=b^a;则执行以上语句后a和b的值分别是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l

二、2.填空题(20题)21.以下程序中,fun()函数的功能是求3行4列二维数组每行元素中的最大值,请填空。

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

for(i=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

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

{x=ar[i][0];

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

______=x;

}

}

22.设一棵完全二叉树共有500个结点,则在该二叉树中有【】个叶子结点。

23.设有下列宏定义:

#defineA2

#defineB(A+3)

则执行赋值语句“k=B*20;”(k为int型变量)后,k的值是______。

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

main()

{inta=1,b=2;

a=a+b;b=a-b;a=a-b;

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

}

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

main()

inta.b,c;

a=10;b=20;c=(a%b<)||{a/b>1);

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

}

26.需求分析的最终结果是产生【】。

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

main()

{

chara[]="Language",b[]"Programe";

char*p1,*p2;

intk;

p1=a,p2=b;

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

if(*(p1+k==*(p2+k))printf("%c",*(p1+k));

}

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

main()

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

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

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

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

}

29.如果有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是【】。

intw[10]={23,54,10,33,47,98,72,80,61),*p=w;

30.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是______。

31.若有如下结构体说明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。

【】t[20]

32.诊断和改正程序中错误的工作通常称为【】。

33.常用的黑箱测试有等价类划分法、【】和错误推测法3种。

34.语句:x++;、++x;、x=x+1;、x=1+x;,执行后都使变量x中的值增1,请写出一条同一功能的赋值语句(不得与列举的相同)【】。

35.按照“先进先出”的原则组织数据的结构是______。

36.当输入的数据为2、5时,则下列程序的运行结果为【】。

#include<stdio.h>

#definemax100

main()

{

intf[max],i,j,k,m;

scanf("%d%d",&k,&m);

for(i=0;i<=m;i++)f[i]=0;

f[k-1]=1;

for(i=k;i<=m;i++)

for(j=i-k;j<=i-1;j++)f[i]+=f[i];

printf("%d%10d%10d\n",k,m,f[m]);

getch();

}

37.用链表表示线性表的突出优点是______。

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

longfun5(intn)

(longs;

if((n==l)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

39.下面程序的功能是:输出100以内能被4整除且个位数为8的所有整数,请填空。main(){inti,j;for(i=0=();i++){j=i*10+8;if(j%4!=0)continue;printf("%d",j);}}

40.下面程序的输出是【】。

main()

{inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;

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

}

三、1.选择题(20题)41.设有如下程序段:intx=2002,y=2003;printf("%d\n",(x,y));则以下叙述中正确的是()。

A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出

B.运行时产生出错信息

C.输出值为2002

D.输出值为2003

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

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

43.下面各语句行中,能正确地给字符串赋值的语句行是()。

A.charst[4]={"ABCDE"};

B.chars[5]={'A','B','C','D','E'};

C.char*s="ABCDE";

D.char*s;scanf("%s",*s);

44.在以下术语中,与数据的逻辑结构无关的是______。

A.线性结构B.链式结构C.树型结构D.网状结构

45.下面各被调用函数首部书写正确的是()

A.voidsub(floatx;floaty);

B.voidsub(floatx,y)

C.voidsub(floatx,floaty)

D.voidsub(floatx,floaty);

46.已有定义:intx=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是

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

47.下列关于C语言数据文件的叙述中正确的是A.文件由ASCII码字符序列组成,C语言只能读写文本文件

B.文件由二进制数据序列组成,C语言只能读写二进制文件

C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件

D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件

48.已知inta;floatb;所用的scanf调用语句格式为:scanf("a//%d,b=%f",&a,&b);为了将数据3和25.08分别赋给x和y,正确的输入应当是

A.3,25.08<Enter>

B.a=3,b=25.08<Enter>

C.a//3.b=25.08<Enter>

D.a//3<Enter>b=25.08<Enter>

49.以下程序的输出结果是main(){charx=040;printf("%o\n",x<<1);}

A.100B.80C.64D.32

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

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

51.有以下程序:#include<stdio.h>main(){charc1,c2,c3,c4,c5,c6;scanf(%c%c%c%c,&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf(%c%c\n,c5,c6);}程序运行后,若从键盘输入(从第1列开始)123<回车>45678<回车>则输出结果是()。

A.1267B.1256C.1278D.1245

52.执行语句printf("%u\n",+12345)的输出结果是()。

A.12345B.0C.-1D.非定值

53.按照“先进后出”原则组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

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

A.数据所占的存储空间

B.数据的逻辑结构在计算机中的存放形式

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

D.存储在计算机外存中的数据

55.已知在ASCII字符集中,数字0的序号为48,下列程序的输出结果为______。main()}chara='0',b='9';printf("%d,%c\n",a,b);}

A.因输出格式不合法B.48,57C.0,9D.48,9

56.下列程序的输出结果是#include"stdio.h"#defineM(x,y)x%ymain(){inta,m=12,n=100;a=M(n,m);printf("%d\n",a--);}

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

57.若变量已正确定义,有以下程序段

inta=3,b=5,c=7;

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

if(c!=a)c=b;

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

其输出结果是

A.程序段有语法错B.3,5,3C.3,5,5D.3,5,7

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

A.′C′B.′′C′′C.′\xCC′D.′\072′

59.下列程序的执行结果是______。#lnClude<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10x.c[l]=1;printf("\n%d,x.i);}

A.266B.11C.265D.138

60.以下合法的赋值语句是______。

A.X=Y=100B.D-;C.X+Y;D.C=int(A+B)

四、选择题(20题)61.以下叙述中错误的是()。A.c程序在运行过程中所有计算都以十进制方式进行

B.c程序在运行过程中所有计算都以二进制方式进行

C.所有C程序都需要编译链接无误后才能运行

D.c程序中字符变量存放的是字符的ASCIl值

62.下列选项中,能正确定义数组的语句是()。

A.

B.

C.

D.

63.设有数组定义:chararray[]="Chinese";则数组array所占的空间为

A.6个字节B.7个字节C.8个字节D.9个字节

64.

65.若变量已正确定义,在if(W)埘ntf(”%d\n”,k);中,以下不可替代w的是()。

A.a<>b+CB.ch=getcharC.a==b+CD.a++

66.有如下程序:

该程序的输出结果是()。

A.0.000000B.0.250000C.0.500000D.1.000000

67.

68.

69.若有定义“inta=5,b=7;”,则表达式a%-(b%2)运算后,a的值为()。

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

70.若有定义:doublea=22;inti=0,k=18;,则不符合c语言规定的赋值语句是()。

A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;

71.

72.有以下程序l

该程序试图通过指针P为变量n读人数据并输出,但程序有多处错误,以下语句正确的是()。

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

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

74.

有以下程序:

main

{inta=0,b=0;

a=10;/*给a赋值

b=20;给b赋值*/

printf("a+b=%d\n",a+b);//输出计算机结果

}

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

A.a+b=10B.a+b=30C.30D.出错

75.

76.有以下程序:

执行后输出结果是()。

A.n,tuesdayB.d,mondayC.U,mondayD.0,wednesday

77.(39)在关系数据库中,用来表示实体之间联系的是()

A.树结构

B.网结构

C.线性表

D.二维表

78.

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

#include<stdio.h>

#defineADD(x)x+x

main

{intm=1,n=2,k=3;

intS=ADD(m+n)*k;

printf("s=%d",s);

}

A.sum=18B.sum=10C.sum=9D.sum=25

79.以下选项中,不能作为合法常量的是

A.1.24e03B.1.34e0.3C.1.24e+3D.1.34e0

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

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

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

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

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

五、程序改错题(1题)81.下列给定程序中,proc()函数的功能是:根据形参n。计算下列公式的值:t=1-1/2+1/3-1/4+…+(-1)(n+1)/n例如,若输入6,则应输出0.616667。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

1122234456666778

9910101010

删除后,数组中的内容应该是:

12345678910

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

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

试题程序:

参考答案

1.C

2.C整型变量x、y的初值都为1,“x++,y++,++y”是一个逗号表达式,程序执行“z=x++,y++,++y”之后,x的值为2,y的值为3,z取逗号表达式中的第二个表达式的值,为1。因此本题的答案为选项C。

3.A

4.D

5.C在m数组中赋值的是字符串,其长度为7,末尾有结束符\0,故字节数为8,而n数组中赋的是字符,其长度为7,故C选项正确。

6.D解析:本题主要考查左移、右移对数据值的影响,左移n位相当于乘以2的n次幂,右移n位相当于除以2的n次幂。

7.B

8.B

9.C解析:带参数宏的格式为:#define标识符(形参表)形参表达式。其功能是:在预处理程序中将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。

10.C

11.B

12.D

13.A

14.B此题考查除法运算,根据先乘除后加减,有括号先算括号的原则,先计算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,转化一下取整除部分,结果Z=1

15.Dchange函数接收一个整型指针data,然后将data指向的数对2求余,求余后的值重新赋给data指向的变量,最后将data指向的变量值加1后返回。注意,此处data指向的数对2求余会改变实参指针指向的值,但返回值并不影响data指向的值。程序第1次调用change函数,传入实参data的地址,将data的值修改为0(12%2=0),此时输出data的值是0;再次调用change传入data的地址,将data的值修改为0(0%2=0),然后将返回值1重新赋给主函数变量data,所以此时输出data的值是1。综上,程序输出0,1,。故本题答案为D选项。

16.B

17.A解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。

18.D本题考查if-else语句的使用。if-else语句可以在条件为“真”或为“假”时执行指定的动作,由if引导条件为“真”时执行的操作;由else引导条件为“假”时执行的操作。else语句要与上面最近的if语句进行匹配,如果要嵌套调用if-else语句,需要将嵌套部分用{}括起来,避免程序报错。题目中给出了一个if语句和一个if-else语句,if-else语句为第一个if语句的子语句。首先执行外层if语句,执行条件为x>y,由于x=1,y=2,故该条件为假,不执行if的子语句,直接执行语句printf("%d\\n",x++);,该语句先输出x的值,然后进行x++操作。x的初始值为1,输出结果为1。

19.B

20.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b一00000011,转化为十进制后为3,b=b^a=00000010^00000011=00000001,即1。

21.br[i]

22.250250解析:所谓完全二叉树是指除最后一层外,每—层上的结点数均达到最大值;在最后—层上只缺少右边的若干结点。具有n个结点的完全二叉树,其父结点数为int(n/2),而叶子结点数等于总结点数减去父结点数。本题n=500,故父结点数等于int(500/2)=250,叶子结点数等于500-25=250。

23.100100解析:本题考查带参数的宏定义及相关运算。运算过程为:k=B*20=(A+3)*20=(2+3)*20=100。

24.21

25.1020010200解析:本题的关键在于求表达式(a%b<1)‖a/b>1)的值。已知a=10,b=20,所以a%b=10,因此(a%b<1)为“假”。而a/b=0,因此(a/b>1)亦为“假”。,D运算的两边同时为“假”,所以整个表达式的值为。“假”,即c等于0。所以,本题最终输出为:10200。

26.需求规格说明书需求规格说明书解析:软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。需求规格说明书包括正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性等。

27.gaegae解析:本题定义了两个字符串数组a[],b[],字符型指针变量p1和p2,且分别指向字符串数组a和b,执行for循环,当if(*p1+k)=*(p2+k))条件为真,执打输出*(p1+k)对应的字符。即当k=0时,*(p1+k)对应的字符串数组a中的字符L,*(p2+k)对应的字符串数组b中的字符P,因此if(*(p1+k)=*(p2+k))条件为假,不执行printf语句,依此类推,将字符串数组a和b中对应位置上的字符一一比较,如果对应位置上的字符相同,则输出该字符。

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

29.*(p+5)*(p+5)解析:p+5指向了数组w的第6个元素,再取指针运算。

30.顺序存储(顺序方式存储)顺序存储(顺序方式存储)解析:二分法查找对表的要求是有序的顺序表,即第一要求是数据元素有序,第二要求是按顺序方式存储。

31.strudctSTRUstrudctSTRU解析:结构件类型是构造数据类型,是用户自己定义的一种类型。

结构体类型的定义:

struct结构体类型名

{

成员项表;

};

定义结构体变量的的形式为:

struct结构体类型名变量1,变量2,...?

其中变量包括;一般变量、指针变量、数组变量等。

32.程序调试程序调试解析:程序调试的任务是诊断和改正程序中的错误。程序调试与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于调试工具找出软件错误的具体位置。软件测试贯穿整个软件生命期,而调试主要在开发阶段。

33.边界值分析法边界值分析法解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价类划分、边界值分析法和错误推测法3种。

34.x+=1;

35.队列队列解析:队列是一种特殊的线性表,只允

温馨提示

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

评论

0/150

提交评论