2021-2022年江苏省宿迁市全国计算机等级考试C语言程序设计_第1页
2021-2022年江苏省宿迁市全国计算机等级考试C语言程序设计_第2页
2021-2022年江苏省宿迁市全国计算机等级考试C语言程序设计_第3页
2021-2022年江苏省宿迁市全国计算机等级考试C语言程序设计_第4页
2021-2022年江苏省宿迁市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年江苏省宿迁市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若已知一个栈的进栈序列是1,2,3…n,其输出序列是P1,P2,P3,…PN,若P1=n,则Pi(1<i<p)为()。

A.IB.n-iC.n-i+1D.不确定

2.若有定义"int(*pt)[3];",则下列说法正确的是()。

A.定义了基类型为int的三个指针变量

B.定义了基类型为int的具有三个元素的指针数组pt

C.定义了一个名为*pt、具有三个元素的整型数组

D.定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组

3.以下选项中关于C语言常量的叙述错误的是()。

A.所谓常量,是指在程序运行过程中,其值不能被改变的量

B.常量分为整型常量、实型常量、字符常量和字符串常量

C.常量可分为数值型常量和非数值常量

D.经常被使用的变量可以定义成常量

4.程序设计的任务包括()。

A.编写程序代码并上机调试B.确定所用数据结构C.确定所用算法D.以上选项均正确

5.有以下程序:#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(“%4.1f\n”,S(a+b));}程序的运行结果是()。

A.7.5B.31.5C.程序有错,无输出结果D.14.0

6.给定数列(541,132,984,746,518,181,946,314,205,827)按照从小到大的顺序排列,采用冒泡排序时,第一趟扫描结果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

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

A.*=<<>%sizeof

B.<<*=>%sizeof

C.%=><<sizeof%

D.*=><<%sizeof

8.某二叉树结点的中序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E,该二叉树对应的层次遍历序列为()

A.E、G、F、A、C、D、B

B.E、A、C、B、D、G、F

C.E、A、G、C、F、B、D

D.E、G、A、C、D、F、B

9.以下函数调用语句中含有实参个数为().func((exp1,exp2),(exp3,exp4,exp5));

A.1个B.2个C.4个D.5个

10.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。

A.(rear+1)MODn=front

B.rear=front

C.rear+1=front

D.(rear-l)MODn=front

11.下列程序的运行结果是()。main{intx=1,y=3,a=0;while(x++!=(y-=l)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}A.2,3,2B.2,3,1C.1,3,3D.3,1,2

12.

13.

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

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

15.下列程序段的时间复杂度为()。A.O(i+j)B.O(n)C.O(n2)D.O(i*j)

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

17.下面关于哈希(Hash,杂凑)查找的说法正确的是()

A.哈希函数构造的越复杂越好,因为这样随机性好,冲突小

B.除留余数法是所有哈希函数中最好的

C.不存在特别好与坏的哈希函数,要视情况而定

D.若需在哈希表中删去一个元素,不管用任何方法解决冲突都只要简单地将该元素删去即可

18.下面的哪个保留字不能作为函数的返回类型()。

A.voidB.intC.newD.long

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

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

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

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

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

20.

二、2.填空题(20题)21.阅读下面程序,则执行后的输出结果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

22.C语言中用______表示逻辑值为“真”,用数字“0”表示逻辑值为“假”。

23.有以下程序:

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

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

24.栈中允许进行插入和删除的一端叫做______。

25.下面程序的运行结果是()。##include<stdio.h>main(){inta,s,n,m;a=2;s=0;n=1;m=1;while(m<=4){n=n*a;s=s+n;++m;}printf("s=%d",s);}

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

main()

{inta=0;

a+-(a=8);

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

}

27.设i,j,k均是int型变量,则执行以下for循环后,k的值为【】。

for(i=0,j=10;i<=j;i++,j--)

k=i+j;

28.下面程序的输出结果是【】。

#defineMAX3

inta[MAX];

main()

{fun1();{un2(A);printf("\n");}

funl()

{intk,t=0;

for(k=0;k<MAX;k++,t++)a[k]=t+t;

}

fun2(intb[])

{intk;

for(k=0;k<MAX;k++)printf("%d",*(b+k));

}

29.函数mycmp(char*s,char*t)的功能是比较字符串s和t的大小,当s等于t时返回0,当s>t时返回正值,当s<t时返回负值。请填空。

mycmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}

return(【】);

}

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

#include<stdio.h>

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

prinff("%d\n",S(i+j));

}

31.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。

32.软件开发环境是全面支持软件开发全过程的【】集合。

33.数据结构分为线性数据结构和非线性数据结构,带链的队列属于()。

34.下列程序用来输出结构体变量ex所占存储单元的字节数。

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));

}

35.下面程序的运行结果是______。

#defineDOUBLE(x,y)x/y

main()

{intx=4,y=2,t;

t=DOUBLE(x+y,x-y);

printf("%d",t);

}

36.对软件是否能达到用户所期望的要求的测试称为【】。

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

#defineN4

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

