2021年陕西省商洛市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第1页
2021年陕西省商洛市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第2页
2021年陕西省商洛市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第3页
2021年陕西省商洛市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第4页
2021年陕西省商洛市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

2021年陕西省商洛市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.A.A.75310246B.01234567C.76310462D.13570246

2.下列数据模型中,具有坚实理论基础的是()。

A.层次模型B.网状模型C.关系模型D.以上3个都是

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

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

4.设有定义:intn=0,*p=&n,**q=&p;则下列选项中正确的赋值语句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

5.使用二分查找算法在一个有序序列中查找一个元素的时间复杂度为()

A.O(N)B.O(logN)C.O(N*N)D.O(N*logN)

6.字符串”a+b=12\n”的长度为()。

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

7.设初始输入序列为1,2,3,4,5,利用一个栈产生输出序列,下列()序列是不可能通过栈产生的。

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

8.

9.以下叙述中错误的是()。

A.使用三种基本结构构成的程序只能解决简单问题

B.结构化程序由顺序、分支、循环三种基本结构组成

C.C语言是-种结构化程序设计语言

D.结构化程序设计提倡模块化的设计方法

10.下述函数功能是______。intfun(char*x){char*y=x;while(*y++);returny-x-1;}

A.求字符串的长度B.求字符串存放的位置C.比较两个字符串的大小D.将字符串x连接到字符串y后面

11.设"char**s;",以下正确的表达式是()。

A.s="computer";B.*s="computer";C.**s="computer";D.*s='c';

12.已知广义表:A=(a,b),B=(A,A),C=(a,(b,A),B),tail(head(tail(C)))的运算结果是()。

A.(a)B.AC.aD.(A)

13.二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范圈从1到10,则存放A至少需要()个字节。

A.90B.180C.240D.270

14.算术运算符和圆括号有不同的运算优先级,对于表达式“a+b+c*(d+e)”,关于执行顺序,以下说法正确的是()。

A.先执行“(d+e)”得r2,再执行“c*r2”得r3,再执行“a+b”得r1,最后执行“r1+r3”得表达式最后结果

B.先执行“a+b”得r1,再执行“(d+e)”得r2,再执行“c*r2”得r3,最后执行“r1+r3”得表达式最后结果

C.先执行“(d+e)”得r2,再执行“c*r2”得r3,再执行“b+r3”得r4,最后执行“a+r4”得表达式最后结果

D.先执行“a+b”得r1,再执行“r1+c”得r5,再执行“(d+e)”得r2,最后执行“r5*r2”得表达式最后结果

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

A.1.234e04B.1.234e0.4C.1.23E+4D.1.234e0

16.若在线性表中采用折半查找法查找元素,该线性表应该()A.元素按值有序B.构采用顺序存储结C.元素按值有序且采用顺序存储结构D.元素按值有序且采用链式存储结构

17.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}编译时编译器提示错误信息,你认为出错的语句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;

18.下列数据结构中,能够按照“先进后出”原则存取数据的是()。

A.循环队列B.栈C.队列D.二叉树

19.在inta=3,int*p=&a;中,*p的值是()

A.变量a的地址值B.无意义C.变量p的地址值D.3

20.顺序查找法适合于存储结构为()的线性表。

A.散列存储B.顺序存储或链式存储C.压缩存储D.索引存储

二、2.填空题(20题)21.以下程序的输出结果是【】。

main()

{ints,i;

for(s=0,i=1;i<3;i++,s+=i;

printf(“%d\n”,s);

}

22.人员基本信息一般包括:身份证号、姓名、性别、年龄等。其中可以作为主关键字的是()。

23.以下程序运行结果是【】。

#include<stdio.h>

main()

{intfun();fun();}

fun()

{staticinta[3]={0,1,2};

inti;

for(i=0;i<3;i++)a[i]+=a[i];

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

printf("\n");}

24.在数据库理论中,数据物理结构的改变,如存储设备的更换、物理存储的更换、存取方式等都不影响数据库的逻辑结构,从而不引起应用程序的变化,称为【】。

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

#include<stdio.h>

main()

{intx=20;

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

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

}

26.树中度为零的结点称为______。

27.下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。

#include<stdio.h>

#include<ctype.h>

main()

{charc;

inta,s=0;

while(______)

if(isdigit(C))

{a=c-'0';s+=a;}

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

}

28.设有定义:

struct{inta;floatb;charc;}abc;*p_abc=&abc;

则对结构体成员a的引用方法可以是abc.a和p_abc【】a。

29.阅读下列程序,则在执行后,程序的运行结果为#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}

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

#include<stdio.h>

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

如:dp=x*-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,D);

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

}

