2021年山东省潍坊市全国计算机等级考试C语言程序设计真题二卷(含答案)_第1页
2021年山东省潍坊市全国计算机等级考试C语言程序设计真题二卷(含答案)_第2页
2021年山东省潍坊市全国计算机等级考试C语言程序设计真题二卷(含答案)_第3页
2021年山东省潍坊市全国计算机等级考试C语言程序设计真题二卷(含答案)_第4页
2021年山东省潍坊市全国计算机等级考试C语言程序设计真题二卷(含答案)_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

2021年山东省潍坊市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母:

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

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

2.

3.以下选项中,能用作数据常量的是______。A.o115B.0118C.1.5e1.5D.115L

4.给出以下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为()。

A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度

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

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

6.在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行____。

A.q一>next=p一>next;p一>next=q;

B.q一>next=p一>next;p一>next=q;

C.p一>next=q一>next;q=p;

D.p一>next=q一>next;q一>next=p;

7.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。

A.-3B.9C.-12D.6

8.下列程序是用来判断数组中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun

A.7,431B.6C.980D.6,980

9.若有定义"int*p[3];",则以下叙述中正确的是()。

A.定义了一个基类型为int的指针变量p,该变量具有3个指针

B.定义了一个指针数组p,该数组含有3个元素,每个元素都是基类型为int的指针

C.定义了—个名为*p的整型数组,该数组含有3个int类型元素

D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有3个int类型元素

10.有以下程序:#include<stdio.h>#defineSUB(x,y)(x)*(y)main(){inta=3,b=4;printf(“%d\n”,SUB(a++,b++));程序运行后的输出结果是()。

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

11.折半查找法的查找速度一定比顺序查找法快()。

A.正确B.错误

12.有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf(“%d\n”,s);}程序的运行结果是()。

A.55B.50C.45D.60

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

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

14.以下关于链式存储结构说法错误的是()

A.比顺序存储结构的存储密度小

B.每个节点是由数据域和指针域组成

C.查找结点时链式存储比顺序存储快

D.逻辑上不相邻的节点物理上可能相邻

15.下面判断正确的是

A.char*a="china";等价于char*a;*a="china";

B.charstr[5]={"china"};等价于charstr[]={"china"};

C.char*s="china";等价于char*s;s="china";

D.charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";

16.下列二维数组初始化语句中,不正确的是()。

A.intb[][2]={1,2,3,4,5,6,7};

B.intb[3][5]={0,0,0};

C.intb[][4]={{1,2},{3,4,5},{6}};

D.intb[3][2]={(1,2),(3,4),(5,6)};

17.以下程序的输出结果是()。main(){inti,a[4][4]一{{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a[O][3],a[1][2],a[2][1],a[3][0];}A.0650B.1470C.5430D.输出值不定

18.软件生命周期中,花费最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

19.链表不具备的特点是()

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

20.下列叙述中正确的是A.为了建立一个关系,首先要构造数据的逻辑关系

B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项

C.一个关系的属性名表称为关系模式

D.一个关系可以包括多个二维表

二、2.填空题(20题)21.下列程序将二维数组a的行和列元素互换后存放到另一个二维数组b中。请填空。

main()

{inta[2][3]={{1,2,3),{4,5}},b[3][2],i,j;

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

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

______;

}

}

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

23.已知字符'A'的ASCII码值为65,以下语句的输出结果是【】。

charch='B';

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

24.有以下程序段,且变量已正确定义和赋值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

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

请填空,使下面程序段的功能与之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

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

25.在最坏情况下,冒泡排序的时间复杂度为【】。

26.函数fun的返回值是【】

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')mm++;

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

returnnum;

}

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

#include<stdio.h>

main()

inta[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;

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

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

28.下面的语句要使指针p指向一个double类型的动态存储单元,请填空。

p=【】malloc(sizeof(double));

29.表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。

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

mazn()

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

d=(a>b>C);

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

}

31.已知字符A的ACSII码值为65,以下语句的输出结果是______。

charch='B';

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

32.按照逻辑结构分类,数据结构可分为线性结构和非线性结构,队列属于______。

33.设有如下宏定义