{inti,j;

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

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

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

#defineP(a)printf("%d",a)

main()

{intj,a[]={1,2,3,4,5,6,7},i=5;

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

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

39.在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。

40.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体"项目主管"与实体"项目"的联系属于【】的联系。

三、1.选择题(20题)41.C语言中各种基本数据类型的存储空间长度排列为()

A.char≤long≤int≤float≤double

B.double≤float≤long≤int≤char

C.char≤int≤long≤float≤double

D.float≤int≤long≤char≤double

42.下列程序的运行结果是()。#include<stdio.h>main(){intx=5,a=1,b=2,c=5,d=O;if(a<b)if(b!=3)if(!c)x=1;elseif(d)x=1;elsex=-1;printf("%d",x);}

A.-1B.0C.1D.不确定的值

43.以下叙述中正确的是______。A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以"#"开头

C.每个C程序必须在开头包含预处理命令行:#include<stdio.h>

D.C语言的预处理不能实现宏定义和条件编译的功能

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

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

45.下列合法的字符型常量是()。

A.'\x13'B.'\081'C.'65'D.\n

46.设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句

if(a<b)

if(c==d)y=0;

elsey=1;

该语句所表示的含义是

A.0a<b且c=dy={1a>=b

B.0a<b且c=dy={1a>=b且c≠d

C.0a<b且c=dy={1a<b且c≠d

D.0a<b且c=dy={1c≠d

47.下列用于printf函数的控制字符常量中,代表“竖向跳格”的转义字符常量是()。

A.\bB.\tC.\vD.\f

48.数据库设计的4个阶段是:需求分析、概念设计、逻辑设计和()。

A.编码设计B.测试阶段C.运行阶段D.物理设计

49.当变量c的值不为2、4、6时,值也为“真”的表达式是()。

A.(c==2)||(c==4)||(c==6)

B.(c>=2&&c<=6)||(c!=3)||(c!=5)

C.(c>=2&&c<=6)&&!(c%2)

D.(c>=2&&c<=6)&&(c%2!=1)

50.在C语言中,要求运算数必须是整型的运算符是()。

A./B.++C.!=D.%

51.有以下函数char*fun(char*p){returnp;}该函数的返回值是______。

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

52.已知字母A的ASCII码为十进制数65,下面程序的输出结果是()main(){charch1,ch2;ch1=A+5-3;ch2=A+6-3;printf("%d,%c\n",ch1,ch2);}

A.67,DB.B,CC.C,DD.不正确定的值

53.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。

A.地址传递B.单向值传递C.由实参传递给形参,再由形参传递给实参D.传递方式由用户指定

54.函数fun的返回值是fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!='\0')num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}

A.字符串a的长度B.字符串b的长度C.字符串a和b的长度之差D.字符串a和b的长度之和

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

56.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

57.有以下程序:main(){inti=0,S=0;do{if(i%2){i++;continue;}i++;s+=i;)while(i<7);printf("%d\n",s);}执行后输出结果是()。

A.16B.12C.28D.21

58.有下列程序:main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}执行后的输出结果是()。

A.5B.24C.32D.40

59.下列关于“数据库系统(DBS)”的叙述中,正确的一条是______。

A.DBS是指在计算机系统中引入数据库后的系统构成

B.DBS是帮助用户建立、使用和管理数据库的一种计算机软件

C.DBS是用户建立的若干数据库文件的集合

D.DBS是一种新颖的关系数据库管理系统

60.有以下程序

#include<stdio.h>

intfun(chars[])

{intn=0;

while(*s<=′9′&&*s>=′0′){n=10*n+*s-′0′;s++;}

return(n);

}

main()

{chars[10]={′6′,′1′,′*′,′4′,′*′,′9′,′*′,′0′,′*′};

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

}

程序的运行结果是

A.9B.61490C.61D.5

四、选择题(20题)61.以下定义数组的语句中错误的是()。

62.

63.有以下程序若想通过键盘输入,使得al的值为12,a2的值为34,el的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b则正确的输入格式是()。

64.

65.若有定义语句:“intkl一10,k2=20;”,执行表达式(kl=kl>k2)(k2=k2>

k1)后,kl和k2的值分别为()。

A.0和1B.0和20C.10和1D.10和20

66.以下程序段中,不能正确给字符串赋值(编译时系统会提示错误)的是:()

67.

68.main()

{intn;(n=6*4,n+6),n*2;printf(“n=%d\n”,n);}

此程序的输出结果是______________.

A.30B.24C.60D.48

69.交换两个变量的值,不允许用临时变量,应该使用下列()位运算符。

A.&B.^C.D.E.F.~

70.

已知有如下结构体:

structsk

{inta;

floatb;

}data,*p;

若有P=&data,则对data的成员a引用正确的是()。

A.(*p).data.aB.(*p).a;C.p->data.aD.p.data.a

71.

72.

73.交换两个变量的值,不允许用临时变量,应该使用下列()位运算符。A.A.&B.^C.||D.~

74.

75.

76.

77.以下叙述中错误的是(

)。A.预处理命令行必须位于源文件的开头B.宏替换可以出现在任何一行的开始部位C.宏替换的作用一直持续到源文件结尾D.宏替换不占有程序的运行时间

78.

79.

80.如下程序段

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

intfun(char*str)

{inti,j=0;

for(i=0;str[i]!=’\0’;i++)

if(str[i]!=’’)str[j++]=str[i];

str[j]=’\0’;

}

main()

{

charstr[81];

intn;

clrscr();

printf("Inputastring:");

gets(str);

fun(str);

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

}

当运行程序时,输入asdafaaz67<回车>,则输出是A.A.asdafaaz67

B.asdafaaz67

C.asd

D.z67

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:先将字符串s中的字符按顺序存放到t中,然后把S中的字符按正序连接到t的后面。例如,当s中的字符串为WXYZ时,则t中的字符串应为WXYZWXYZ。

请改正程序中的错误,使它能得出正确的结果。

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*s,char*t)

{

inti,s1;

s1=strlen(s);

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

//****found****

t[i]=s[s1];

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

t[s1+i]一s[i];

t[2*s1]=\O0;

}

voidmain

{

chars[100],t[100];

system("CLS");

print{("\nPleaseenterstrings:");

scanf("%s",s);

proc(s,t);

printf("Theresultis:%s\n",t);

}六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun(),该函数的功能是找出成绩最低的学生记录,通过形参将其返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include<stdio.h>2#include<string.h>3#include<conio.h>4#include<stdlib.h>5#defineN106typedefstructss7{charnum[10];8ints;9}STU;10fun(STUa[],STU*s)11{1213}14voidmain()15{16FILE*wf;17STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m18inti;19system("CLS");20printf("*****Theoriginaldata*****\n");21for(i=0;i<N;i++)22printf("No=%sMark=%d\n",a[i],num,a[i].s);23fun(a,&m);24printf("****TheResult****\n");25printf("Thelowest:%s,%d\n",m.num,m.s);26/*************************/27wf=fopen("out.dat'*,"w");28fprintf(wf,"%s,%d",m.num,m.s);29fclose(wf);30/*************************/

参考答案

1.C

2.D\n数组指针是指向数组的一个指针,int(*pt)[3]表示一个指向3个int元素的数组的一个指针。

\n

3.D此题考查的是常量和变量的定义,常量不是经常使用的变量,而是一个确定的数值,所以答案选择D。

4.D程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。程序设计的任务包括选项A)、B)、c)等方面。