31.若有定义inta=10,b=9,c=8;,接着顺序执行下列语句,变量b中的值是【】。

c=(a-=(b-5));

c=(a%11)+(b=3);

32.已有定义;charc='';inta=1,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为【】。

33.函数fun的功能是计算xn。

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函数中已经正确定义变量m,a,b并赋值,要调用函数fun计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为【】。

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

35.若输入tc,则程序的运行结果为【】。

#include<stdio.h>

main()

{charstr[40];

fscanf(stdin,"%s",str);

fprintf(stdout,"%s\n",str);

}

36.以下条件表达式可计算:1+|a|的值,请填空。a>=0?【】:【】

37.以下程序中函数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[n-1];x[n-1]=t;

t=x[p1];x[p1]=【】;【】=t;

}

main()

{inta[10],u;

for(u=0;u<10;u++)scanf("%d",&a[u]);

f(a,10);

for(u=0;u<10;u++)printf("%d",a[u]);

printf("\n");

}

38.由25人围坐成圆圈,先从任意一人出发用1到25顺时针依次编号,然后从1号开始顺时针报数(1、2、3…),凡报5的倍数者出圈,剩下者继续报数,求出最后出圈者的编号。

#include<stdio.h>

【】

{inta[26],j,n,count;

for(j=1;j<=25;j++)a[j]=j;

j=1;count=0;n=【】;

do

{if(a[j]!=0)

{n++;

if(n%5==0)

{【】;

if(count==24)printf("%d\n",j);

count++;

}

}

j++;

if(j>25)j=1;

}

while(【】);

}

39.有以下程序:

main()

{inta=7,b=8,*p,*q,*r;

p=&a;q=&b;

r=p;p=q;q=r;

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

}

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

40.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。

strcen(chara[],charb[])

{intnum=0,n=0;

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

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

return(num);

}

三、1.选择题(20题)41.设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是()。

A.x&&y

B.x<=y

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

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

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

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

43.若有说明语句:charc=′\72′;则变量c

A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法,c的值不确定

44.下列程序的执行结果是()。#include<stdio.h>main(){inta,b,c;a=b=2;c=(a++)-1;printf("%d,%d",a,c);c+=-a+++(++b);printf("%d,%d",a,c);}

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

45.若有以下结构体,则正确的定义或引用的是()。structTest{intx;inty;}vl;

A.Test.x=10;

B.Testv2;v2.x=10;

C.struetv2;v2.x=10;

D.structTestv2={10};

46.若整型变量a、b、c、d中的值依次为1、4、3、2。则条件表达式a<b?a:c<d?c:d的值是______。A.1B.2C.3D.4

47.计算机的软件系统一般分为()

A.系统软件、应用软件与各种字处理软件

B.操作系统、用户软件与管理软件

C.系统软件与应用软件

D.操作系统、实时系统与分的系统

48.已知i、j、k为int型变量,若要从键盘输入2、3、4<CR>,使i、j、k的值分别为2、3、4下列正确的输入语句是()。

A.scanf(“%3d,%3d,%3d”,&i,&j,&k);

B.scanf(“%d,%d,%d”,&i,&j,&k);

C.scanf(“%d%do/od”,&i,&j,&k);

D.scaaf(“i=%d,j=%d,k=%d”,&i,&j,&k);

49.有以下程序:#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

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

A.acbedB.decabC.deabcD.cedba

51.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是______。main(){unsignedinta=32,b=66;printf("%c\n",b|b);}

A.66B.98C.bD.B