#defineMYSWAP(z,x,y)

{z=x;x=y;y=z;}

以下程序段通过宏调用实现变量a,b内容交换,请填空。

floata=5,b=16,c;

MYSWAP(【】a,b);

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

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:case2:return1;

}

return(fib(g-1)+fib(g-2));

}

main()

{longk;

k=fib(5);

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

}

35.下面程序的执行结果是【】。

main()

{

inta=5,b=4,c=9;

printf("###%d",(a<C)?c*b:a*B);

}

36.\13'在内存中占1个字节,"\12"在内存中占______个字节。

37.有以下定义和语句,则sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

38.当运行以下程序时,输入abcd,程序的输出结果是:()。

insert(charstr[])

{inti;

i=strlen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

scanf("%s",str);insert(str);

}

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

main()

{ints,i;

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

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

}

40.以下程序运行后的输出结果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}

三、1.选择题(20题)41.下列关于单目运算符++、--的叙述中正确的是

A.它们的运算对象可以是任何变量和常量

B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量

C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量

D.它们的运算对象可以足char型变量、int型变量和float型变量

42.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则

A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次

43.已知大写字母F的ASCII码为70,以下程序的运行结果为()#include<stdio.h>main(){charc1='F',c2='p';printf("%d,%d\n",c1,c2);}

A.70,80B.70,81C.70,82D.70,83

44.在C语言中,关于函数fseek的说法正确的是()。

A.使位置指针重新返回文件的开头

B.使位置指针到文件的结尾

C.可以改变文件位置指针

D.利用fseek函数只能实现文件顺序读写

45.设有如下3个关系表:

下列操作中正确的是()。

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

46.下列选项中不属于软件生命周期开发阶段任务的是()。

A.软件测试B.概要设计C.软件维护D.详细设计

47.以下只有使用时才为该类型变量分配内存的存储类型说明是()

A.auto和static

B.auto和register

C.register和static

D.extern和register

48.有三个关系R、s和T如下:

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

A.并B.自然连接C.笛卡尔积D.交

49.以下所列的各函数首部中,正确的是______。

A.voidplay(vara:Integer,varb:Integer)

B.voidplay(inta,b)

C.voidplay(inta,intb)

D.Subplay(aasinteger,basinteger)

50.定义int*swap()指的是______。

A.—个返回整型值的函数swap()

B.一个返回指向整型值指针的函swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

51.八进制数253.74转换成二进制数是()

A.10101011.1111

B.10111011.0101

C.11001011.1001

D.10101111.1011

52.有下列二叉树,对此二叉树前序遍历的结果为()。

A.XZCYABB.XYZABCC.XYABCZD.XYAZBC

53.以下程序的输出结果是______。main(){intnum=0;while(num<=2){num++;printf("%d\n",num);}}

D.1111222334

54.有以下程序:#include<stdio.h>fun(intx,inty,intz){z=x*y;}main(){inta=4,b=2,c=6;fun(a,b,c);printf("%d",c);}程序运行后的输出结果是()。

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

55.以下程序的功能是:给r输入数据后计算半径为r的圆面积s。#include<stdio,h>main()/*Beginning*/{intr;floats;scanf("%d",&r);s=*Π*r*r;printf("s=%f\n",s);程序在编译时出错,出错的原因是()。

A.注释语句书写位置错误

B.存放圆半径的变量r不应该定义为整型

C.输出语句中格式描述符非法

D.计算圆面积的赋值语句中使用了非法变量

56.设有声明语句chara='\72';,则变量a______。

A.包含1个字符B.包含2个字符C.包含3个字符D.声明不合法

57.下列程序执行后的输出结果是()#defineMA(x)x*(x-1)main(){inta=1,b=2;printf("%d\n",MA(1+a+B));}

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

58.请读程序:#include<stdio.h>main(){inta,b;for(a=1,b=1;a<=100:a++){if(b>=20)break;if(b%3=1”{b+=3;continue;}b=5;}printf("%d\n",A);}上面程序的输出结果是_______。

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

59.在数据库设计的四个阶段中,为关系模式选择存取方法应该是在______阶段。