5.C宏定义不是C语句,末尾不需要有分号。语句“printf(“%4.1f\\n”,S(a+b));”展开后为“printf(“%4.1f\\n”,3.5;*a+b*a+b;);”,所以程序会出现语法错误。故本题答案为C选项。

6.D

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

[*]

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

8.C

9.B

10.B

11.D本题考查"drhile循环。第一次循环,y=y-1,y=2,循环条件成立,x=1,X++后值为1,x自加变成2,进入循环,a=a+1=1,判断if语句条件是否成立,y<x不成立,接着执行下一次循环。第二次循环,x=2,y-1=1,循环条件成立,进入循环,a=a+1=2,判断if语句的控制条件是否成立,y<X成立,执行break语句,退出循环。结果为D。

12.D

13.D

14.C难易程度:易

15.C

16.D

17.C

18.C

19.B【答案】B

【知识点】算法描述

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

20.D

21.33解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf('%d\\n',z);语句。

22.非0非0解析:逻辑运算中,非0表示逻辑“真”,用。表示逻辑“假”。

23.-4-4解析:本题中,n=0,可以判断(!n)为真,执行x=x-1=2-1=1;m=1,可以判断(m)为真,执行x=x-2=1-2=-1;进而可以判断(x)为真,执行x=x-3=-1-3=-4。所以,最后输出为-4

24.栈顶栈顶解析:栈是限定在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端叫做“栈顶”,不允许插入和删除的一端叫做“栈底”。

25.s=30s=30解析:分析循环条件“m=1,m<=4”,所以循环4次。第1次:n=n*a=2,s=s+n=2;m=2。第2次:n=n*a=4,s=s+n=6;m=3。第3次:n=n*a=8,s=s+n=14;m=4。第4次:n=n*a=16,s=s+n=30。

26.1616解析:在程序中首先将8赋值给变量a,然后在进行复合赋值运算。即a=a+a=8+8=16,所以该空格处应该填16。

27.10

28.24

29.*s-*t*s-*t解析:本题考查比较字符串的大小。函数的两个形参是两个字符指针变量,指针变量的值是字符串的首地址,*s和*t表示s和t指向的第一个字符,在while循环中,通过s和t指针的移动,不断改变所指字符,通过返回s和t的第一个不同字符的ASCII码的差值*s-*t得到结果。

30.8181解析:带参数的宏定义是按#define命令行中指定的字符串从左到右进行替换。本题替换后得到:4*i+j*i+j+1,代入i,j的值得81。

31.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。

32.软件工具软件工具

33.线性数据结构线性数据结构解析:队列的链式存储称为链队列,它属于线性数据结构。

34.ex或structstex或structst

35.2

36.有效性测试有效性测试

37.a[0][i]b[i][0]a[0][i]\r\nb[i][0]解析:b[i][N-1]=a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b[i][0]=a[N-1][i]实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组中的第0列。

