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.C语言中的变量只能由字母、数字和下划线组成,且第一个字符()。

A.必须是字母B.必须是下划线C.必须是下划线和字母D.可以是字母.数字或下划线中任一一种

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

3.算法分析的目的是()。

A.找出数据结构的合理性B.找出算法中输入和输出之间的关系C.分析算法的易懂性和可靠性D.分析算法的效率以求改进

4.有以下程序:main(){intx[8]={8,7,6,5,O,0},*s;s=x+3;printf("%d\n",s[2]);}执行后输出结果是()。

A.随机值B.0C.5D.6

5.对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为______。

A.n-1B.nC.n+1D.2n

6.在如下结构定义中,不正确的是()。A.

B.

C.

D.

7.在学生管理的关系数据库中,存取一个学生信息的数据单位是()。

A.文件B.数据库C.字段D.记录

8.设主串T='aabaababaabaa',子串P:'abab',则简单模式匹配算法中直至匹配成功,单个字符比较的次数为()。

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

9.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是()。

A.预定义标识符(如库函数中的函数名)可用做用户标识符,但失去原有含义

B.用户标识符可以由字母和数字任意顺序组成

C.在标识符中大写字母和小写字母被认为是相同的字符

D.关键字可用做用户标识符,但失去原有含义

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

A.0,-1,-1,-1

B.0,-1,-1,0

C.0,-1,-1,0,-1,0

D.0,-1,-1,-1,-1,-1

11.有以下程序:#includedstdi0.h>#definef(x)X*x*xmain(){inta=3,S,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",S,t);}程序运行后的输出结果是()。A.10,64B.10,10C.64,10D.64,64

12.若栈采用顺序存储方式存储,现两栈共享空间V[1m],top[1]、top[2]分别代表第1和第2个栈的栈顶,栈1的底在V[1],栈2的底在V[m],则栈满的条件是()。

A.|top[2]-top[1]|=0

B.top[1]+1=top[2]

C.top[1]+top[2]=m

D.top[1]=top[2]

13.以下叙述正确的是()。

A.C语言程序是由过程和函数组成的

B.C语言函数可以嵌套调用,例如:fun(fun(x))

C.C语言函数不可以单独编译

D.C语言中除了main函数,其他函数不可作为单独文件形式存在

14.有如下程序:

main

{inta=2,b=-1.c=2;

if(a<b)if(b<0)c=0;

elsec++;

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

}

该程序的输出结果是()。A.A.0B.1C.2D.3

15.有下列程序:

main()

{inty=20;

do{y--;}while(--y);

phntf("%d\n",y--);

}

当执行程序时,输出的结果是()。

A.-1B.1C.4D.0

16.设有定义:inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()

A.scanf(“%d”,pa);

B.scanf(“%d”,a);

C.scanf(“%d”,&pa);

D.scanf(“%d”,*pa);

17.有以下程序:

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

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

18.若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,下列选项中错误的程序是()。

A.main(){…x=fun(2,10);…}floatfun(inta,intB){…}

B.floatfun(inta,intB){…}main(){…x=fun(i,j);…}

C.floatfun(int,int);main(){…x=fun(2,10);…}floatfun(inta,intB){…}

D.main()…{floatfun(inti,intj);…x=fun(i,j);…}floatfun(inta,intB){…}

