2021-2022年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计预测试题(含答案)_第1页
2021-2022年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计预测试题(含答案)_第2页
2021-2022年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计预测试题(含答案)_第3页
2021-2022年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计预测试题(含答案)_第4页
2021-2022年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计预测试题(含答案)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年内蒙古自治区赤峰市全国计算机等级考试C语言程序设计预测试题(含答案)学校:________班级:________姓名:________考号:________

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

A.x&&y

B.x<=y

C.x||y+z&&y-z

D.!((x<y)&&!z||1)

2.若有定义;intw[3][5];,则以下不能正确表示该数组元素的表达式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)

3.

4.

5.CPU能够直接访问的存储器是

A.软盘B.硬盘C.RAMD.CD-ROM

6.一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为()。

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

7.

8.有以下程序:#include<stdio.h>main(){intb[3][3]=(0,1,2,0,1,2,0,1,2},i,j,t=l;for(i=0;i<3;i++)for(j=1;j<=i;j++)t+=b[i][b[j][i]];printf("%d\n",t);}程序运行后的输出结果是()。A.1B.3C.4D.0

9.下列选项中与“if(a==1)a=b;elsea++;”语句功能不同的switch语句是()。

A.switch(a==1){ case0:a=b;break; case1:a++;}

B.switch(a){ case1:a=b;break; default:a++;}

C.switch(a){ default:a++;break; case1:a=b;}

D.switch(a==1){ case1:a=b;break; case0:a++;}

10.若有以下程序段,w和k都是整型变量:┇w=k:LB:if(w==0)gotoLE;W--:printf("*")gotoLB;LE;┇则不能与上面程序段等价的循环语句是()。A.for(w=k;w!=0;w--)printf("*");

B.for(w=k;w;--w)printf("*");

C.w=k;while(w--!=0)printf("*");

D.w=k:w++;do{w--;printf("*");}while(w!=0);

11.下列选项中不是字符常量的是()。A.A.'\v'

B.'\x2a'

C.'a'

D."\0"

12.在下列几种排序方法中,空间复杂度最高的是()

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

13.

14.有以下程序main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是______。A.2,3,3B.2,3,2C.2,3,1D.2,2,1

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

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

16.有嵌套的if语句:if(a<b) if(a<c)k=a; elsek=c;elseif(b<c)k=b;elsek=c;以下选项中与上述if语句等价的语句是()。

A.k=(a<b)?((b<c)?a:b):((b>c)?b:c);

B.k=(a<b)?((a<c)?a:c):((b<c)?b:c);

C.k=(a<b)?a:b;k=(b<c)?b:c;

D.k=(a<b)?a:b;k=(a<c)?a:c;

