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

下载本文档

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

文档简介

2021年吉林省吉林市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.下列二维数组的说明中,不正确的是()。

A.floata[][4]={0,1,8,5,9};

B.inta[3][4]

C.#defineN5floata[N][3]

D.inta[2][9.5];

3.下面叙述中错误的是()。

A.软件测试的目的是发现错误并改正错误

B.对被调试的程序进行“错误定位”是程序调试的必要步骤

C.程序调试通常也称为Debug

D.软件测试应严格执行测试计划,排除测试的随意性

4.有以下程序:main(){chara[]={‘a',‘b',‘c',‘d',‘e',‘f',‘g',‘h',‘\0'};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d\n",i,j);}程序运行后的输出结果是A.9,9B.8,9C.1,8D.9,8

5.已知字符A的ASCⅡ代码值是65,字符变量c1的直是A,c2的值是D。执行语句printf("%d,%d",c1,c2-2);后,输出结果是()。

A.A,BB.A,68C.65,66D.65,68

6.有以下程序:#include<stdio.h>intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;…}则以下函数调用语句错误的是()。

A.k=f(a,b);B.k=add(a,b);C.k=(*f)(a,b);D.k=*f(a,b);

7.执行下面的程序后,a的值为()。main{inta,b;for(a=1,b=1;a<=10;a++){if(b%3==l){b+=3;continue;}b-=5;}}A.7B.8C.9D.10

8.下面关于串的的叙述中,哪一个是不正确的()。

A.串是字符的有限序列

B.空串是由空格构成的串

C.模式匹配是串的一种重要运算

D.串既可以采用顺序存储,也可以采用链式存储

9.

10.第

11

若有定义:char*st="howareyou";下列程序段中正确的是

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

11.程序中若有如下说明和定义语句charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;.....}以下选项中对函数Fun的正确调用语句是______。A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s);

12.以下叙述中正确的是

A.用C程序实现的算法必须要有输入和输出操作

B.用C程序实现的算法可以没有输出但必须要有输入

C.用C程序实现的算法可以没有输入但必须要有输出

D.用C程序实现的算法可以既没有输入也没有输出

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

A.654321

B.65432

C.65453452

D.654534521

14.

15.下面哪种排序算法是稳定的()

A.快速排序B.堆排序C.归并排序D.选择排序

16.设有6个结点的无向图,该图至少应有()条边才能确保是一个连通图。

A.5B.6C.7D.8

17.有以下程序:#include<stdio.h>main(){inta=-2,b=2;for(;++a&&--b;)printf(“%d,%d\n”,a,b);}程序运行后的输出结果是()。

A.0,1B.0,0C.1,-1D.0,2

18.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为()

A.a<>0B.!aC.a=0D.a

19.有以下程序:#include<stdio.h>main(){inta=-2,b=0;while(a++++b);printf("%d,%d\n",a,b);}程序运行后的输出结果是()。A.1,3B.0,2C.0,3D.1,2

20.

二、2.填空题(20题)21.下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

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

23.有以下程序:

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;

*q=*(p+5);

printf("%d%d\n",*p,*q);

}

程序运行后的输出结果是【】。

24.与表达式a+=b等价的另一书写形式是______。

25.算法执行过程中所需要的基本运算次数称为算法的______。

26.在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。

27.下面程序的运行结果是【】。

#inelude<stdio.h>

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);printf("%d\n",s);

}

28.函数pi的功能是根据以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+…+1(n*n)

现在请你在下面的函数中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*3));

}

29.下面程序的运行结果是【】。

intf(inta[],intn)

{if(n>1)returna[0]+f(&a[1],n-1);

elsereturna[0];

}

main()

{intaa[3]={1,2,3},s;

s=f(&aa[0],3);

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

}

30.下列程序的输出结果是16.00,请填空。

#include<stdio.h>

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

31.耦合和内聚是评价模块独立性的两个主要标准,其中______反映了模块内各成分之间的联系。

32.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

33.有以下程序:

voidfun(int*a,inti,intj)

{intt;

if(i<j)

{t=a[i];a[i]=a[j];a[j]=t;

i++;j--;

fun(a,i,j);

}

}

main()

{intx[]=(2,6,1,8),i;

fun(x,0,3);

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

}

程序运行后的输出结果是【】。

34.一棵二叉树第六层(根节点为第一层)的节点数最多为______。