A.需求分析B.概念设计C.逻辑设计D.物理设计

60.以下程序的输出结果是

#include<stdio.h>

intfun(intn,int*s)

{intf1,f2;

if(n==0||n==1)

*s=1;

else

{fun(n-1,&f1);

fun(n-2,&f2);

*s=f1+f2;

}}

voidmain()

{intx;

fun(6,&x);

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

A.7B.13C.9D.10

四、选择题(20题)61.对线性表进行二分法检索,其前提条件是()。

A.线性表以顺序方式存储,并按关键码值排好序

B.线性表以顺序方式存储,并按关键码的检索频率排好序

C.线性表以链式方式存储,并按关键码值排好序

D.线性表以链式方式存储,并按关键码的检索频率排好序

62.

63.有以下程序:

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

A.y=一1B.Y=0C.y=1D.while构成无限循环

64.以下选项中合法的标识符是()。

65.设文件指针fp已定义,执行语句fp=fopen(”61e”,”W”);后,以下针对文本文件file操作叙述的选项中正确的是()。

A.只能写不能读B.写操作结束后可以从头开始读C.可以在原有内容后追加写D.可以随意读和写

66.以下不能将s所指字符串正确复制到t所指存储空间的是()。

A.do{*t++=*8++;}while(*s);

B.for(i=0;t[i]=s[i];i++);

C.while(*t=*s){t++;s++;}

D.for(i=0,j=0;t[i++]=s[j++];);

67.在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。

A.0(n)B.D(n2)C.O(1092n)D.0(nl092n)

68.(42)希尔排序法属于哪一种类型的排序法()

A.交换类排序法

B.插入类排序法

C.选择类排序法

D.建堆排序法

69.下面关于完全二叉树的叙述中,错误的是______。A.A.除了最后一层外,每一层上的结点数均达到最大值

B.可能缺少若干个左右叶子结点

C.完全二叉树一般不是满二叉树

D.具有结点的完全二叉树的深度为[log2n]+1

70.

71.程序流程图中带有箭头的线段表示的是()。

A.图元关系B.数据流C.控制流D.调用关系

72.函数ftell(fp)的作用是()。

A.得到fp所指向文件的当前读写位置B.初始化流式文件的位置指针C.移动流式文件的位置指针D.以上答案均正确

73.已定义以下函数:

fun(int*p)

{return&p;}

该函数的返回值是()。

A.不确定的值

B.形参p中存放的值

C.形参p所指存储单元中的值

D.形参p的地址值

74.

75.待排序的关键码序列为15,20,9,30,67,65,45,90,要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第()个位置。

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

76.数据库设计中反映用户对数据要求的模式是()。

A.内模式B.概念模式C.外模式D.设计模式

77.已定义以下函数:

fun(char*p2,char*p1)

{while((*p2=*p1)!=’\0’){p1++;p2++;}}

函数的功能是()。

A.将p1所指字符串复制到p2所指向内存空间

B.将p1所指字符串的地址赋给指针p2

C.对p1和p2两个指针所指字符串进行比较

D.检查p1和p2两个指针所指字符串中是否有’\0’

78.以下语句中存在语法错误的是()。

79.若变量已正确定义,有以下程序段:

其输出结果是()。

A.0,0B.0,1C.1,1D.程序进入无限循环

80.在满足实体完整性约束的条件下()。

A.一个关系中廊该有一个或多个候选关键字

B.一个关系中只能有一个候选关键字

C.一个关系中必须有多个候选关键字

D.一个关系中可以没有候选关键字

五、程序改错题(1题)81.下列给定的程序中,proc()函数的功能是:将str所指字符串中每个单词的最后一个字母改成大写(这里的“单词”是指有空格隔开的字符串)。

例如,若输人:Howdoyoudo,则输出:HoWdOyoUd0。

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

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

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是将a中的十位数和个位数依次放在c数的十位和千位上,b中的十位数和个位数依次放在c数的百位和个位上。例如,当a=45,b=12时,调用该函数后,c=5142。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

参考答案

1.D调用缸函数后,实参数组名sl传给形参指针P,P也指向数组sl。m函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母的话,就把前一个字符转换为大写。程序中语句P[i一1]=P[i—1]一ga’+-A‘;即P[i一1]=P[i一1]一32,意思是将P[i一1]中的字符转换为大写。因此D选项正确。

2.B

3.D在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。整型常量和实型常量又称数值型常量。基本整型常量只能用数字表示,不带小数点,例如12、-1和0等,在VC6.0中可以在整型常量的后面加—个字母l(L的小写)或L;实型常量必须用带小数点的数表示,例如3.14159、-2.71828、0.0等;选项A中字母o不符合要求,选顶B中超出八进制的范围,选项C中e后面的不为整数,因此选顶D是正确的。

4.C解析:在C语言中,字符串以'\\0'作为结束符,因此数组x的长度为7+1=8,而数组y的长度等于7。

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

6.D

7.C解析:本题中首先定义一个整型变量a并给它赋初值为3,在表达式中,从右开始执行,即先执行“a-=a*a;”等价于a=a-a*a即a=3-3*3=-6,此时a的值为-6,接着执行“a+=a-;”相当于执行a=a+a即a=-6+(-6)=-12,此时a的值为-12。所以,4个选项中选项C符合题意。

8.D解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。

9.B解析:指针数组也是一种数组,所有有关的概念都适用于它。但它与普通的数组又有区别,它的数组元素是指针类型,只能用来存放地址。其格式为:存储类型数据类型*指针数组名[长度1],其含义为:定义了一个长度1的数组,其中数组元素为相应存储类型的指针,对比定义可知,选项A、C和D都不正确,所以,4个选项中选项B符合题意。

10.B#define命令是C语言中的一个宏定义命令,标识符一般使用大写,用标识符定义一个:字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。后缀自增运算a++表示先运算,后自加。意思是遇到a++了,先把当前的a的值拿来参加运算,后面再自加。SUB(a++,b++)→(a++)*(b++)=3*4。故本题答案为B选项。

11.B

12.D静态变量是始终存在的,当函数变量退出后,静态变量会保存数据,再次调用该函数时,以前的静态变量值仍然保留着。fun(a,5)的值是15,再次调用后sum=15,所以fun(b,4)=45,s=45+15=60。故本题答案为D选项。

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

14.C

15.C解析:选项A)char*a;*a=“china”应改为a=china;,选项B)应该是charstr[6];D)项表述方法有错误。