17.有以下程序:Voidf(inta[],ihti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,i-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d",aa[i]);printf("\n");}执行后输出结果是

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

18.下面程序的运行结果是

#include<stdio.h>

main()

{inta=28,b;

chars[10],*p;

p=s;

do{b=a%16;

if(b<10)*p=b+48;

else*p=b+55;

p++;a=a/5;}while(a>0);

*p=′\0′;puts(s);}

A.10B.C2C.C51D.\0

19.

20.以下说法正确的是()。

A.C语言只接受十进制的数

B.C语言只接受二进制、八进制、十六进制的数

C.C语言只接受二进制、十进制、十六进制的数

D.C语言只接受八进制、十进制、十六进制的数

二、2.填空题(20题)21.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

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

{if(x[m]>i{i=x[m];p0=m;}

elseif(x[m]<j{j=x[m];p1:m;}

}

t=x[p0];x[p0]=x

22.有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组中。算法是:假设排序顺序是从小到大,对输入的数,检查它在数组中哪个数之后,然后将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。请在程序中的空白处填上一条语句或一个表达式。

#defineN100

main()

{floata[N+1],x;

inti,p;

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

scanf("%f"&a[i]);

scanf("%f",&x);

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

if(x<a[i])

{【】;

break;}

for(i=N-1;【】;i-)

a[i+1]=a[i];

a[p]=x;

for(i=0;【】;i++)

{printf("%8.2f",a[i]);

if(i%5=0)

printf("\n");

}

}

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

main()

{

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

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

z=(*(ptr+y<x)?*(ptr+y):x;

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

}

24.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

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

#defineMCNA(m)2*m

#defineMCNB(n,m)2*MCRA(n)+m

#definef(x)(x*x)

main()

{inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

26.以下程序中,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;

}

}

27.数据结构分为逻辑结构与存储结构,带链的栈属于【】。

28.在关系模型中,二维表的行称为______。

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

#include<stdio.h>

inta=5;

fun(intb)

{staticinta=10;

a+=b++;

printf("%d",a);

}

main()

{intc=20;

fun(c);

a+=c++;

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

}

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

structs

{intx,y;}data[2]={10,100,20,200};

main()

{

structs*p=data;

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

}

31.请选出以下程序的输出结果#include<stdio.h>main(){inta[]={1,2,3,4},i;intx=0;for(i=0;i<4;i++){sub(a,x);Printf("%d",x);}printf("\n");}sub(S,y)int*s,y;{staticintt=3;y=s[t];t--;}

32.对于图书管理数据库,将图书表中"人民邮电出版社"的图书的单价涨价5%。请对下面的SQL语句填空:UPDATE图书【】WHERE出版单位="人民邮电出版社"

33.设C语言中,一个int型数据在内存中占两个字节,则int型数据的取值范围为【】。

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

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

voidfun(int*n)

{while((*n))

printf("%d",(*n)--);

}

main()

{inta=10;

fun(&a);

}

36.有以下程序

main()

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

y=y+z;x=x+y;

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

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

printf("%d",x);

printf("%d",y);

}

运行结果是【】

37.栈和队列通常采用的存储结构是【】。

38.下面程序的运行结果是()。#include<stdio.h>#defineSIZE12main(){chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+32;sub(s,5,SIZE-1);for(i=0;i<SIZE;i++)printf("%c",s[i]);printf("\n");}sub(char*a,intt1,intt2){charch;while(t1<t2){ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch;t1++;t2--;}}

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

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,c+d)*10;

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

}

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

#include<stdio.h>

main()

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

d=(a>b>c);

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

}

三、1.选择题(20题)41.下列选项中非法的表达式是________。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

42.链表不具有的特点是()

A.不必事先估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比

43.设有定义:longx=-123456L;,则以下能够正确输出变量x值的语句是A.printf("x=%d\n",x);

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

C.printf("x=%8dL\n",x);

D.printf("x=%LD\n",x);

44.以下选项中错误的是()

A.char*sp;gets(sp);

B.charsp[5]gets(sp);

C.char*sp="12345";gets(sp);

D.charsp[5]="\0"gets(sp)

45.以下函数返回a所指数组中最小的值所在的下标值

fun(int*a,intn)

{inti,j=0,p;

p=j;

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

if(a[i]<a[p]);________;

return(p);}

在横线处应填入的是

A.i=pB.a[p]=a[i]C.p=jD.p=i

46.能将高级语言程序转换成目标语言程序的是______。

A.调试程序B.解释程序C.编译程序D.编辑程序

47.下面程序的输出结果是()。func(intX){staticinta=2;return(a+=X);}main(){intb=2,c=4,d;d=func(b);d=func(c);printf("%d\n",d);}

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

48.下列函数定义中,会出现编译错误的是______。

A.max(intx,inty,int*z){*z=x>y?x:y;}z=x>y?x:y;

B.intmax(intx,y){intz;returnz;}

C.max(intx,inty){intz;z=x>y?x:y;return(z);}

D.intmax(intx,inty){returnx>y?x:y;}

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

A.intB.int*C.(*int)D.(int*)

50.有以下程序

#include<stdio.h>

#include<string.h>

voidfun(char*s[],intn)

{char*t;inti,j;

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

for(j=i+1;j<n;j++)

if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]:s[j];s[j]=t;}

}

main()

{char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};

fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);

}

程序的运行结果是

A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc

51.有以下函数fun(char*a,char*b){while((*a!='\0')&&(*b!='\0')&&(*a==*b)){a++;b++;}return(*a-*b);}该函数的功能是______。

A.计算a和b所指字符串的长度之差

B.将b所指字符串连接到a所指字符串中

C.将b所指字符串连接到a所指字符串后面

D.比较a和b所指字符串的大小

52.下列程序的输出结果是()。

#include<stdio.h>

#defineF(x)2.84+x

#definew(y)printf("%d",(int(y))

#defineP(y)w(y)pmchar('\n'》

main()

{intx=2;

P(F(5)*x);

}

A.12B.13C.14D.16

53.简单的交换排序方法是()。

A.快速排序B.选择排序C.堆排序D.冒泡排序