35.一棵二叉树第六层(根结点为第一层)的结点数最多为______个。

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

37.在面向对象的程序设计中,类描述的是具有相似性质的一组【】。

38.以下程序是求矩阵a,b的和,结果存入矩阵c中,并按矩阵形式输出,请填空。

#include<stdio.h>

main()

{inta[3][4]={13,-2,7,5},{1,0,4,-3},{6,8,0,2}};

intb[3][4]={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};

inti,j,c[3][4];

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

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

c[i][j]=【】;

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

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

printf("%3d",c[i][j]);

printf("\n");}}

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

main()

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

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

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

}

40.以下程序通过函数SunFun求。这里f(x)=x2+l,由F函数实现。请填空。

main()

{

printf("Thesum=%d\n",SunFun(10));

}

SunFun(intn)

{

intx,s=0;

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

S+=F(______);

returns;

}

F(intx)

{

return(______);

}

三、1.选择题(20题)41.当输入为“quert?”时,下面程序的执行结果是()#indude<stdio.h>main(){charc;c=getehar();while((c=getchar())!='?')putchar(++c);}

A.QuertB.vfsuC.quert?D.rvfsu?

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

A.数据的逻辑结构与存储结构必定是一一对应的

B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构

C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构

D.以上三种说法都不对

43.下述程序的输出结果是

#include<stdio.h>

voidmain()

{inta[5]={2,4,6,8,10};

int*p=a,**q=&p;

printf("%d,",*(p++));

printf("%d",**q);}

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

44.对以下二叉树

进行中序遍历的结果是()。

A.ACBDFEGB.ACBDFGEC.ABDCGEFD.FCADBEG

45.下面各语句行中,能正确进行赋值字符串操作的语句是()

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

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

C.char*s;s="ABCDE";

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

46.下列程序的运行结果是#include"stdio.h"main(){intx=-9,y=5,z=8;if(x<y)if(y<0)z=0;elsez+=1;printf("%d\n",z);}

A.6B.7C.8D.9

47.以下程序的输出结果是()。#include<stdio.h>intm=13;intfun(intx,inty){intm=2;return(x*y-m);}main(){inta=7,b=6;printf("%d",fun(a,B)/m);}

A.1B.3C.7D.10

48.在执行完下列的C语句段之后,则B的值是()。chara='A';intb;B=((34&&56)&&(a<'b'));

A.0B.1C.TRUED.FALSE

49.有以下程序:main(){inta=1,b=2,m=0,n=0,k;k=(n=b>A)||(m=a<B);printf("%d,%d\n",k,m);}程序运行后的输出结果是

A.0,0B.0,1C.1,0D.1,1

50.若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元,则应填入()int*pp=_______malloc(sizeof(int));

A.intB.intC.(*int)D.(into*)

51.栈和队列的共同特点是()。

A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点

52.数据库、数据库系统和数据库管理系统之间的关系是()。

A.数据库包括数据库系统和数据库管理系统

B.数据库系统包括数据库和数据库管理系统

C.数据库管理系统包括数据库和数据库系统

D.三者没有明显的包含关系

53.下面程序的输出结果是()maint(){char*s="121";intk=0,a=0,b=0;do{k++;if(k%2==0){a=a+s[k]-'0';continue;}b=b+s[k]-'0';a=a+s[k]-'0'}wnile(s[k+1]);printf("k=%da=%db=%d\n",k,a,b);}

A.k=3a=2b=3B.k=3a=3b=2C.k=2a=3b=3D.k=2a=2b=3

54.下列不属于算法特性的是

A.确定性B.可行性C.有输出D.无穷性

55.以下有4组用户标识符,其中合法的一组是()。

A.FOr-subCase

B.4dDOSize

C.f2_G3IFabc

D.WORDvoiddefine

56.以下4个选项中,不能看作一条语句的是

A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;

57.现有如下程序段#include"stdio.h"main(){inta[5][6]={23,3,65,21,6,78,28;5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};inti=0,j=5;printf("%d\n",*(&a[0][0]+2*i+j-2));}则程序的输出结果为

A.21B.78C.23D.28

58.有下列程序main(){doubled;floatf;longl;inti;i=f=1=d=20/3;printf("%d%1d%f%f\n",i,1,f,D);}程序运行后的输出结果是(小数点后只写1位)()