16.D解析:在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0;C语言规定,对于二维数组,只可以省略第1个方括号中的常量表达式,而不能省略第2个方括号中的常量表达式;赋的初值不能多于事先定义好的数组元素个数。

在选项D)赋值表达式中,对每一维的元素赋初值应用{},而不是()。

17.A当所赋的值不够其列的宽度时,系统在其后自动补0,因此a[0][3]=0,a[1][2]=6,a[2][1]=5,a[3][0]=0,故选择A选项。

18.D本题考查对软件生命周期的理解,软件生命周期整体上可分为定义阶段、开发阶段和维护阶段。其中定义阶段包括可行性研究与计划制订和需求分析;开发阶段包括概要设计、详细设计、开发和测试;维护阶段是一个单独阶段,不包含在开发阶段内,它是所花费用最多的一个阶段。

19.D

20.C解析:在格式化模型中,要事先根据应用的需要,确定数据之间的逻辑关系,即先对数据进行结构化。在关系模型中,不需要事先构造数据的逻辑关系,只要将数据按照一定的关系存入计算机,也就是建立关系。所以选项A错误。对于一个表示关系的二维表,其最基本的要求是表中元组的每一个分量必须是不可分的数据项,即不允许表中再有表。所以,选项B、D说法是错误的。一个关系的属性名表称为关系模式,也就是二维表的表框架,相当于记录型。因此,选项C说法正确。

21.b[j][i]=a[i][j]b[j][i]=a[i][j]解析:本题考查二维数组的基本知识。它是要将一个二维数组,的行和列元素互换后存放到另一个二维数组b中,只要将数组a的行标和列标互换,然后赋给数组b即可。