52.以下程序的功能是:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转存到链表的各个结点中,请填空。#include<stdlib.h>stuctnode{chardata;struetnode*next;};stntctnode*CreatList(char*s){struetnode*h,*p,*q;h=(structnode*)malloc(sizeof(structnode));p=q=h;while(*s!='\0'){p=(structnode*)malloc(sizeof(structnode));p->data=()q->next=p;q=p;a++;p->next='\0';returnh;}main(){charstr[]="linklist";struetnode*head;head=CreatList(str);

A.*sB.sC.*s++D.(*s)++

53.有以下程序:voidswap(char*x,char*y){chart;t=*x,*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序执行后的输出结果是()。

A.123,abcB.abc,123C.1bc,a23D.321,cba

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

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

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

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

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

55.设x、y、t均为血型变量,则执行语句x=y=3;t=++x||++y;后,y的值为______。

A.不定值B.4C.3D.1

56.设有下列的程序段:charstr[]="HelloWorld";char*ptr;ptr=str;执行上面的程序段后,*(ptr+10)的值为()。

A.'\0'B.'0'C.不确定的值D.'0'的地址

57.下列叙述中,正确的是______。

A.软件就是程序清单B.软件就是存放在计算机中的文件C.软件应包括程序清单及运行结果D.软件包括程序和文档

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

A.定义函数时,形参的类型说明可以放在函数体内

B.return后边的值不能为表达式

C.如果函数值的类型与返回值类型不一致,以函数值类型为准

D.如果彩参与实参类型不一致,以实参类型为准

59.下面程序的输出是______。main(){intx=3,y=6,a=0;,while(x++!=(y=1)){a+=1;if(y<x)break;}printf("x=%d,y=%d,a=%d\n,x,y,a);}

A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=4,a=1

60.下列数据模型中,具有坚实理论基础的是()。

A.层次模型B.网状模型C.关系模型D.以上3个都是

四、选择题(20题)61.

62.

63.

64.下列数据结构中,属于非线性结构的是A.循环队列B.带链队列C.二叉树D.带链栈

65.

66.学生选课成绩表的关系模式是sc(S#,c#,G),其中S#为学号,c#为课号,G为成绩,检索课号为2且成绩及格的学生学号的表达式为()。

67.

68.

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

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

70.下列叙述中正确的是()。A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

D.线性表的链式存储结构与顺序存储结构在存储空间的需求上没有可比性

71.现有如下程序段:

则程序段的输出结果为()。

A.7,8

B.8,8

C.7,10

D.8,10

72.下列可用于C语言用户标识符的一组是()。

A.void,define,WORD

B.a3_3,_123,Car

C.For,-abc,IFCase

D.2a,DO,sizeof

73.设有定义:intx,Y,z;,且各变量已赋正整数值,则以下能正确表示代数式‘的C语言表达式是()。

A.…1.…0/x。/y,/z

B.1/x*Y*z

C.1/(x*Y*z)

D.1/x/y/(double)z

74.以下叙述中错误的是()。

A.c语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

B.c程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用c语言编写的程序称为源程序,它以ASCIl代码形式存放在一个文本文件中

D.c语言源程序经编译后生成后缀为.obj的目标程序

75.

76.

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

A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

78.阅读下列程序段,程序的输出结果为()。

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

79.以下关于结构化程序设计的叙述中正确的是()。

A.结构化程序使用goto语句会很便捷

B.在c语言中,程序的模块化是利用函数实现的

C.一个结构化程序必须同时由顺序、分支、循环三种结构组成

D.由三种基本结构构成的程序只能解决小规模的问题

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

A.28B.24C.32D.36

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:计算n!。例如,若输人:6,则输出:6!=720.000000。

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

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

试题程序:

六、程序设计题(1题)82.请编写函数proc,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度

不超过N),按顺序合并组成一个新的字符串。

例如,若字符串数组中的M个字符串为:

ABCD

BCDEFG

CDEFGHI

则合并后的字符串内容应该是ABCDBCDEFGCDEFGHl。

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

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

试题程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidproc(chararr[M][N],char*b)

{

}

voidmain

{

charstr[M][N]={"ABCD","BCDEFG","CDEFGHl"),i;

chararr[100]={"##################"};

printf(”Thestrin9:kn”);

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

puts(str[i]);

printf("\n");

proc(str,arr);

printf("TheAstring:\n");

printf("%S",arr);

printf("\n\n");

}

参考答案

1.A本题的考点是C语言的数组及其排序。本题的程序中分为2个循环体,第一个循环体将数组中1,3,5,7,2,4,6,0的前4个元素从大到小排序,这个循环体结束后数组中的值为7,5,3,1,2,4,6,0。第二个循环体将数组中7,5,3,1,2,4,6,0从第5个开始的4个元素从小到大排序,这个循环体结束后数组中的值为7,5,3,1,0,2,4,6。所以正确答案是选项A。

2.C在数据库设计中,目前常用的数据模型主要有三种,分别是层次模型、网状模型和关系模型。

层次模型是数据库系统中最早出现的数据模型。我们通常把满足以下两个条件的数据模型称为层次模型。

(1)有且仅有一个结点无双亲,这个结点称为根结点。

(2)其他结点有且仅有一个双亲。

层次模型用树形结构来表示各实体与实体间的联系。实体是数据库中数据描述的对象,可以是一个人、一种商品等。在层次模型中,每个结点表示一个记录类型,记录之间的联系用结点之间的连线表示,这种联系是父子之间一对多的联系。记录就是描述实体的相关数据。

如果取消层次模型中的两个限制,即允许一个以上的结点无双亲,则每一个结点可以有多个父结点,便形成了网状。我们把网状表示实体之间联系的模型称为网状模型。

关系模型用表格形式表示实体类型及其实体间的联系。关系模型是目前最重要的一种模型,它是建立在严格的数学概念的基础上的,具有最坚实的理论基础。关系模型的基本数据结构是二维表,每一张二维表称为一个关系。

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

4.D解析:选项A),B),C)的指针赋值表达方式都不正确,*p=5表达整数5放到指针p所指向的存储单元中。注意:通过指针引用一个存储单。