A.666.06.0B.666.76.7C.666.06.7D.666.76.0

59.下列程序的输出结果是()。#include<stdio.h>intb=2;intfunc(int*a){b+=*a;returnb;}main(){inta=1,t=2;t+=func(&a);printf("%d\n",t);}

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

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

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

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

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

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

四、选择题(20题)61.有以下程序

main()

{

intn[3],i,j;

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

n[i]=0;

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

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

n[j]=n[i]+1;

printf("%d\n",n[1]);

}

程序运行后的输出结果是A.A.2

B.1

C.0

D.3

62.有以下程序:

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

A.12

B.15

C.16

D.20

63.

64.若有定义:doublex;,则表达式IX=0,x+10,x+十的值是()。

A.11.0B.10.0C.0.0D.1.0

65.若有定义语句“inta,b;doubleX;”,则下列选项中没有错误的是()。

A.switch(X%2){case0:a++;break;casel:b++;break;default:a++;b++;}

B.switch((int)x/2.O){case0:a++;break;casel:b++;break;default:a++;b++;}

C.switch((int)X%2){case0:a++;break;casel:b++;break;default:a++;b++;}

D.switch((int)(x)%2){case0.0:a++;break;casel.0:b++;break;default:a++;b++;}

66.

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

main()

{inta=4,b=5,c=0,d;

d=!a&&!b║!c;

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

}

A)1B)0

C)非0的数D)-1

68.设x为int型变量,则执行以下语句后,x的值为()。x=10;x=x-=x-x;

A.10B.20C.40D.30

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

A.

B.

C.ab

D.a<<b

70.

71.设有定义:intm=0;。以下选项的四个表达式中与其他三个表达式的值不相同的是()。

A.++mB.m+=1C.m++D.m+1

72.若有以下说明和语句,请选出哪个是对C数组元素的正确引用()。

A.cp+1B.*(cp+3)C.*(cp+1)+3D.*(*cp+2)

73.两个或两个以上模块之间联系的紧密程度称为()。

A.耦合性B.内聚性C.复杂性D.数据传输特性

74.下列条件语句中,输出结果与其他语句不同的是()

75.有如下程序:

则b的值是()。

A.15B.16C.18D.19

76.若有下列定义,则对a数组元素地址的正确引用是()。inta[5],*p=a;

A.p+5B.*a+1C.&a+1D.&a[0]

77.

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

A.只能在循环体内和switch语句体内使用break语句

B.eotinue语句的作用是结束整个循环的执行

C.在循环体内使用break语句或continue语句的作用相同

D.从多层循环嵌套中退出时,只能使用got0语句

79.下列字符串是标识符的是()。

A.aaB.a-classC.intD.LINE1

80.若有定义“floata=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为()。

A.两个语句都是将变量a的值赋予变量P

B.*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P

C.*p=a是将变量a的值赋予变量b,而&a是使P指向变量a

D.两个语句都是使P指向变量a

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。

例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应为78.875。注意:部分源程序在文件PROGl.C中。

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

参考答案

1.D

2.D解析:C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式:二维数组的一般定义格式是:类型说明符数组名[常量表达式][常量表达式]。

3.A软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。故答案为A选项。

4.D解析:sizeof(\u3000)函数返回字符串所占字节数,strlen函数返回字符串的长度,其中'\\0'是一个转义字符,

5.C在C语言中,用整型格式输出字符时,输出的是其ASCII码值。

6.D运算符“()”的优先级高于运算符“*”。“(*f)()”定义函数指针,f是指向函数的指针。执行语句“f=add;”,将函数add的首地址赋给指针f,所以调用函数add可以写为f。函数的返回值是整型,不是指针类型,不能用运算符,故*f(a,b);”的调用方式错误。故本题答案为D选项。

7.D本题考查continue的用法,continue语句的作用是结束本次循环,直接进行下次循环。所以在程序中,只有当a=10时,才退出循环,故选择D选项。

8.B

9.D

10.A本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:str1='China',如果想把“China”这5个字符放到数组str1中,除了逐个输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如,strcpy(str1,'China');或strcpy(str1,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给str1):str1=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

strcpy函数的结构是:strcpy(字符数组1,字符串2)

其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,“字符数组1”必须写成数组名形式,如(str1),“字符串2”可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