22.驱动模块驱动模块解析:由于模块通常不是独立的程序,自己不能运行,而需要其他模块调用或驱动,同时被测试模块还要去调用其他模块,前者称为驱动模块,后者称为承接模块。其中驱动模块的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果;承接模块的作用是代替被测模块,调用其他模块。

23.B66B66解析:字符B的ASCII码值为66,因此,按%c形式输出B,按%d形式输出66,输出结果为:B66。

24.k<=nk++k<=n,k++解析:本题要求将一个for循环改成while循环。首先要保证循环条件相同,在for循环中,每次执行循环之后,循环控制变量k都会加1,而while循环则没有,故需在循环体中增加改变k数值的语句'k++;'\ue009。

25.

解析:冒泡排序法是通过相邻数据元素的交换逐步将线性表变成有序。假设线性表的长度为n,则在最坏的情况下,冒泡排序需要经过遍的从前往后的扫描和遍的从后往前的扫描,需要的比较次数为。

26.字符串a和b的长度之和字符串a和b的长度之和解析:本题首先通过第一个while循环计算字符串a的长度,再通过第二个循环,将字符串a和b相连,最后返回连接后的总长度。

27.3030解析:当i=0时,s=0+a[0][0]+a[0][2]=10;i=1时,s=10+a[1][1]+a[1][1]=18;i=2时,s=18+a[2][2]+a[2][0]=30。

28.(double*)(double*)解析:本题考查强制类型转换。函数malloc的默认返回是void*,若要使指针指向double类型,必须进行类型转换,类型转换格式为:(数据类型*)。

29.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整数x的绝对值大于5,则x大于5或x小于5,用C语言表示即为:x>5||x<-5或者x<-5||x>5。故本题答案为;x>5||x<-5或者x<-5||x>5。

30.00解析:关系运算符“>”的结合方式是从左向右的,所以在本题中的表达式a>b>c;从左向右开始计算,a>b的结果为“1”,接着1和c比较假,该空格处应该填0。

31.B66B66解析:printf函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中,printf('%c%d\\n',ch,ch)表示以字符格式和十进制整数格式输出ch,B的ACSII码值为66,即在计算机中B的十进制整数格式是66。所以,输出为B66。

32.线性结构线性结构解析:队列有且只有一个根结点,而且每一个结点最多有一个前件,也最多有一个后件,满足线性结构的条件,所以属于线性结构。

33.cc解析:该题考查以下两个知识点:

(1)用一个指定的标识符(即名字)来代表一个字符串,它的一般形式为#define标识符字符串

(2)在MYSWAP宏定义中,利用中间变量z来交换x和y的值,所以要实现a和b的交换,只需通过中间变量即可,所以,此处应填c。

34.k=5k=5解析:由题可知fib(0)的值为0,fib(1)和fib(2)的值为1,因此,fib(3)=fib(2)+fib(1)=2;fib(4)=fib(3)+fib(2)=3;fib(5)=fib(4)+fib(3)=5。

35.###36

36.22解析:'\\13':表示八进制数13表示的ASCII字符,是一个字符,占一个字节;而”\\12”是个字符串,除了八进制数12表示的ASCII字符占一个字节外,还有在字符串的末尾加上串结束标志“'\\0'”,所以共有2个字节。

37.10410\r\n4解析:结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。int占2个字节,float占4个字节,共用体变量所占的内存长度等于最长的成员的长度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

38.a*b*c*d*a*b*c*d*解析:字符处理函数strlen()测试字符串常量的长度,不包括‘\\0’在内。因此,函数insert()实现了将字符数组中每个非‘\\0’的字符后插入字符‘*’的功能。故输出结果是a*b*c*d*。

39.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”不成立,循环结束。

40.6262解析:本题考查的是宏定义。带参数的宏定义是按#indefine命令行中指定的字符串从左到右进行转换。本题中替换的式子为:6+8*6+8,代入i,j的值得到62。

41.D解析:本题考核的知识点是c语言中的++和--运算符,这两种运算符是单目运算符,其运算对象可以是整型、字符型、float型和double型等基本数据类型。所以,D选项为所选。

42.B解析:本题考查while语句的使用。本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符'!'的优先级大于不等于运算符'!='的优先级。