19.有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i]:returnsum;}main(){inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序执行后的输出结果是()。、A.45B.50C.60D.55

20.有种数据结构叫跳跃列表(SkipList),它是一种基于并联的链表的随机化数据结构,其效率可比拟于二叉查找树(对于大于数操作需要O(logn)平均时间)。它是按层建造的。底层是一个普通的有序链表。每个更高层都充当下面列表的“快速跑道”,这里在层i中的元素按概率l/p出现在层i+1中。平均起来,每个元素都在p/(p-1)个列表中出现,而最高层的元素(通常是在跳跃列表前段的一个特殊的头元素)在O(logpn)个列表中出现。调节p的大小可以在内存消耗和时间消耗上进行折中。试分析在该数据结构中查找一个元素的平均时间复杂度。

A.O(logn)B.O(n)C.O(n*logn)D.以上都不正确

二、2.填空题(20题)21.下列程序的运行结果是【】。

#include<string.h>

char*ss(char*s)

{returns+strlen(s)/2;}

main()

{char*p,*str="abcdefgh";

p=ss(str);printf("%\n",p);

}

22.数据库系统中实现各种数据管理功能的核心软件是______。

23.若有说明chars1[]="Thatgirl",s2[]="isbeautiful";则使用函数strcmp(s1,s2)后,结果是______。

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

main()

{

charm;

m='B'+32;

printf("%e\n",m);

}

25.一般来说,算法可以用顺序、选择和______三种基本控制结构组合而成。

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

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

#include<stdio.h>

main()

{intx=10,y=10,i;

for(i=0;x>8;y=++)

printf("%d%d",X--,y);

}

28.以下fun函数的功能是:累加数组元素中的值。n为数组中元素的个数。累加的和放入x所指的存储单元中。

fun(intb[],intn,int*x)

{intk,r=0;

for(k=0;k<n;k++)r=【】;

【】=r;

}

29.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

30.下面程序的输出是【】

main()

{enumem{eml=3,em2=1,em3};

char*aa[]={"AA',"BB","CC","DD"}

printf("%s%s%\n",aa[em1],aa[em2],aa[em3]);

}

31.以下程序输出的结果是#include<stdio.h>#include<string.h>main(){charw[][10]={"ABCD","EFGH","IJKL","MNOP"}1,k;for(k=1;k<3;k++)printf("%s\n",&w[k][k]);}

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

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

33.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块),其中【】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。

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

#include<stdio.h>

main()

{inti;

for(i=′a′;i<′f′;i++,i++)printf("%c",i-′a′+′A′);

printf("\n");

}

35.若a=1,b=2,则表达式!(x=A)‖(y=B)&&0的值是______。

36.在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间______的信息。

37.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。

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

main()

{unsigneda=0112,x;

x=a>>3;

printf("x=%o",x);

}

39.以下程序的功能是从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。

majn()

{FILE*fp;charch;

fp=fopen(______);

ch=fgetc(fp);

whle(!feof(fp)){putchar(ch);ch=f8etc(fp);}

putchar('\n');fclose(fp);

}

40.以下函数inverse的功能是使一个字符串按逆序存放,请填空。

inverse(charstr[])

{charm;

inti,j;

for(i=0,j=strlen(str);i<strlen(str)/2;【】,j--)

{m=str[i];

str[i]=【】;

【】;

}

}

三、1.选择题(20题)41.下列表达式中,可以正确表示的关系是()。

A.(x>=1)10(x<=0)B.x>1‖x=0C.x>=1ORx<=0D.X>=1&&x<=0

42.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(中)的值为

A.0B.1C.-1D.一个非0值

43.算法具有五个特性,以下选项中不属于算法特性的是_____。A.有穷性B.简洁性C.可行性D.确定性

44.对于下面的程序#include<stdio.h>#include<string.h>char*scmp(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}main(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));strcpy(string,scmp(string,str[2]));printf("%s\n",string);}若运行时依次输入abcd、abba和abc三个字符串,则输出结果为______。

A.abcdB.abbaC.abcD.abca

45.数据库设计的根本目标是要解决()。

A.数据共享问题B.数据安全问题C.大量数据存储问题D.简化数据维护

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

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

47.当a=4,b=5,c=7,d=6时,执行下面一段程序:if(a<B)if(c<D)x=1;elseif(a<C)if(b<C)x=2:elsex=3;elsex=4;elsex=5;程序执行后,x的值为()。

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

48.若w、x、y、z、m均为int型变量,则执行下列的语句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;

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

49.设a,b,c,d,m和n均为int型变量,且a=5,b=6,c=7,d=m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为()

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

50.下列关于栈的描述正确的是()。

A.在栈中只能插入元素而不能删除元素

B.在栈中只能删除元素而不能插入元素

C.栈是特殊的线性表,只能在一端插入或删除元素

D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素

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

A.在模块化程序设计中,一个模块应该尽量多的包括与其他模块联系的信息

B.在自顶向下、逐步细化的设计过程中,首先应设计解决问题的第一个细节

C.在模块化程序设计中,一个模块内部的控制结构也要符合结构化原则

D.在程序设计过程中,不能同时采用结构化程序设计方法与模块化程序设计方法

52.下列关于队列的叙述中正确的是()。

A.在队列中只能插入数据B.在队列小只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表

53.表示关系a≤b≤c的C语言表达式为()。

A.(a<=B)&&(b<=C)

B.(a<=B)and(b<=C)

C.(a<=b<=C)

D.(a<=B)&(b<=C)

54.假设a和b为int型变量,则执行以下语句后,b的值为______。a=1;b=10;do{b-=a;a++;}while(b--<0);

A.9B.-2C.-1D.8

55.以下程序输出结果是#include<stdio.h>main(){inti=0,a=0;while(i<20){for(;;){if((i%10)==0)break;elsei--;}i+=11;a+=i;}printf("%d\n",a);}

A.21B.32C.33D.11

56.堆排序是一种()排序。

A.插入B.选择C.交换D.归并

57.设有以下定义或语句,则输出的结果是(用small模式编译,指针变量占2个字节)structdate{long*cat;structdate*next;doubledog;{too;printf("%d",sizeof(too));

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

58.有下面程序段

#include"stdio.h"

#include"string.h"

main()

{chara[3][20]={{"china"},{"isa"},{"bigcountry!"}};

chark[100]={0},*p=k;

inti;

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

{p=strcat(p,a[i]);}

i=strlen(p);

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

则程序段的输出结果是

A.18B.19C.20D.21

59.设函数fun的定义形式为voidfun(charch,floatx){…}则以下对函数fun的调用语句中,正确的是

A.fun("abc",3.0);

B.t=fun('D',16.5);

C.fun('65',2.8);

D.fun(32,32);

60.若运行以下程序时,从键盘输入ADescriptor<CR>(<CR>表示回车),则下面程序的运行结果是

#include<stdio.h>

main()

{charc;

intv0=1,v1=0,v2=0;

do{switch(c=getchar())

{case′a′:case′A′:

case′e′:case′E′:

case′i′:case′I′:

case′o′:case′O′:

case′u′:case′U′:v1+=1;

default:v0+=1;v2+=1;}}while(c!='\n');

printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}

A.v0=7,v1=4,v2=7

B.v0=8,v1=4,v2=8

C.v0=11,v1=4,v2=11

D.v0=13,v1=4,v2=12

四、选择题(20题)61.

62.

63.

64.

65.下列关于栈的描述中错误的是()。

A.栈是先进先出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入删除操作中,不需要改变栈底指针

66.

67.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inti,k=0,n=0;

fp=fopen("d1.dat","wb+");

for(i=1;i<4;i++)fprintf(fp,"%d",i);

fclose(fp);

fp=fopen("d1.dat","r");

fseek(fp,1L,SEEK_SET);

fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);

fclose(fp);

}

执行后输出结果是()。

A.12B.1230C.123D.230

68.执行语句X=(a=10,b=a--.后,x、a、b的值依次为()。

A.10,10,9

B.10,9,9

C.9,10,9

D.10,9,10

69.设有intx=11;则表达式(x++*1/3)的值是()。

A.3B.4C.11D.12

70.有以下程序:

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

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

71.

72.三种基本结构中,能简化大量程序代码的是()。

A.顺序结构B.分支结构C.选择结构D.重复结构

73.下列叙述中正确的是()。A.循环队列有队头和队尾两个指针,因此,循环队列是非线性结构

B.在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况

C.在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况

D.循环队列中元素的个数是由队头指针和队尾指针共同决定

74.

75.设“intx=2,y=1;”,则表达式(!x||Y--)的值是()。

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

76.若intk=8;,则执行下列程序后,变量k的正确结果是

main()

{intk=8;

switch(k)

{case8:k+=1;

case10:k+=1;

case11:k+=1;break;

default:k+=1;

}

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

}

A.12B.11

C.10D.9

77.以下叙述中正确的是()。A.A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D.c语言中的文件是流式文件,因此只能顺序存取数据

78.在Internet中,域名服务器的主要功能是实现()的转换。

A.IP地址到域名(主机名字)B.域名到IP地址C.主机IP地址和路由器IP地址之间D.路由器IP地址之问

79.当用“#defineF37.5f”定义后,下列叙述正确的是()。

A.F是float型数B.F是Char型数C.F无类型D.F是字符串

80.以下程序的运行结果是()。

A.m=4k=5i=5k=5

B.m=4k=4i=5k=5

C.m=4k=4i=4k=5

D.m=4k=5i=4k=5

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:根据输人的三条边长(整形),判断能否构成三角形;构成的是等边三角形还是等腰三角形。若能构成等边三角形函数,返回3;若能构成等腰三角形函数,返回2;若构成=三角形函数,返回l;若不能构成三角形函数返回0。请修改函数fun()中的错误,得出正确的结果。注意:不要改动main()函数,不能增行或减行,也不能更改程序的结构。试题程序:

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

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

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

参考答案

1.C

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.B解析:通过赋值语句“s=x+3”,使指针变量s指向数组元素x[3],输出语句中的spl等价于*(s+2),即x[5]值为0。所以,B选项为所选。

5.C解析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。

6.B

7.D解析:在关系数据表中,行称为元组,对应存储文件中的记录,列称为属性,对应存储文件中的字段,所以本题答案为D。

8.A

9.A用户标识符不能以数字开头,C语言中标识符是区分大小写的,关键字不能用做用户标识符。

10.A程序定义整型变量a和b,初值分别是1,-2。for语句中循环条件式为“a--&&b++”,因为--和++的优先级高于逻辑与运算符&&,所以循环条件式等价于“(a--)&&(b++)”,自左向右运算。第1轮循环,a、b的值为1,-2,首先执行a--,a--的值为1,执行完后a的值为0;继续执行b++,b++的值为-2,执行完后b的值为-1。整个表达式“a--&&b++”的值为真,程序输出0,-1。第2轮循环,a、b的值分别为0,-1,首先执行a--,a--的值为0,执行完后a的值为-1,由于a--的值为0,根据逻辑与运算的短路原则,表达式“a--&&b++”的值一定为假,表达式b++不再执行,循环结束,执行循环体外的printf语句,输出a、b的值分别为:-1,-1。所以本题输出结果为:0,-1,-1,-1。本题答案为A选项。

11.A本题考查带参数的宏定义。第一次函数调用求S的值,x=a+1,所以X*X*X应写成a+1*a+1*a+1,没有括号优先级,结果为l0,第二次函数调用x*X*X可写成(a+1)*(a+1)*(a+1),所以结果为43=64。

12.B

13.B解析:C语言中只有函数没有过程,故选项A错误;C语言可以嵌套调用,故选项B正确;C语言函数可以单独编译成.dll文件,故选项C错误;C语言中除main函数以外,其他函数可作为单独文件形式存在,故选项D也错误。

14.Celse与离它最近的if构成if…else语句,而当a为2时,第一个if语句不成立,因此什么也不做,即c的值仍然为2,故选择C选项。

15.D解析:本题考查do…while循环。当--寸是0(即y是0)时结束循环,输出y--是先输出y的值再将y的值减1。

16.A

17.B第一次执行外循环i的值为1,满足条件,判断第一次内循环,j的值为3,不满足条件,跳出内循环。第二次执行外循环i的值为2,同理也不满足内循环条件,跳出内循环。第三次执行外循环i的值为3,此时进入内循环判断条件时,条件成立,执行m=m%j,m的值为1,跳出内循环,跳出外循环打印m的值。

18.A在调用函数时,应对其进行说明。A选项中,调用时没有对函数进行说明。B、C选项中,被调用函数在主调函数之前定义,不用说明。D选项中,在主函数中对被调用函数的返回值类型进行了说明。故本题答案为A选项。

19.C在函数intfun(intx[],intn)的定义中,变量sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数intfun(intx[],intn)的功能是求出数组x[]各个元素的和,所以在主函数中,调用函数fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum=15+6+7+8+9=45,所以s=15+45=60。

20.A

21.efghefgh解析:函数ss的作用是让形参指针s指向该字符串的右半部分。主函数中首先定义了一个字符型指针变量p和字符型指针str,并初始化为“abcdefgh”,然后调用函数ss,将实参str传给形参s,因此可知该函数返回的指针,指向str所指的字符串“abcdefgh”的右半部分,即指向字符串“efgh”,所以最后输出指针p(指针p的值为调用函数ss(str)的返回值)所指向的字符串为“efgh”。

22.数据库管理系统数据库管理系统解析:数据库管理系统是数据库的管理机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。

23.-1-1解析:strcmp(s1,s2)函数的作用是:对字符数组s2和字符数组s1进行比较。如果s1<s2,则返回负数;如果s1==s2,则返回0;如果s1>s2,则返回正数。

24.bb解析:字符类型的数据在内存中以相应的ASCII码存放,另外,字符数据还可以作为整数参加运算。格式控制参数中的格式字符用以指定输出项的数据类型和输出格式,输出字符与其对应的输出项的类型要一致。本题中,“B”的ASCII码为98,字符类型m的ASCII为(98+32=130),所以最后输出为b。

25.循环循环解析:算法一般由顺序,选择和循环三种基本控制结构组合而成。

26.一对多一对多解析:由于一个项目主管可以管理多个项目,而一个项目只能有一个项目主管,“项目主管”这个实体与“项目”这个实体的管理关系属于一对多。

27.101091101091解析:for(表达式1;表达式2;表达式3)语句的功能是:首先计算表达式1的值,然后检测表达式2的值,若其值为真,则执行循环体语句,执行完毕后,再计算表达式3的值。然后再检测表达式2的值是否为真,若为真,继续执行循环体语句,若为假,则退出循环;第1次循环x>8成立,输出x=10,y=10后,x的值减1,i=1,执行y=++i操作,y的值变为1;判断条件还成立,输出x=9,y=1,然后x的值减1,循环条件不成立,则退出循环。

28.r+b[k]或*(b+k)+r*xr+b[k]或*(b+k)+r\r\n*x解析:r是累加的和,k是数组b的下标,因此有r=r+b[k];由于x是传地址调用,*x是其指向存储单元的内容,要把累加的和放入x所指的单元,因此有*x=r。

29.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。

30.DDBBCCDDBBCC解析:C语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上—个元素存在并有明确值的情况下,这个牧举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素em3的值,则em3=cm2+1=1+1=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为'DDBBCC'。

31.D

32.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:

类型说明符*指针变量名;

33.驱动模块驱动模块解析:在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中,驱动模块相当于被测试模块的主程序,它接收测试数据,并传给被测试模块,输出实际测试结果。承接模块通常用于代替被测试模块调用的其他模块,其作用仅做少量的数据操作,是一个模拟子程序,不必将子模块的所有功能带入。

34.ACEACE解析:在本题中,for循环体每执行完一次,变量i的值自加两次。i的初值为\'a\',执行一次循环后变为\'c\',之后再变成\'e\',当其变为\'g\'时,循环条件若不满足,循环终止,故本题共输出3个字符。表达式'i-\'a\'+\ue008\'A\'\ue009'即表示输出i对应的大写字母,结果为ACE。

35.00解析:根据运算符的运算顺序可知,该表达式最后运算的是与(&&)运算,而任何表达式与“0”进行“与”运算,结果都为0。

36.前后件关系前后件关系解析:在数据存储结构中,除了要存储数据,还要存储数据的前后件关系,对于顺序存储的数据结构,前后件之间的关系,是通过存储空间的位置来实现的,而对于链式存储来说,数据元素之间的前后件关系是通过指针来实现的。

37.BB解析:因为c是字符类型变量,它只能接收一个字符,所以c=A,字符型变量在参与算术运算的时候是用其相应的ASCII码参与运算的,这样++c得到字母B的ASCII码,用putchar函数输出是输出其相应的字符,所以是B。

38.x=11x=11解析:在对无符号数的右移是高位补0。

39.

40.i++或++istr[j-1]str[j-1]=mi++或++i\r\nstr[j-1]\r\nstr[j-1]=m解析:字符中逆序存放的算法是:将字符串中的第i个字符和第strlen(str)-i个字符交换。然后交换字符串中第i+1个字符和第(strlen(str)-i)-1个字符,故循环变量i的值应改变,且步长为1,所以[18]处应填i++;读程序可知,循环中通过中间变量m交换字符串中的第i个字符和第strlen(str)-i个字符,所以题中第一、二处应分别填写str[j-1]、str[j-1]=m。

41.A解析:题中要求x的取值是小于等于0或者大于等于1,这说明表达式是或的关系,所以在写成C语言表达式应是逻辑或的关系,逻辑或运算符是'‖'。

42.A解析:读取文件时,当文件中的数据全部读完后,文件位置指针将位于文件的结尾。此时如果读数据,将会出现错误。为了保证读写数据的正确性,需要进行文件尾测试,文件尾测试使用函数feof(),它的功能测试fp指向的文件是否到达文件尾.若到达文件尾,返回值为非0,否则返回值为0。在本题中fP指向的某文件还没有到了文件尾,因此返回0,所以,4个选项中选项A符合题意。

43.B解析:一个算法应当具有以下5个特性:有穷性;确定性;可行性;有零个或多个输入;由一个或多个输出.简洁性不属于这5个特性,所以本题应该选择B。

44.B解析:本题自定义函数scmp()的作用是比较字符串s1和s2的大小,如果s1<s2,函数返回s1的值,否则返回s2的值。若运行时依次输入abcd、abba和abc三个字符串,执行strcpy(string,scmp(str[0],str[1]));后,string的值为abba,再执行strcpy(string,scmp(string,str[2]));,由于scmp(stringstr[2])返回string的值abba,再拷贝到字符串数组string中,所以本题输出abba。

45.A解析:由于数据的集成性使得数据可为多个应用所共享,特别是在网络发达的今天,数据库与网络的结合扩大了数据关系的应用范围。数据的共享本身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。因此,数据库设计的根本目标是要解决数据共享问题。

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

47.B

48.A解析:条件表达式“a?b:c”的含义是:当a为真时,其值等于表达式b的值;当a为假时,其值等于表达式c的值。

表达式运算过程:第1个表达式:w=2<x=3为真,所以返回w的值,即m=w=2;第2个表达式:m=2<z=5为真,所以返回m的值,即m=2;第3个表达式:w=2<y=4为真,所以返回m的值,即m=2。

49.C

50.C解析:根据数据结构对栈的定义及其特点可知:栈是限定只在表尾进行插入或删除操作的线性表,因此栈是先进后出的线性表,对栈的插入与删除操作,不需要改变栈底元素。栈是限定只在表尾进行插入或删除操作的线性表。

51.CC。【解析】在模块化程序设计中,模块之间的联系可以通过程序的控制结构来实现,在自顶向下、逐步细化的设计过程中,首先要考虑全局目标,而不是细节。在程序设计中模块化和结构化可以同时使用,一个模块的内部结构也要符合结构化设计原则。

52.C解析:队列是指允许在一端进行插入、而在另一端进行删除的线性表,允许插入的一端称为队尾,允许删除的一端称为队头,选项A和选项B错误。在队列中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除,所以,队列又称为“先进先出”或“后进后出”的线性表,它体现了“先来先服务”的原则,选项C正确,选项D错误。

53.A解析:本题考查逻辑与运算符&&。在C语言中使用运算符“&&”连接两个表达式,也可以表示逻辑与运算符。在C语言中不允许出现a<=b<=c这种格式。

54.D解析:本题程序第一轮循环后b的值为9,在进行循环条件测试时,先取b的现值9与0比较,然后再将b减1。由于9<0不成立,因此循环结束,这时b的值已变成8,本题正确答案为D。

55.B解析:break语句只能在循环体和switch语句体内使用。本题程序为在while循环中嵌套for循环。先看内层for循环,该循环的3个表达式全部省略,循环条件始终为真,但循环体内的break语句为终止循环的条件。首先,由初始条件判断外层循坏while括号内表达式的值,该值为真,执行本次while循环,即执行循环体内的订语句,判断该表达式后面括号里表达式的值为真,执行break语句,跳出内层循环,执行下面的语句,此时i和a的值均变为11;回到外层循环,判断表达式“i<20”仍为真,执行内层循环语句,此时if条件不满足,执行else语句,i的值为10,继续内层循环,if语句条件满足,执行break语句,跳出内层循环,执行下面的语句后,i和a的值分别是21和32。再判断外层循环的条件为假,结束循环.所以,4个选项中B为所选。

56.B解析:堆排序是一种选择排序。选择排序有直接选择排序和堆排序两种。

57.D

58.B解析:字符串连接函数streat的调用形式如下:strcat(s1,s2)。此函数将s2所指字符串的内容连接到s1所指的字符串后面,并自动覆盖s1串末尾的尾标,函数返回s1的地址值。

59.D解析:题目中定义的函数fun()有两个参数,一个是字符型变量ch,另一个是浮点型变景x,函数类型是void即无返回值。选项A调用fun的第1个参数是字符串常量与字符变量不匹配,所以不正确。选项B是有返回值函数的调用形式,不正确。选项C的第1个参数是错误的字符常量,字符常量是用单引号括起来的—个字符(是转义字符可能有多个字符),故也不正确。选项D使用两个整型常量调用fun这在C语言中是允许的。因为整型到字符型可以自动转换,整型到浮点型也可以自动转换。故应该选择D。

60.D解析:本题考查switch语句的掌握。必须撑握以下内容:首先应该明白switch语句的语法格式:

switch语句的语法格式为:

switch(表达式)

{

case常量表达式1:语句组1;

case常量表达式2:语句组2;

case常量表达式n:语句组n;

default:语句组n+1;

}

另外,以下几点关于switch语句的重点:

①系统在执行时计算开关表达式的值;②根据所得的值在各个case标号表达式中寻找匹配,直到发现与表达式匹配的标号(本例中匹配的是case\'B\':);\ue008③找\ue009到匹配后执行后面相应的语句表,顺序往下执行;④如果无相匹配的标号,若存在default标号,则执行该语句标号后面的语句表n+1;当不存在default标号时,不执行switch中的任何一个语句表。

一般而言,在多分支结构中总会出现'意外'的情况,这时均可归入default程序段,作统一的处理。default标号是可选性的,不必每次都有,视需要而定。switch语句中还可以包含switch语句,形成switch的嵌套。

61.A

62.A

63.B

64.D

65.B

\n栈是线性表的一种,它的特点是先进后出,并且只能在表的一端进行插入和删除操作的线性表,入栈和出栈都是在栈顶进行,因此具有记忆作用,栈可以采用顺序存储,也可以采用链式存储。

\n

66.A

67.D文

温馨提示

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

评论

0/150

提交评论