11.A解析:题中将函数fun的入口地址赋给了指针变量f1,这时f1和fun都指向函数的开头,调用*f1就是调用函数fun。

12.C算法具有的5个特性是:有穷性、确定性、可行性、有0个或多个输入、有一个或多个输出。所以说,用C程序实现的算法可以没有输入,但必须要有输出。因此本题答案选C。

13.C程序首先定义整型变量a和b,a的初值为123456。接着通过while循环,判断a的值是否为0,若不为0,则执行循环体。每次循环将a当前值的个位数字(a%10)赋给b,a自身除以10。再通过switch语句判断b的值执行对应分支语句。所以对应a的每个个位数,b的取值为6,5,4,3,2,1。当b取值为6时,执行default,输出6,接着继续执行case1,通过break退出switch。执行下一次循环,当b取值为5时,执行case5输出5。执行下一次循环,当b取值为4时,执行case4输出4,继续执行case5输出5。接着执行下一次循环,当b取值为3时,执行case3输出3,执行case4输出4,执行case5输出5;当b取值为2时,执行case2输出2,通过break退出switch;当b取值为1时,执行break,此时a的取值为0,循环终止。综上,程序输出结果为:65453452。本题答案为C选项。

14.A

15.C

16.A:在一个无向图G中,若从顶点Vi到顶点Vj有路径相连,则称Vi和Vj是连通的。连通图是指任意两个结点之间都有一个路径相连。6个节点的无向图,至少要5个边才能确保是任意两个节点之间都有路径相连。下图是一种可能的连接方式:故本题选A。

17.A在语句“for(;++a&&--b;)”中,for循环的表达式1和表达式3为缺省项。首先判断条件表达式“b”。当“a=-2,b=2”时,第1次执行“++a”和“--b”,条件表达式为真,循环条件成立。第2次执行“++a”为0,由于运算符,当第1个条件为假时,不执行第2个条件,因此“b=1”,发生短路,“--b”不再执行。因此输出的最终值为0,1。故本题答案为A选项。

18.D

19.D输出的结果是:-1,1\r\n0,2\r\n1,2

20.C

21.c>='a'&&c<='z'c>='a'&&c<='z'解析:小写字母在内存中以ASCII的形式存入,且从a到z依次递增,所以可以直接用c>='a'&&c<='z'判断是不是小写字母;c!='\\n'判断是用换行符结束循环。

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

23.运行后报错运行后报错解析:指针q没有指向确定的存储单元,故不能赋值。

24.a=a+ba=a+b解析:a+=b与a=a+b等价,作用是把变量a的值加b后再赋给变量a。

25.时间复杂度时间复杂度解析:算法在执行过程中所执行的基本运算的次数,也就是执行算法所需要的计算工作量,称为算法的时间复杂度。

26.类类解析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。

27.66解析:已知aa[3]={1,2,3},n=3,调用函数f,n>1成立,执行a[0]+f(&a[1],n-1);即1+f(&a[1],2),递归调用函数f,将a[1]的地址作为参数传给数组a,使数组a的首地址变为&a[1],数组中的元素只有2,3;2传给n,这时n=2,n>1仍然成立,继续调用a[0]+f(&a[1],n-1);即执行1+2+f(&a[1],1),因为上次递归调用函数f后数组中的元素为2,3,所以此次的a[1]为3,调用后的a[0]为3。所以最后结果为1+2+3=6。

28.1.0/(i*i)或(double)1/(i*i)1.0/(i*i)或(double)1/(i*i)解析:表达式1+1/(2*2)+1/(3*3)+…+1(n*n)可写为1/(1*1)+1/(2*2)+1/(3*3)+…+1(n*n)

n

即;∑1÷(i×i)

i=1

对应的C语言的表达式s=s+1.0/(i*i)。注:必须要写成1.0的形式,否则1/(i*i)返回值为其值截尾取整,即恒为0。

29.66解析:经过分析将递归函数写成其数学表达式如下:

本题中定义了一个长度为3的数组aa并初始化。接着调用递归函数f,由上面的数学表达式以计算其返回值s=1+2+3=6,所以空格处应该填6。

解析:本题以浮点格式输出z值,宽度为5,有2位小数。应该注意的是,两个整数运算结果仍为整数,如1/2的结果为0。本题可逐步求解:

16.00=9/2+2*x/1.1+1/2