43.A

44.C解析:fseek()函数可以自由的改变文件位置指针的位置,即可以自由读写文件中的任何位置,故选项A、B、D都是错误的,应该选择C。

45.C解析:R表中只有一个域名A,有两个记录,分别是m和n;s表中有两个域名,分别是B和C,其所对应的记录分别为1和3。表T是由R的第一个记录依次与s的所有记录组合,然后再由R的第二个记录与S的所有记录组合,形成的一个新表。上述运算符合关系代数的笛卡尔积运算规则。关系代数中,笛卡尔积运算用“×”来表示。因此,上述运算可以表示为T=R×S。

46.C解析:软件生命周期由软件定义、软件开发和软件维护三个时期组成,每个时期又进一步划分为若干个阶段。软件定义时期的基本任务是确定软件系统的工程需求。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由下面五个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。即当软件在使用过程中发现错误时应加以改正;当环境改变时应该修改软件,以适应新的环境;当用户有新要求时应该及时改进软件,以满足用户的新要求。根据上述对软件生命周期的介绍,可知选项C中的软件维护不是软件生命周期开发阶段的任务。因此,本题的正确答案是C。

47.B

48.D关系R与s经交运算后所得到的关系是由那些既在R内又在S内的共有元组组成的,记为RnS。

49.C解析:除选项C项外,其他各项都没有按照C语言中的函数定义规则定义函数。

50.B解析:—个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。

51.A

52.D解析:对二叉树的前序遍历是指先访问根结点,然后访问左于树,最后访问右子树,并且在访问左、右子树时,先访问根结点,再依次访问其左、右于树。

53.2解析:while的执行过程是:先计算条件表达式的值,若成立则执行循环体,重复上述过程,直到条件表达式的值为“假”(值为零)时,退出循环,并转下一语句去执行。本题在输出num的值为3之后,再判断while的循环条件3<=2,不成立,所以不再输出num的值,故本题的答案选B。

54.B解析:本题考查函数形参与实参的传递规则,当形参与实参都是简单的数据类型时,形参值的改变不能影响实参值,即本题中c的值未改变,仍然是6。

55.D解析:本题中表达式*Π*r*r非法,且未对变量Π做任何定义,所以编译时会出现非法字符的错误信息。

56.A解析:转文字符常量'\\xx'可以把'\\'后面的数字转换为对应的ASCII字符。

57.D解析:本题中的宏调用MA(1+a+b)展开后的结果是1+a+b*(1+a+b-1)=1+1+2*(1+1+2-1)=2+2*3=8。所以输出的结果是8,选项D正确。

58.B解析:break语句的作用是用刊曲循环体;Continue语句的作用是用于跳出本次循环。执行第一次循环时,(b%3=1)为真,b=4,继续下一次循环,如此反复,当b=22时结束循环,共循环8次,即a=8。

59.D解析:需求分析阶段是分析用户的需求,显然不属于这个阶段,由此可以排除选项A.概念设计是将需求分析得到的用户需求抽象为信息结构及概念模型的过程,涉及不到数据的存取,所以选项D错误。逻辑设计是在概念设计的基础上将E-R图转换成数据库管理系统的逻辑数据模型表示的逻辑模式,也不涉及存取问题,选项C也不对。答案为D。

60.B解析:考查函数的递归调用。n=0或n=1是递归的终止条件,然后利用已知值逐步递推求出未知值。通过传送地址值,在被调用函数中直接改变调用函数中的变量的值。

61.A解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序,而不是按关键码的检索频率排序。

62.B

63.Ay一一表示Y使用后再自减l。所以最后一次Y的值为0,条件不成立但仍要执行自减操作,Y的值为一1,跳出循环。打印Y的值一1。

64.A标识符由字母、数字或下划线组成,并且数字不能开头,所以答案选择A)。

65.A考查文件操作函数fopen的基础知识,以”W”方式打开文件,只能写不能读。选项A正确。

66.Ado{*t++=}S++;}while(*S);不能因为当*s=’、0。时,while(*s)跳出循环,这样字

温馨提示

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

评论

0/150

提交评论