54.软件需求分析阶段的工作,可以分为4个方面:需求获取、需求分析、编写需求规格说明书以及()。

A.阶段性报告B.需求评审C.总结D.以上都不正确

55.下列选项中均属于C语言合法的标识符的是()

A.Int#subbreak

B._3abFORLong

C.3aprintfa_b

D.WORDautoinclude

56.若变量已正确定义,要求程序段完成求51的计算,不能完成此操作的程序段是

A.for(i=1,p=1;i<=5;i++)p*=i;

B.for(i=1;i<=5;i++){p=1;p*=i;}

C.i=1;p=1;while(i<=5){p*=i;i++;}

D.i=1;p=1;do{p*=i;i++;}while(i<=5)

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

A.cedbaB.acbedC.decabD.deabc

58.执行下列语句后的输出结果为______。enum{x1=3,b=4,C,d,e}data;printf("%d",data=d);

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

59.数据库设计包括两个方面的设计内容,它们是()

A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计

60.已定义下列函数:intfun(int*p){return*p;)fun函数返回值是()。

A.不确定的值B.一个整数C.形参p中存放的值D.形参p的地址值

四、选择题(20题)61.有以下程序程序运行后的输出结果是()。

A.123456B.14C.1234D.12

62.有两个关系R,S如下:

由关系R通过运算得到关系s,则所使用的运算为()。

A.选择B.插入C.投影D.连接

63.有以下程序段

main()

{inta=5,*b,**c;

c=&b;b=&a;

……

}

程序在执行了c=&b;b=&a;语句后,表达式:**c的值是()

A.变量a的地址

B.变量b中的值

C.变量a中的值

D.变量b的地址

64.有以下程序:

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

A.2,2,3,4,5,

B.6,2,3,4,5,

C.1,2,3,4,5,

D.2,3,4,5,6,

65.

66.下列叙述中错误的是()。

A.一种数据的逻辑结构可以有多种存储结构

B.数据的存储结构与数据的处理效率无关

C.数据的存储结构与数据的处理效率密切相关

D.数据的存储结构在计算机中所占的空间不一定是连续的

67.

68.

69.在E—R图中,用来表示实体联系的图形是()。

A.椭圆形B.矩形C.菱形D.三角形

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

A.数据库不需要操作系统的支持

B.数据库设计是指设计数据库管理系统

C.数据库是存储在计算机存储设备中的、结构化的相关数据的集合

D.数据库系统中,数据的物理结构必须与逻辑结构一致

71.有以下程序#includemain{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是()。A.741B.963C.852D.875421

72.

73.负责数据库中查询操作的数据库语言是()。

A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

74.针对简单程序设计,以下叙述的实施步骤顺序正确的是()。

A.确定算法和数据结构、编码、调试、整理文档

B.编码、确定算法和数据结构、调试、整理文档

C.整理文档、确定算法和数据结构、编码、调试

D.确定算法和数据结构、调试、编码、整理文档

75.以下不合法的字符常量是

A.’x\018’B.’\"’C.’\\’D.’\xcc’

76.有以下程序

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

78.数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。

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

79.有以下程序

#include<stdio.h>

voidprt(int*x,int*y,int*z)

{printf("%d,%d,%d\n",++*x,++*y,*z++);}

main()

{inta=10,b=40,c=20;

prt(&a,&b,&c);

prt(&a,&b,&c);

}

程序的输出结果是

80.

五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。

请修改函数proc()中的错误,使它能得出正确的结果。

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

试题程序:

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。例如,若二维数组中的数据为:132333431424344415253545则一维数组中的内容应该是132333431424344415253545。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.D解析:本题考查逻辑运算符的使用。当“&&”的两个运算对象都足逻辑1时,表达式才返回值是1;当“||”的两个运算对象至少有一个是逻辑1时,表达式返回值是1。选项A)中,x和y都是逻辑1,所以返回值是1;选项B)中,x=4<=y=6为逻辑1,所以返回值是1;选项C)中,y+z的值等于14,非0,y-z的值为-2,非0,所以逻辑表达式4||14&&-2的值不为0;选项D)中,x<y为1,!z为0,1&&0为1,0||为1,因此,!1为0。