16.00=4+2*x/1.1+0

12.00=2*x/1.1

所以,x的值为6.6。

31.内聚内聚

32.存储结构数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。

33.81628162解析:第一次调用函数fun时,x[0]=2、xL1]=6、x[2]=1、x[3]=8,执行完函数fun后,x[0]与x[3]的值互换,即x[0]=8、x[1]=6、x[2]=1、x[3]=2;第二次调用函数fun时,i=1、j=2,故将x[1]与x[2]的值互换,即得x[0]=8、x[1]=1、x[2]=6、x[3]=2。

34.在二叉树的第k层上,最多有2k-1(k>1)个结点。

35.3232解析:二叉树的一个性质是,在二叉树的第k层上,最多有2k-1(k≥1)个结点。由此,26-1=32.所以答案为32。

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

37.对象对象解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。

38.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:此题是双重for循环结构应用在了二维数组中。外层for循环用来控制二维数组的行,内层for循环控制二维数组的列。

39.22132,2,1,3解析:本题考查++,--运算符和条件运算符的使用。

“表达式1?表达式2:表达式3”的功能是:表达式1的值若非0,则计算表达式2的值,且表达式2的值为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。

本题中,x=1,y=2时,x<y成立,输出y的值2;y=2,z=3时,z<y不成立,执行y++,输出2后y值增1,所以最后一个输出x的值不变为1,y的值为增加后的3。

40.xX*X+1或1+x*xx\r\nX*X+1或1+x*x解析:题目中要求从x=0开始将f(x)的值累加起来,直到x=10。在SunFun()函数中用了一个for循环,每循环一次将f(x)累加到s中,所以在本题的第一个空格处我们应该填x,,然后x+1,共循环10次。F()函数的功能应该是求数学表达式f(x)得值,所以其返回值应该为x*x+1。

41.B

42.D解析:一般来说,一种数据的逻辑结构根据需要可以表示成多种存储结构,因此,数据的逻辑结构与存储结构不一定是一一对应的。选项A中的说法是错误的。虽然计算机的存储空间是向量式的存储结构,但由于一种数据的逻辑结构根据需要可以表示成多种存储结构,例如,线性链表是线性表的链式存储结构。一般来说,性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的。因此,数据的存储结构不一定是线性结构。选项B中的说法也是错误的。虽然程序设计语言中的数组一般是顺序存储结构,但是,利用数组也能处理非线性结构。例如,满二叉树与完全二叉树是非线性结构,但对于满二叉树与完全二叉树来说,根据完全二叉树的性质6,可以按层序进行顺序存储,即利用程序设计语言中的数组来存储,这样,不仅节省了存储空间,又能方便地确定每一个结点的父结点与左右子结点的位置。对于一般的二叉树来说,也可以将二叉树中每一个结点的左指针、右指针以及数据域分别用三个数组中的对应元素来存储,即实际上也是利用了程序设计语言中的数组来处理二叉树这样的非线性结构。选项C中的说法也是错误的。综上所述,选项A、B与C中的说法都是错误的。

43.D解析:考查一维数组的指针和指向指针的指针两个知识点。通过赋值,指针p和q都指向了数组a的首地址,*(p++)先引用数组元素,然后p++,所以输出结果为2,**q指向的数组元素为4。

44.A解析:二叉树的中序遍历递归算法为:如果根不空,则①按中序次序访问左子树,②访问跟结点,⑧按中序次序访问右子树;否则返回。本题中,根据中序遍历算法,应首先按照中序次序访问以C为根结点的左子树,然后再访问根结点P,最后才访问以E为根结点的右子树。遍历以C为根结点的左子树同样要遵循中序遍历算法,因此中序遍历结果为ACBD;然后遍历根结点P;遍历以E为根结点的右子树,同样要遵循中序遍历算法,因此中序遍历结果为EG。最后把这三部分的遍历结果按顺序连接起来,中序遍历结果为ACBDFEG。因此,本题的正确答案是选项A。

45.C

46.D解析:if...else语句的执行过程如下,首先计算if后面一对圆括号内表达式的值,若表达式的值为非0,执行if子句,然后跳过else子句,去执行if语句后的下一条语句;若表达式的值为0,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。C语言的语法规定,else子句总是与前面最近的不带else的if匹配,与书写格式无关,本题目的后一个ifelse相当于嵌套在第一个if子句里,相当于x<y&&y<0时,z=0;当x<y&&y>=0时,z=z+1。