38.5555解析:分析程序执行过程,第一次循环时,j=3,i-5,因为switch(3),所以执行case3,调用P(a[-i)=p(a[4])=P(5),输出5;第二次循环时,j=2,i=4,因为switch(2),所以执行case2,调用P(s[i++])=P(a[4])=P(5),输出5,之后i的n等于5。

39.continuecontinue解析:continue语句只是结束本次循环,然后进行循环的条件判定。break语句是终止整个循环的执行,不再进行条件判定。

40.一对多(或1∶N)一对多(或1∶N)解析:两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有3种,即一对一(1∶1)的联系、一对多(1∶N)或多对一(N∶1)的联系和多对多(N∶N)的联系。

41.C

42.A解析:本题考查ifelse语句。第1个if语句,先判断条件,发现a<b条件成立,执行下列的语句;第2个if语句,先判断条件,发现b!=3条件成立,执行下列的语句:第3个if语句,先判断条件,c=5,则!c条件不成立,执行与其配对的else语句;第4个if语句,先判断条件,d=0,条件不成立,则x=-1,结束循环。

43.B解析:预处理命令行可以出现在C源程序的任何位置,故选项A不正确。#include<stdio.h>预处理命令行的意思是将stdio.h头文件插入源程序中该行命令所在的位置,表示我们将在后续行中用到stdio.h头文件中定义的函数或类型,若程序中没有用到这些函数或类型就可以不用包含此头文件,故选项C不正确。C提供的预处理功能主要有:宏定义、文件包含和条件编译三种功能,故选项D不正确。在C语言中,预处理命令行都以”#”开头,故应该选择B。

44.A解析:本题考查'%'运算符的使用。运算符'%'要求两个运算对象都为整型,其结果是整数除法的余数。本题中表达式ao%=(b%2)等价于a=a%o(b%2)=5%(7%2)=5%1=0。

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

46.C解析:考查if语句的使用。整个语句都是以a<b为假设的,在a<b的情况下,如果c=d,则y=0;否则y=1。所以答案为选项C)。

47.C本题考查C语言转义字符的含义。我们归类了常用的转义字符及其含义,如下,根据这些不难选出正确答案

转义字符的意义:\n回车换行、\t横向跳到下一制表位置、\v竖向跳格、\b退格、\r回车、\f走纸换页、\\反斜线符、“\”\′单引号符、\\ddd1~3位八进制数所代表的字符、\xhh1~2位十六进制数所代表的字符。

48.D解析:数据库的生命周期可以分为两个阶段:一是数据库设计阶段,二是数据库实现阶段。数据库的设计阶段又分为4个子阶段,即需求分析、概念设计、逻辑设计和物理设计。因此,本题的正确答案是D。

49.B解析:选项A表示当变量C的值为2、4、6中的任意一个时表达式的值为真,不满足条件;选项B表示,当C的值不等3时为真,C的值不等于5时为真,2=<c<=6时为真,可见当c的值为2、4、6时满足条件,c为其他的值也可满足条件,如c=8;选项C表示,2=<c<=6并且c要能被2整除时表达式的值为真,满足条件的值只有2、4、6;选项D中的表达式可以转换为选项C,同样是不满足条件的。

50.D解析:/、++和!=的操作数既可能是整型,又可能是实型。而%的操作数只能是整型。

51.B解析:p本身就是一个字符型指针变量,返回p也就是返回变量p中存放的地址值。

52.A

53.B解析:C语言以定,实参变量对形参变量的数据传递是“单向值传递”,只由实参传绐形参。在内存中,实参单元与形参单元是不同的单元。调用结束后,实参单元仍保留并维持原值。

54.D解析:第一个while循环是字符串a的长度,第二个while是将字符串b接在a的后面,num在a串长度上继续累计,为两个字符串长度之和。

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

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

56.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。

57.A解析:在循环体中有一条if语句,其后面表达式为i%2,当i的值为奇数时,其值为真,执行其后面的语句,i的值加1,重新开始循环,当i的值为偶数时,i%2为假,执行“i++;s+=i。在循环中i为偶数时的值分别为0、2、4、6,加1后的值分别为1、3、5、7,s中存放的是它们的和,值为16。

58.C解析:在for循环体中,首先判断自变量i能否被5整除,然后再自加两次,最后判断i能否被8整除。当for循环执行到第30次时,i的值为30能被5整除,然后i经过两次自加1运算,值变为32,能被8整除,故执行“printf('%d',i);”语句,即输出32。本题的答案为选项C)。

59.A解析:数据库系统DBS是指在计算机系统中引入数据库后的系统构成。数据库系统是一种带有数据库的综合系统,它包括硬件、软件(如操作系统、数据库管理系统、编译系统及应用开发工具软件等)、数据库以及开发者和使用者。

60.C解析:在fun函数中,while循环的功能是:逐个取字符数组s的字符判断其是否是数字。若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个10进制位。当指针s指向数组的第3位时,循环条件不成立,循环结束,返回n的值,输出n的值为61。

61.BB)选项中定义的数组为2行4列,而赋值时赋成了3行所以出错。

62.C

63.A在输入多个数据时,如果格式控制串中没有非格式字符,则认为所有输入的字符均为有效字符。因此应按选项A)的顺序输人数据。