5.B

6.B

7.B

8.B

9.A使用顺序,选择(分支),循环三种基本结构构成的程序可以解决所有问题,而不只是解决简单问题,所以A错误。

10.A解析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。

11.B

12.D

13.A

14.B题干表达式中,圆括号的优先级最高,乘法运算符次之,加法运算符最低。同优先级中,加法运算符的结合性从左向右结合,所以题干中的表达式执行顺序是:先执行“a+b”得r1,再执行“(d+e)”得r2,再执行“c*r2”得r3,最后执行“r1+r3”得表达式最后结果。故本题答案为B选项。

15.B解析:C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。

16.C

17.A本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。a=/*p+m赋值,在c语言中"/*"表示的注释,所以答案选择A。

18.BB。【解析】在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照“先进后出”或“后进先出”的原则组织数据的。

19.D

20.B

21.55解析:此程序中,for循环语句后面直接跟了一个“;”,表明循环体为空。输出语句不在for循环体内,所以在循环执行完毕后才输出s的值。s、i的初值分别为0和1,判断循环条件,表达式“1<3”成立,执行“i++,s+=i”后,i和s的值分别为2和1,继续判断循环条件,表达式“2<3”成立,执行“i++,s+=i”后,i和s的值分别为3,再次判断循环条件,表达式“3<3”不成立,循环结束。

22.身份证号身份证号解析:主关键字是表中区别不同记录的标识,在该表中只有身份证号能具有这个作用,所以用其作为主关键字。

23.0240480,2,4\r\n0,4,8解析:本题主要考查了for循环语句的使用以及静态局部变量的特点。

24.物理独立性物理独立性解析:数据的物理结构改变,不影响数据库的逻辑结构,从而不引起应用程序的变化,这种性质叫做物理独立性。

25.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。

26.叶子结点叶子结点解析:树中度为零的结点,也就是没有后件的结点,称为叶子结点。

27.(c=getchar())!='\n'(c=getchar())!='\\n'解析:分析题目可知,程序中运用函数c=getchar()从标准输入设备读取下一个字符,而且是一行的字符(即没有换行),所以条件为(c=getchar())!='\\n'。

28.->->解析:结构变量abc有成员a,并有指针pabc指向结构变量abc,则引用变量abc成员a的形式有abc.a和p_abc->a。

29.D

30.7979解析:因为在调用子函数时进行的是数值传递,调用子函数并不能改变实参的值,所以经过调用子函数,c、d的值并没有发生变化还是原来的值。

31.33解析:这里:b-5=4,a-=4之后a的值为6,并把它赋给c。此时b的值并未被改变。在第2个表达式中,也只有赋值表达式b=3改变了b的值。所以两行语句执行完毕,b的值应该为3。

32.00解析:本题考查数据类型及其运算的逻辑运算,c为空格字符但其ASCII码不为0,所以!c=0,在逻辑与运算中,只要有一项为假,其值为0,所以b的值为0。

33.fun(a4)+fun(b4)-fun((a+b)3);fun(a,4)+fun(b,4)-fun((a+b),3);解析:函数fun的功能是计算x的n次方,a的4次方的调用函数为fun(a,4),b的4次方的调用函数为fun(b,4),(a+b)的3次方的调用函数为fun((a+b),3),计算m=a4+b4-(a+b)3的函数调用语句为:fun(a,4)+fun(b,4)-fun((a+b),3);

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

35.tc

36.1+a1-a1+a,1-a解析:考查条件运算符的使用。因为题目中求的是1+|a|的值,即1和a的绝对值之和,所以根据数学中求绝对值的规则;当a>=0时,绝对值取本身,当a<0时,绝对值取相反数,再结合条件运算符的计算规则,可得到本题的答案为a>=0。

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

38.main()0a[j]=0count<25

39.87788,7,7,8解析:本题中执行语句p=&a和q=&b后,*p=7,*q=8;执行完语句r=p,p=q,q=r后,*p=8,*q=7,故答案为8,7,7,8。

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

41.D解析:该题考查逻辑与“&&”和逻辑或“||”以及逻辑非“!”符号的用法。选项A)即3&&4为真,选项B)即3<=4为真,选项C)是一个逻辑或与逻辑与的混合运算,只要执行了逻辑或左半部分,程序将直接停止执行逻辑或右半部分程序,因为x的值为真,此时选项C)变为1&&-1为真。选项D)不用计算,括号内逻辑或右边的值为1,因而括号内的值为1,再进行逻辑非运算得0。

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

43.A解析:C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个'\\'开头的字符。其中,'\\ddd'表示用ASCII码(八进制数)表示一个字符,本题中的charc=\'\\72\'即表示占一个字符的变量c的ASCII码值。

44.A解析:本题主要考查自加运算符(++、--)的使用。①前缀变量“++i、--i”,在使用i之前,先使i的值加1或者减1,再使用此时的表达式的值参与运算;②后缀变量“i++、i--”,先使用此时的表达式的值参与运算,在使用i之后,再使i的值加1或者减1。本题中计算表达式c=(a++)-1时先使用a的值进行计算,结果为c=2-1=1,然后将a的值加1,即执行完此语句后a的值是3;表达式c+=-a+++(++b)等价于c=c+(-a++)+(++b),c=1+(-3)+3=1,此时a=4,b=3。

45.D解析:此题考查结构体的定义和引用。选项A)的错误是通过结构体名引用结构体成员;选项B)的错误是将结构体名作为类型名使用;选项C)的错误是将关键字struct作为类型名使用;选项D)是定义变量v2并对其初始化的语句,初始值只有前一部分,这是允许的。

46.A解析:条件表达式的形式如下:表达式1?表达式2:表达式3,所以本题条件表达式a<b?a:c<d?c:d应该理解为a<b?a:(c<d?c:d),首先求出条件表达式c<d?c:d的值等于2,再求条件表达式a<b?a:2的值,由于a-1<b-4成立,所以上述条件表达式的值等于1。

47.C

48.B解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。

49.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。

50.D解析:中序遍历的递归算法如下:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法如下:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法如下:①遍历左子树;②遍历右子树;③访问根结点。由后序遍历结果dabec可知c是根结点,且无右子树。再由左子树的后序遍历结果dabe可知,e是左子树的根结点,且由左子树的中序遍历结果deba可知,d是左子树的左子树结点,b和a是左子树的右子树结点。再次由后序遍历结果ab可知,a是左子树结点。b是根结点。至此,各结点在树中的位置已完全确定。

51.C解析:位运算符“|”的作用是按位或,即两个二进制数的相应位中只要一个为1,该位的结果值为1。最后以字符型输出,98对应的字符“b”。

52.A本题要求建立一个stmctnode类型的数据链表,函数CreatList将字符串"linklist"的首地址传给指针变量s,可以推断建立的链表一定与"linklist",有关,由CreatList(char*s)函数中所定义的变量及其他语句可知,h,p,q用于建立的链表,h表示头指针,p用于记录开辟的新结点,而q用作将新结点与已建立的链表相连的中间变量,所建立链表各个结点的data依次存放的是”linklist",中的各个字符,所以应填空*s。

53.C解析:首先看swap()函数,函数中定义了一个临时字符变量t,然后将形参指针x所指内容存入t,再将形参指针y所指内容存入到x所指内容中,最后将临时变量t的内容存入到y所指内容中。所以该函数实现的是:交换两个字符指针所指向的内容。在主函数中,首先定义了两个字符指针s1和s2,同时用字符串'abc'和'123”来初始化它们,此时它们指向的是两个字符串的第1个字符。所以,在调用完swap()函数后,彼此交换了两个字符串的第1个字符,最后输出结果为1bc,a23。故应该选择C。

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

55.C解析:C语言中在做逻辑或运算时,自左向右判断各个参加或运算的表达式,一旦运算到某式的值为非零时,表明整个表达式一定为真,余下的语句则不再进行运算。本题中,++x的值为真,则++y并没有进行运算,所以y值不变。

56.A解析:本题涉及字符数组和指针两个知识点:①在C语言中,字符型数组在存放字符串时会自动在末尾加上'\\0',所以题中数组str有11个元素;②ptr指向数组str的首地址,ptr+10是指向str[10],*(ptr+10)是引用str[10]的值。

57.D解析:软件(software)是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。

58.C解析:定义函数时,形参的类型说明放在形参表列内说明,或放在函数定义的第二行,函数体花括号“{”之前,所以选项A)错;return后面的值可以是一个表达式,选项B)错;实参与形参的类型应相同或赋值兼容,如果实参为整型而形参为实型,或者相反,则按不同类型数值的赋值规则进行转换,以形参类型为准,选项D)错。

59.D解析:注意的是x++中x值的引用时,这里应当是先引用,后自加,具体抽打过程如下:

第一次while循环:条件为真,执行a=a+1=1此时,x的值已为4,判断y<x不成立,继续执行循环;

第二次while循环:条件为假,此时x的值已为5,退出while循环,执行printf。

60.C在数据库设计中,目前常用的数据模型主要有三种,分别是层次模型、网状模型和关系模型。

层次模型是数据库系统中最早出现的数据模型。我们通常把满足以下两个条件的数据模型称为层次模型。

(1)有且仅有一个结点无双亲,这个结点称为根结点。

(2)其他结点有且仅有一个双亲。

层次模型用树形结构来表示各实体与实体间的联系。实体是数据库中数据描述的对象,可以是一个人、一种商品等。在层次模型中,每个结点表示一个记录类型,记录之间的联系用结点之间的连线表示,这种联系是父子之间一对多的联系。记录就是描述实体的相关数据。

如果取消层次模型中的两个限制,即允许一个以上的结点无双亲,则每一个结点可以有多个父结点,便形成了网状。我们把网状表示实体之间联系的模型称为网状模型。

关系模型用表格形式表示实体类型及其实体间的联系。关系模型是目前最重要的一种模型,它是建立在严格的数学概念的基础上的,具有最坚实的理论基础。关系模型的基本数据结构是二维表,每一张二维表称为一个关系。

61.C

62.D

63.B

64.C根据数据结构中各数据元素之间的前后件关系的

温馨提示

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

评论

0/150

提交评论