47.B

48.B解析:本题考查C语言3个知识点:①将一个字符赋给一个字符变量时,并不是将该字符本身存储到内存中,而是将该字符对应的ASCII码存储到内存单元中;②大写字母的ASCII码值小于其对应小写字母的ASCII码值;③只要逻辑与运算符&&的两个运算对象都为非零,返回值就是1。

49.C解析:本题考查“逻辑或”运算的特例。本题中执行语句k=(n=b>a)||(m=a<b)时,首先计算表达式(n=b>a)||(m=a<b)的值,因b=2,a=1,所以b>a成立,即得n=1,故表达式(n=b>a)||(m=a<b)的值为真,不再执行表达式m=a<b,故执行完表达式k=(n=b2>a)||(m=a<b)后,n=1、m=0、k=1。

50.D

51.C解析:考查栈和队列概念的掌握。栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种'后进先出'的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种'先进先出'的线性表。模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。

52.B数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。数据库可以被直观地理解为存放数据的仓库,只不过这个仓库在计算机的大容量存储器上,例如,硬盘就是一种最常见的计算机大容量存储设备。数据必须按一定的格式存放,因为它不仅需要存放,而且还要便于查找和使用。

数据库管理系统(DBMS)是位于用户与操作系统之间的完成数据管理的系统软件。它是用户与数据库的接口。应用程序一般要通过DBMS才能访问数据库。在数据库建立、运用和维护时对数据库进行统一控制。

数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。数据库是整个数据库系统最基本的成分。数据库管理系统是数据库系统的核心。数据库管理员是数据库系统的责任维护者,负责对数据库系统的整体维护。

综上所述,本题中只有B选项的描述是正确的。

53.C

54.D解析:一个算法必须具有5个特性,即有穷性、确定性、可行性、有输入、有输出。其中有穷性是指算法必须总是在执行完有穷步之后结束,而且每步都在有穷时间内完成。

55.C解析:选项A中for和case为C语言中的保留字,不能作为用户标志符,故A错误。选项B中的4d其开头的第一个为数字,而在C语言中规定,第一个字符必须为字母或者下划线,故B错误;选项D中void为C语言中的保留字,不能作为用户标志符,故D错误。所以,4个选项中选项C符合题意。

56.D解析:选项D)为两条语句。

57.A解析:通过地址来引用二维数组,若有以下定义:inta[3][4],i,j;且当0≤i≤3,0≤j<4则可以有以下几种方式来引用数组中的第i行,第j列的元素:\ue008a[i][j]\ue009,\ue008*(a[i]+j),\ue009*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+4*i+j)。表达式&a[0][0]+2*i+j-2相当于是地址&a[0][0]加上多少偏移量。

58.A

59.B解析:本题考查函数调用时的参数传递。在执行函数func时,由于全局定义了一个变量b,所以在函数体中执行时b=2+1=3,最终t=2+3=5。

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

61.D初始时定义一个大小为3个一维整型数组,第一个for语句是对数组赋初值,每个值都为0。后面是一个for语句的嵌套调用,外层的循环变量i的取值为[0,2],内层循环变量的取值范围为[0,2]。最初外层的循环变量i=0,内层的循环变量j取值从0到2,计算n[j]=n[0]+1,得到n[0]=1,n[1]=1,n[2]=1。外层for语句的循环变量为1时,内层的循环变量j取值从0到2,计算n[j]=n[1]+1,得到n[0]=2,n[1]=2,n[2]=2。外层for语句的循环变量为2时,内层的循环变量j取值从0到2,计算n[j]=n[2]+1,得到n[0]=3,n[1]=3,n[2]=3。最后的输出结果为3。

62.A本题的考查点是带参数的宏定义。本题的程序中就定义了一个带参数的宏,对F(a++,b++)进行展开后,宏的返回值为12,注意a++,b++都是先使用变量值,再自增。

63.B

64.Cc语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运笑结束后才进行右边的子表达式的运算。也麓是辽,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。后置自增运算:k++表示先运算,后自■:曹置自增运算:++k表示先自加,后运算。因此,表达式l;O,I+10。x++的计算过程为首先赋值x=

温馨提示

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

评论

0/150

提交评论