64.C

65.B

66.C字符串赋初值对于字符数组只能在定义时进行。因此选项A的赋初值是正确的。因为数组名是一个固定指针,不能再让其指向其他内存单元。选项C的赋初值是错误的。但选项D是用strcpy函数将字符串“abcdefg”复制到S数组的内存中,是正确的。选项B的tel=”abcdefg”,是利用字符串的长度决定数组长度(串长加1)并同时赋初值。对于字符指针,可以在定义时就指向别的内存单元,*s=t,也是正确的。所以只有C项不正确。

67.A

68.B

69.B按逻辑位运算特点:①用按位与运算将特定位清为0或保留特定位;②用按位或运算将特定的位置为1;③用按位异或运算将某个变量的特定位翻转或交换两个变量的值。

70.B

\n本题主要考查结构指针:P=&data,访问结构体的成员。它可以通过结构变量访问,即data,可以用等价的指针形式:(*p).a和P->a来访问结构体变量中的成员。

\n

71.B

72.C

73.B解析:按逻辑位运算的特定作用主要有3点:①用按位与运算将特定位清0或保留特定位:②用按位或运算将特定的位置设置为1;③用按位异或运算将某个变量的特定位翻转或交换两个变量的值。

74.A

75.D

76.A

77.AC语言中对于预处理命令行的位置没有明确的规定。通常,预处理命令位于源文件的开头,也可以写在函数与函数之间;不能在一行上写多条预处理命令:宏名一般习惯用大写字母表示,以便与变量名相区别,但这并非规定,也可用小写字母。

78.D

79.B

80.A在本题中,程序首先定义一个返回类型为整型的函数fun,该函数带有一个指针型的形参变量str,从主函数中对其调用时传递的参数我们可以知道,该指针指向的是一个数组,在该函数体中,首先定义两个整型变量,然后执行循环,循环变量i的初始值为0,循环结束的条件是str[i]!=’\\0’,表示取到的数组元素是字符串结束标识,即字符串中的字符被处理完,在循环体中,首先执行条件判断语句if(str[i]!=’’),如果结果为真,说明取到的当前字符不是空字符,这时执行str[j++]=str[i],即将非空格字符保存到数组中;如果为假,说明取到了空格字符,此时不保存,而接着执行下次循环跳过空格字符。循环结束后执行str[j]=’\\0’;,即保存字符结束标识符,用来标识字符串结束。通过上面的这些分析,我们可以知道函数fun的作用是去掉字符数组中的空格字符。

在主函数中,首先定义了一个大小为81的字符数组,然后调用函数clrscr()清除输入文本窗口,接着输出一条提示语句,执行gets(str);语句,该语句的作用是从键盘输入一个字符串到str数组,碰到换行符结束。然后调用函数fun,其实参为str。通过上面对函数fun作用的分析我们可以知道,调用函数后输入字符串中的空格符都被删除了,最后得到的字符串为asdafaaz67。

程序最后执行输出语句,输出字符数组str中的字符串,因此,程序最终的输出结果是asdafaaz67,本题答案选A。81.\n\t错误:t[i]=s[l];

\n正确:t[i]=s[i];

\n【解析】函数proc首先要实现将数组s中的元素顺序放在数组t中,即数组t中下标为i的元素在数组S中下标也为i,因此“t[i]=s[s1];”应改为“t[i]=s[i];”。\n82.1fun(STUa[],STU*s)2{3inti;4*s=a[0];/*假设第1个元素值最小*/5for(i=0;i<N;i++)/*如果在循环的过程中再发现比第1个元素值更小的元素则赋给*s*/6if(s->s>a[i].s)7*s=a[i];8}题目要求找出结构体数组元素中的最小值。假设数组中第1个元素值最小,即*s=a[0];,如果在循环的过程中发现比第1个元素值更小的,就将指针s指向该元素,直到找到值最小的元素。另外,本题还涉及结构体中的指向运算符。</i<p)为()。2021-2022年江苏省宿迁市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若已知一个栈的进栈序列是1,2,3…n,其输出序列是P1,P2,P3,…PN,若P1=n,则Pi(1<i<p)为()。

A.IB.n-iC.n-i+1D.不确定

2.若有定义"int(*pt)[3];",则下列说法正确的是()。

A.定义了基类型为int的三个指针变量

B.定义了基类型为int的具有三个元素的指针数组pt

C.定义了一个名为*pt、具有三个元素的整型数组

D.定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组

3.以下选项中关于C语言常量的叙述错误的是()。

A.所谓常量,是指在程序运行过程中,其值不能被改变的量

B.常量分为整型常量、实型常量、字符常量和字符串常量

C.常量可分为数值型常量和非数值常量

D.经常被使用的变量可以定义成常量

4.程序设计的任务包括()。

A.编写程序代码并上机调试B.确定所用数据结构C.确定所用算法D.以上选项均正确

5.有以下程序:#include<stdio.h>#definePT3.5;#defineS(x)PT*x*x;main(){inta=1,b=2;printf(“%4.1f\n”,S(a+b));}程序的运行结果是()。

A.7.5B.31.5C.程序有错,无输出结果D.14.0