2.B通过—维数组名或指向维数组元素的指针来引用数组元素有两种写法:a[i]和*(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像a-(b-C)等价于a-b+c一样。知道了这种转换,我们可以将之扩展到二维数组甚至任意维数组上来。因为[]运算符的结合性是从左至右的,所以w[i][j]等价于(w[i][j],此时可以先将任意一个[]运算符转换为指针形式为:(*(w+i)[j]或*(w[i]+j),或者同时转换:*(*(w+i)+j)。上述几种形式都完全等价于w[i][j]。选项A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正确的。选项B小,因为[]运算符的优先级高于*运算符,所以*(w+1)[4]等价于*((w+1)[4]等价于*(*((w+1)+4)),即*(*(w+5)+0),它等价于w[5][0],很明显它超过数组的范围了,故不正确。选项C等价于w[1][0],是下确的。选项D中,&w[0][0]是数组w第1个元素的地址,它等价于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以个数,然后再除以这个数一样。所以,&w[0][0]等价于*(w+0)+0。即*w。所以原式就变为*(*w+1)等价于w[0][1],这个也是合法的。综上所述,本题应该选择B。

3.D

4.D

5.C解析:CPU读取和写人数据都是通过内存来完成的。

6.A

7.B

8.C本题考查了两层for循环。外层循环增量i的值作为内层循环执行次数的值使用。

9.A题干中,if语句的含义是:如果a的值为1,将b的值赋给a,否则将a的值自增1。选项A中,“switch(a==1)”中表达式“a==1”的结果如果为真,即1,则从case1开始执行“a++”;如果“a==1”的结果为假,即为0,则从case0开始执行“a=b”,所以与题干含义执行操作相反的是选项A中的语句。故本题答案为A选项。

10.C当循环结束时,w的值应为-1,而其他选项中w的值为0,故选择c选项。

11.Dc语言规定,一个字符常量代表ASCII码字符集里的一个字符,在群序中用单引号括起来,以便区分。'\v'表示的是竖向跳格:'kx2a'表示的是两位十六迸制数;'a'表示的是字符a对应的ASCII码值。"\0"用双引号故不正确。

12.A

13.D

14.C解析:x++:表示在使用x之后,使x的值加1;y++:表示在使用y之后,使y的值加1;++y:表示在使用y之前,使\u3000y的值加1。此题中执行z=x++,是将x的值先赋给z,所以z=1,接下来x自行加1,其结果为2:执行y++后,y=2,执行++后,y=3;故答案选C。

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

16.B题目中嵌套语句的含义是当“a<b”且“a<c”成立时,将a的值赋给k。如果“a<b”成立而“a<c”不成立,则将c的值赋给k。如果“a<b”不成立而“b<c”成立,则将b的值赋给k。如果“a<b”不成立且“b<c”也不成立,则将c的值赋给k。判断条件表达式,只有B选项可以表示这个含义。故本题答案为B选项。

17.A解析:在C语言中所谓函数的递归是在指在调用一个函数的过程中,又出现了直接或间接地调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用.由程序可以看出函数f(a,i,j)为一递归函数,其功能是i

18.C解析:考查用字符指针处理字符串的方法。语句'p=s;'是使指针p指向字符数组s。*p则引用了p所指位置的数组元素。通过指针来引用一维数组元素。

19.C

20.DC语言中,整型常量可以用十进制、八进制和十六进制表示。故本题答案为D选项。

21.函数f()通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1)交换位置,再将最小值x[p1]和第一个元素(x[0])进行交换,所以空白处应该填入x[0]。\r\n\r\n

22.p=i;i>=pi<=Np=i;\r\ni>=p\r\ni<=N解析:本题主要考查了插入排序。由于程序中的数组在开始己经按从小到大顺序排序排好。在插入时,首先要查到第一个大于恃插入数的数组下标,即当待插入元素小于数组中当前元素时,记下数组的当前下标p,并结束循环,故第一空目的是为了记下数组下标,应填p=i;插入排序的第二部是将大于待插入元素的所有元素都向后移动—位,故在循环时,要从最后一个元素到第p个元素都要后移一位,因此第二空应填>i=p。最后一个循环是将N+1个元素都输出,故最后一空应为i<=N。(注:本题有多种答案,以上仅提供一种)

23.66解析:条件运算符的优先级高于赋值运算符,因此本题先计算关系个表达式(*ptr+y)<x)?(ptr+y):x的值,再赋绐变量z,当y=O时,*(ptr+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(pry)=2,所以z=2;当y=1时*(ptr+y)=4,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以z=4;当y=2时,*(ptr+y)=6,*((ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=6,所以z=6;循环结束。因此输出z的结果为6。

24.t*10或10*tt*10或10*t解析:本题要求累加一系列有规律的数,从输出结果来看,s保存的是最终结果,而s在循环体中,每次累加一个t,则说明t在5次循环中分别等于1.12、123、1234、12345;而t每次循环等于“填空内容”加上循环变量i,又因为i在5次循环中分别等于1、2、3、4,5,所以t每次循环要加的“填空内容”应分别为0、10、120,1230,12340,这一系列值正好是前一次t的值的10倍.所以“填空内容”应是t*10。

25.1616解析:本题定义了两个宏MCRA(m)和MCRB(n,m),展开宏MCRB(n,m),得到:MCRB(j,MCRA(i)=2*MCRA(j)+MCRA(i)=2×2×j+2×i=4×3+2×2=12+4=16,因此printf函数的输出结果为16。

26.br[i]

27.存储结构存储结构解析:带链的栈属于栈的链式存储结构。

28.元组元组解析:在关系型数据库中,用二维表来表示关系,二维表的表名即关系名,二维表的行称为关系的元组,二维表的列,称为关系的属性。

29.30253025解析:本题定义了一个fun函数,其中有语句a+=b++,b先使用,后自增,所以a=a+b。主函数中的c=20带入到fun函数中,a的值变为30,执行fun函数中的printf,输出30(注意输出函数中%d后有空格),函数调用结束,且返回main函数,此时a=5,c=20,执行a+=c++,即a=a+c,此时a值为25。

30.1111解析:程序中结构体数组data首地址(即&data[0])赋值给结构体指针变量p,++(P->x)表示先将p所指向的结构体变量的成员x值加1,然后将此x(即data[0].x)输出。

31.C

32.SET单价=单价*1.05SET单价=单价*1.05解析:更新表中元组的值,使用UPDATE命令,一次可以更新表中的一个或多个属性值。UPDATE短语之后指定更新数据所属的表,将新的属性值或表达式赋值给对应的属性名(SET单价=单价*1.05),并置于SET短语之后。要求对人民邮电出版社的图书涨5%,需要用WHERE短语对元组进行限制,即对符合条件的元组进行更新。

33.-32768~32767

34.参照完整性参照完整性

35.1.09877e+010

36.3233

37.链式存储和顺序存储链式存储和顺序存储

38.abcdelkjihgfabcdelkjihgf解析:本题先给字符型数组s的12个元素赋值a到1的12个字母,函数sub(shar*a,intt1,intt2)的功能是将数组a的从第t1+1个元素到t2+1个元素进行逆置,在主函数中调用sub(s,5,SIZE-1)函数,是将数组s的第6个元素到第12个元素进行逆置,其他元素位置不变。

39.77解析:在C语言中,宏定义是直接替换的,所以在刘表达式MAX(a+b,c+d)*10进行替换后,表达式变为(a+b)>(c+d)?(a+b):(c+d)*10。在这个条件表达式中,(a+b)>(c+d)为真,所以用(a+b)的值作为整个表达式的值(否则用(c+d)*10的值作为整个表达式的值),而(a+b)的值为7。所以整个表达式的值为7。

40.00解析:在本题中,d=(a>b>c);相当于d=(5>4>3);其计算过程为:先算5>4,结果为真,得1,即d=(1>3);然后计算1>3,结果为假,得0。

41.D解析:赋值表达式的左侧不能为常量或表达式,所以D是非法的表达式。

42.B解析:链表采用的是链式存储结构,它克服了顺序存储结构的缺点:它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,不需要移动数据元素。但是链式存储结构也有不足之处:①每个结点中的指针域需额外占用存储空间;②链式存储结构是一种非随机存储结构。

43.B解析:本题考查的知识点是输出语句printf()的基本用法。x为一个长整型的变量,而且是一个十进制的数,它的输出控制符是“%1d”,所以排除选项A和选项C;由于C语言中是区分大小写的,“1d”中的“d”不能为大写,故排除选项D。4个选项中B正确。

44.A

45.D解析:该程序先判断a[i]<a[p],如果条件为真,则a[i]比当前设定的最小值小(p保留的当前最小元素的下标),那么将i赋给p,即将比较过的最小元素下标保留在p中,作为下面判断的标准。

46.C解析:用高级语言编写的程序称为“源程序”,而计算机只能识别和执行由O和1组成的二进指令,所以高级语言必须先用—种称为“编译程序”的软件,把源程序翻译成二进制形式的“目标程序”。

47.C解析:func(b)调用函数func并将实参传递给形参x,x的值为2。a+=x=2+2=4,返回值为4。func(c)调用函数func并将实参传递给形参x,x的值为4。因为a被定义为静态的整型变量,当第一次调用函数func返回后a存储单元中的数据仍然保留值为4,所以a+=x=4+4=8。

48.B解析:在C语言中,不可以在函数的参数声明列表中用一个类型名指定多个参数。故选项B是错误的。其正确的表示方式应为:

intmax(intx,inty){…}

intmax(:1

intx,y;

{…)

49.D解析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型*)。

50.A解析:函数fun(char*s[],intn)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={'xy','bcc','bbcc','aabcc','aaaacc'},ss[0],ss[4]的输出结果为xy,aaaacc。

51.D解析:本题的函数fun的最后一个语句是“return(*a-*b);”,也就是返回指针a所指单元的值与指针b所指单元的值的差。显然这不可能是计算a和b所指字符串的长度之差,因此选项A的说法是错误的。由于函数中并没有出现。a=*b的赋值操作,所以选项B的连接字符串的说法也是错误的。同理,由于没有*a现*a=*b的赋值操作,所以选项C的复制字符串的说法也是错误的。排除了三个选项后,就可以断定正确选项是D。

52.A解析:本题考查带参数的宏的定义及相关运算。P(F(5)*x)=P(2.84+5*2)=P(12.84),调用w(12.84),输出(int)(12.84)=12。

53.D解析:所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。

54.B解析:需求分析阶段有4方面的工作:需求获取、需求分析、编写需求规格说明书和需求评审。

55.B

56.B解析:本题考核的知识点是C语言在生活中的简单应用。选项B中for循环了5次,而每次循环的时候,都将p的值重新赋值为1后,再乘以当前数字i,最后的结果为5,显然不是51的值,同样的分析可知选项A、选项C和选项D计算的都是5!。所以,4个选项中选项B符合题意。

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

58.A

59.A解析:模式设计和内模式设计是概念设计的两种方法。物理设计是根据特定的计算机系统,对数据的存储结构和存取方法进行设计,从而实现从逻辑结构到物理结构的转换。从系统开发的角度来看,结构特性设计和行为特性-设计是数据库应用系统所具有的两个特性。结构特性的设计,设计各级数据库模式(静态特性):行为特性的设计,改变实体及其特性,决定数据库系统的功能(动态特性)。

60.B解析:由函数intfun(int*p){return*p;}的定义可知,返回值为整型指针变量p所指向的数据。

61.A将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。

62.CC专门的关系运算有3种:投影、选择和连接。选择运算是从关系中找出满足给定条件的那些元组,其中的条件是以逻辑表达式给出的,值为真的元组将被选取,这种运算是从水平方向抽取元组。投影运算是从关系模式中挑选若干属性组成新的关系,这是从列的角度进行的运算,相当于

\n对关系进行垂直分解。连接运算是二目运算,需要两个关系作为操作对象。

63.C*c表示c间接指向的对象的地址,而**c是c间接指向的对象的值。在c=&b中,已经把b的地址存放在c里了,*c就指向了b的地址,b里存放的就是a的地址,那么**c应该是变量a的值,而且也可以用排除法排除选项A、B,由b=&a可知,这两个选项是同一个意思,变量b中的值就是变量a的地址,所以可以排除。故本题答案为C。

64.B本题考查的是指针作为函数的参数和函数的调用。题目中定义了一个指针变量作为函数f的形参。主函数main中调用f函数,当i=0时,执行语句(*q)++,此处*q代表的就是数组元素a[O]的值,即将1进行加1操作;当i=1时,q仍指向数组元素a[0]的地址,因为在函数f中并未对指针变量q作任何变动,也即*q仍代表了数组元素a[0]的值,所以此次(*q)++即2+1,所以a[O]的值变为3;……直到i=4时,执行(*q)++(即5+1)后a[0]的值变为6。所以最后的输出结果为:6,2,3,4…5

65.C

66.BB。【解析】数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。数据的存储结构与数据的处理效率密切相关。

67.B

68.A

69.CC。【解析】E—R图也即实体~联系图(EntityRelationshipDiagram),提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型,构成E—

温馨提示

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

评论

0/150

提交评论