6.给定数列(541,132,984,746,518,181,946,314,205,827)按照从小到大的顺序排列,采用冒泡排序时,第一趟扫描结果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

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

A.*=<<>%sizeof

B.<<*=>%sizeof

C.%=><<sizeof%

D.*=><<%sizeof

8.某二叉树结点的中序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E,该二叉树对应的层次遍历序列为()

A.E、G、F、A、C、D、B

B.E、A、C、B、D、G、F

C.E、A、G、C、F、B、D

D.E、G、A、C、D、F、B

9.以下函数调用语句中含有实参个数为().func((exp1,exp2),(exp3,exp4,exp5));

A.1个B.2个C.4个D.5个

10.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。

A.(rear+1)MODn=front

B.rear=front

C.rear+1=front

D.(rear-l)MODn=front

11.下列程序的运行结果是()。main{intx=1,y=3,a=0;while(x++!=(y-=l)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}A.2,3,2B.2,3,1C.1,3,3D.3,1,2

12.

13.

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

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

15.下列程序段的时间复杂度为()。A.O(i+j)B.O(n)C.O(n2)D.O(i*j)

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

17.下面关于哈希(Hash,杂凑)查找的说法正确的是()

A.哈希函数构造的越复杂越好,因为这样随机性好,冲突小

B.除留余数法是所有哈希函数中最好的

C.不存在特别好与坏的哈希函数,要视情况而定

D.若需在哈希表中删去一个元素,不管用任何方法解决冲突都只要简单地将该元素删去即可

18.下面的哪个保留字不能作为函数的返回类型()。

A.voidB.intC.newD.long

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

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

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

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

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

20.

二、2.填空题(20题)21.阅读下面程序,则执行后的输出结果是【】。

#include"stdio.h"

main()

{intx,y,z;

x=1;y=2;z=3;

if(x>y)if(x>z)printf("%d",x);

elseprintf("%d",y);

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

22.C语言中用______表示逻辑值为“真”,用数字“0”表示逻辑值为“假”。

23.有以下程序:

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

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

24.栈中允许进行插入和删除的一端叫做______。

25.下面程序的运行结果是()。##include<stdio.h>main(){inta,s,n,m;a=2;s=0;n=1;m=1;while(m<=4){n=n*a;s=s+n;++m;}printf("s=%d",s);}

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

main()

{inta=0;

a+-(a=8);

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

}

27.设i,j,k均是int型变量,则执行以下for循环后,k的值为【】。

for(i=0,j=10;i<=j;i++,j--)

k=i+j;

28.下面程序的输出结果是【】。

#defineMAX3

inta[MAX];

main()

{fun1();{un2(A);printf("\n");}

funl()

{intk,t=0;

for(k=0;k<MAX;k++,t++)a[k]=t+t;

}

fun2(intb[])

{intk;

for(k=0;k<MAX;k++)printf("%d",*(b+k));

}

29.函数mycmp(char*s,char*t)的功能是比较字符串s和t的大小,当s等于t时返回0,当s>t时返回正值,当s<t时返回负值。请填空。

mycmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}

return(【】);

}

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

#include<stdio.h>

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

prinff("%d\n",S(i+j));

}

31.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。

32.软件开发环境是全面支持软件开发全过程的【】集合。

33.数据结构分为线性数据结构和非线性数据结构,带链的队列属于()。

34.下列程序用来输出结构体变量ex所占存储单元的字节数。

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));

}

35.下面程序的运行结果是______。

#defineDOUBLE(x,y)x/y

main()

{intx=4,y=2,t;

t=DOUBLE(x+y,x-y);

printf("%d",t);

}

36.对软件是否能达到用户所期望的要求的测试称为【】。

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

#defineN4

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

{inti,j;

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

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

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

#defineP(a)printf("%d",a)

main()

{intj,a[]={1,2,3,4,5,6,7},i=5;

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

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

39.在循环中,continue语句与break语句的区别是:______语句只是结束本次循环,然后进行循环的条件判定。

40.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体"项目主管"与实体"项目"的联系属于【】的联系。

三、1.选择题(20题)41.C语言中各种基本数据类型的存储空间长度排列为()

A.char≤long≤int≤float≤double

B.double≤float≤long≤int≤char

C.char≤int≤long≤float≤double

D.float≤int≤long≤char≤double

42.下列程序的运行结果是()。#include<stdio.h>main(){intx=5,a=1,b=2,c=5,d=O;if(a<b)if(b!=3)if(!c)x=1;elseif(d)x=1;elsex=-1;printf("%d",x);}

A.-1B.0C.1D.不确定的值

43.以下叙述中正确的是______。A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以"#"开头

C.每个C程序必须在开头包含预处理命令行:#include<stdio.h>

D.C语言的预处理不能实现宏定义和条件编译的功能

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

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

45.下列合法的字符型常量是()。

A.'\x13'B.'\081'C.'65'D.\n

46.设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句

if(a<b)

if(c==d)y=0;

elsey=1;

该语句所表示的含义是

A.0a<b且c=dy={1a>=b

B.0a<b且c=dy={1a>=b且c≠d

C.0a<b且c=dy={1a<b且c≠d

D.0a<b且c=dy={1c≠d

47.下列用于printf函数的控制字符常量中,代表“竖向跳格”的转义字符常量是()。

A.\bB.\tC.\vD.\f

48.数据库设计的4个阶段是:需求分析、概念设计、逻辑设计和()。

A.编码设计B.测试阶段C.运行阶段D.物理设计

49.当变量c的值不为2、4、6时,值也为“真”的表达式是()。

A.(c==2)||(c==4)||(c==6)

B.(c>=2&&c<=6)||(c!=3)||(c!=5)

C.(c>=2&&c<=6)&&!(c%2)

D.(c>=2&&c<=6)&&(c%2!=1)

50.在C语言中,要求运算数必须是整型的运算符是()。

A./B.++C.!=D.%

51.有以下函数char*fun(char*p){returnp;}该函数的返回值是______。

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

52.已知字母A的ASCII码为十进制数65,下面程序的输出结果是()main(){charch1,ch2;ch1=A+5-3;ch2=A+6-3;printf("%d,%c\n",ch1,ch2);}

A.67,DB.B,CC.C,DD.不正确定的值

53.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。

A.地址传递B.单向值传递C.由实参传递给形参,再由形参传递给实参D.传递方式由用户指定

54.函数fun的返回值是fun(char*a,char*b){intnum=0,n=0;while(*(a+num)!='\0')num++;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;}

A.字符串a的长度B.字符串b的长度C.字符串a和b的长度之差D.字符串a和b的长度之和

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

56.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

57.有以下程序:main(){inti=0,S=0;do{if(i%2){i++;continue;}i++;s+=i;)while(i<7);printf("%d\n",s);}执行后输出结果是()。

A.16B.12C.28D.21

58.有下列程序:main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}执行后的输出结果是()。

A.5B.24C.32D.40

59.下列关于“数据库系统(DBS)”的叙述中,正确的一条是______。

A.DBS是指在计算机系统中引入数据库后的系统构成

B.DBS是帮助用户建立、使用和管理数据库的一种计算机软件

C.DBS是用户建立的若干数据库文件的集合

D.DBS是一种新颖的关系数据库管理系统

60.有以下程序

#include<stdio.h>

intfun(chars[])

{intn=0;

while(*s<=′9′&&*s>=′0′){n=10*n+*s-′0′;s++;}

return(n);

}

main()

{chars[10]={′6′,′1′,′*′,′4′,′*′,′9′,′*′,′0′,′*′};

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

}

程序的运行结果是

A.9B.61490C.61D.5

四、选择题(20题)61.以下定义数组的语句中错误的是()。

62.

63.有以下程序若想通过键盘输入,使得al的值为12,a2的值为34,el的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b则正确的输入格式是()。

64.

65.若有定义语句:“intkl一10,k2=20;”,执行表达式(kl=kl>k2)(k2=k2>

k1)后,kl和k2的值分别为()。

A.0和1B.0和20C.10和1D.10和20

66.以下程序段中,不能正确给字符串赋值(编译时系统会提示错误)的是:()

67.

68.main()

{intn;(n=6*4,n+6),n*2;printf(“n=%d\n”,n);}

此程序的输出结果是______________.

A.30B.24C.60D.48

69.交换两个变量的值,不允许用临时变量,应该使用下列()位运算符。

A.&B.^C.D.E.F.~

70.

已知有如下结构体:

structsk

{inta;

floatb;

}data,*p;

若有P=&data,则对data的成员a引用正确的是()。

A.(*p).data.aB.(*p).a;C.p->data.aD.p.data.a

71.

72.

73.交换两个变量的值,不允许用临时变量,应该使用下列()位运算符。A.A.&B.^C.||D.~

74.

75.

76.

77.以下叙述中错误的是(

)。A.预处理命令行必须位于源文件的开头B.宏替换可以出现在任何一行的开始部位C.宏替换的作用一直持续到源文件结尾D.宏替换不占有程序的运行时间

78.

79.

80.如下程序段

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

intfun(char*str)

{inti,j=0;

for(i=0;str[i]!=’\0’;i++)

if(str[i]!=’’)str[j++]=str[i];

str[j]=’\0’;

}

main()

{

charstr[81];

intn;

clrscr();

printf("Inputastring:");

gets(str);

fun(str);

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

}

当运行程序时,输入asdafaaz67<回车>,则输出是A.A.asdafaaz67

B.asdafaaz67

C.asd

D.z67

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:先将字符串s中的字符按顺序存放到t中,然后把S中的字符按正序连接到t的后面。例如,当s中的字符串为WXYZ时,则t中的字符串应为WXYZWXYZ。

请改正程序中的错误,使它能得出正确的结果。

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*s,char*t)

{

inti,s1;

s1=strlen(s);

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

//****found****

t[i]=s[s1];

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

t[s1+i]一s[i];

t[2*s1]=\O0;

}

voidmain

{

chars[100],t[100];

system("CLS");

print{("\nPleaseenterstrings:");

scanf("%s",s);

proc(s,t);

printf("Theresultis:%s\n",t);

}六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun(),该函数的功能是找出成绩最低的学生记录,通过形参将其返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:1#include<stdio.h>2#include<string.h>3#include<conio.h>4#include<stdlib.h>5#defineN106typedefstructss7{charnum[10];8ints;9}STU;10fun(STUa[],STU*s)11{1213}14voidmain()15{16FILE*wf;17STUa[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71}},m18inti;19system("CLS");20printf("*****Theoriginaldata*****\n");21for(i=0;i<N;i++)22printf("No=%sMark=%d\n",a[i],num,a[i].s);23fun(a,&m);24printf("****TheResult****\n");25printf("Thelowest:%s,%d\n",m.num,m.s);26/*************************/27wf=fopen("out.dat'*,"w");28fprintf(wf,"%s,%d",m.num,m.s);29fclose(wf);30/*************************/

参考答案

1.C

2.D\n数组指针是指向数组的一个指针,int(*pt)[3]表示一个指向3个int元素的数组的一个指针。

\n

3.D此题考查的是常量和变量的定义,常量不是经常使用的变量,而是一个确定的数值,所以答案选择D。

4.D程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。程序设计的任务包括选项A)、B)、c)等方面。

5.C宏定义不是C语句,末尾不需要有分号。语句“printf(“%4.1f\\n”,S(a+b));”展开后为“printf(“%4.1f\\n”,3.5;*a+b*a+b;);”,所以程序会出现语法错误。故本题答案为C选项。

6.D

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

[*]

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

8.C

9.B

10.B

11.D本题考查"drhile循环。第一次循环,y=y-1,y=2,循环条件成立,x=1,X++后值为1,x自加变成2,进入循环,a=a+1=1,判断if语句条件是否成立,y<x不成立,接着执行下一次循环。第二次循环,x=2,y-1=1,循环条件成立,进入循环,a=a+1=2,判断if语句的控制条件是否成立,y<X成立,执行break语句,退出循环。结果为D。

12.D

13.D

14.C难易程度:易

15.C

16.D

17.C

18.C

19.B【答案】B

【知识点】算法描述

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

20.D

21.33解析:C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf('%d\\n',z);语句。

22.非0非0解析:逻辑运算中,非0表示逻辑“真”,用。表示逻辑“假”。

23.-4-4解析:本题中,n=0,可以判断(!n)为真,执行x=x-1=2-1=1;m=1,可以判断(m)为真,执行x=x-2=1-2=-1;进而可以判断(x)为真,执行x=x-3=-1-3=-4。所以,最后输出为-4

24.栈顶栈顶解析:栈是限定在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端叫做“栈顶”,不允许插入和删除的一端叫做“栈底”。

25.s=30s=30解析:分析循环条件“m=1,m<=4”,所以循环4次。第1次:n=n*a=2,s=s+n=2;m=2。第2次:n=n*a=4,s=s+n=6;m=3。第3次:n=n*a=8,s=s+n=14;m=4。第4次:n=n*a=16,s=s+n=30。

26.1616解析:在程序中首先将8赋值给变量a,然后在进行复合赋值运算。即a=a+a=8+8=16,所以该空格处应该填16。

27.10

28.24

29.*s-*t*s-*t解析:本题考查比较字符串的大小。函数的两个形参是两个字符指针变量,指针变量的值是字符串的首地址,*s和*t表示s和t指向的第一个字符,在while循环中,通过s和t指针的移动,不断改变所指字符,通过返回s和t的第一个不同字符的ASCII码的差值*s-*t得到结果。

30.8181解析:带参数的宏定义是按#define命令行中指定的字符串从左到右进行替换。本题替换后得到:4*i+j*i+j+1,代入i,j的值得81。

31.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。

32.软件工具软件工具

33.线性数据结构线性数据结构解析:队列的链式存储称为链队列,它属于线性数据结构。

34.ex或structstex或structst

35.2

36.有效性测试有效性测试

37.a[0][i]b[i][0]a[0][i]\r\nb[i][0]解析:b[i][N-1]=a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b[i][0]=a[N-1][i]实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组中的第0列。

38.5555解析:分析程序执行过程,第一次循环时,j=3,i-5,因为switch(3),所以执行case3,调用P(a[-i)=p(a[4])=P(5),输出5;第二次循环时,j=2,i=4,因为switch(2),所以执行case2,调用P(s[i++])=P(a[4])=P(5),输出5,之后i的n等于5。

39.continuecontinue解析:continue语句只是结束本次循环,然后进行循环的条件判定。break语句是终止整个循环的执行,不再进行条件判定。

40.一对多(或1∶N)一对多(或1∶N)解析:两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有3种,即一对一(1∶1)的联系、一对多(1∶N)或多对一(N∶1)的联系和多对多(N∶N)的联系。

41.C

42.A解析:本题考查ifelse语句。第1个if语句,先判断条件,发现a<b条件成立,执行下列的语句;第2个if语句,先判断条件,发现b!=3条件成立,执行下列的语句:第3个if语句,先判断条件,c=5,则!c条件不成立,执行与其配对的else语句;第4个if语句,先判断条件,d=0,条件不成立,则x=-1,结束循环。

4

温馨提示

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

评论

0/150

提交评论