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

下载本文档

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

文档简介

2021-2022年江西省抚州市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。

A.概要设计B.软件设计C.可行性研究和计划制定D.需求分析

2.

3.下面关于B树和B+树的叙述中,不正确的结论是()。

A.B树和B+树都能有效的支持顺序查找

B.B树和B+树都能有效的支持随机查找

C.B树和B+树都是平衡的多叉树

D.B树和B+树都可用于文件索引结构

4.下列数据结构中,按先进后出原则组织数据的是

A.线性链表B.栈C.循环链表D.顺序表

5.

6.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20][{"One*World","One*Dream!"},*p=str[1];prinft("%d,",strlen(p));printf("%s\n",p);}程序运行后的输出结果是()。A.9,0ne*WorldB.9,0ne*Dream!C.10,One*Dream!D.10,Ome*World

7.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩.,则表SC的关键字(键或码)为()

A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩

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

A.构成C程序的基本单位是函数

B.可以在一个函数中定义另一个函数

C.main函数必须放在其他函数之前

D.C函数定义的格式是K&R格式

9.要求当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”,以下不满足要求的表达式是()。A.A%2==1B.!(A%2==0)C.A%2D.!(A%2)

10.

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

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列是非线性结构

D.循环队列是一种逻辑结构

12.有以下程序:#include<stdio.h>typedefstruct{intnum;charname[10];intscore;}PER;voidfun(PERx[]){intt;if(x[0].score>x[1].score){t=x[0].score;x[0].score=x[1].score;x[1].score=t;}}main(){PERs[2]={{1001,“zhang”,621},{1002,“wang”,585}};inti;fun(s);for(i=0;i<2;i++)printf(“%d,%s,%d,”,s[i].num,s[i].name,s[i].score);}程序的运行结果是()。A.1001,zhang,585,1002,wang,621,

B.1001,zhang,621,1002,wang,585,

C.1002,wang,585,1001,zhang,621,

D.1002,wang,621,1001,zhang,585,

13.用不带头结点的单链表存储队列,其头指针指向队头结点,尾指针指向队尾结点,则在进行出队操作时()。

A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都可能要修改D.队头、队尾指针都要修改

14.在软件开发过程中,软件结构设计是描述______。

A.数据存储结构B.软件体系结构C.软件结构测试D.软件控制过程

15.一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出棱的顺序是()。A.A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA

16.以下说法错误的是()。

A.C语言标识符中可以有多个字母、数字和下划线字符

B.C语言标识符中下划线字符可以出现在任意位置

C.C语言标识符不能全部由数字组成

D.C语言标识符必须以字母开头

17.函数fseek(pf,OL,SEEKEND)中的SEEKENE代表的起始点是()。

A.文件开始B.文件末尾C.文件当前位置D.以上都不对

18.阅读以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("请输人2个数:");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}该程序在编译时产生错误,其出错原因是()。A.定义语句出错,case是关键字,不能用做用户自定义标识符

B.定义语句出错,printF不能用做用户自定义标识符

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句无错,printf不能输出case的值

19.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是A)B)369C)0.369D)A.-369B.369C.0.369D.整数集合{1,2,3,4,5}

20.按照“先进后出”原则组织数据的结构是()。

A.队列B.栈C.双向链表D.二叉树

二、2.填空题(20题)21.下面程序由两个源程序文件:t4.h和t4.c组成,程序编译运行的结果是:【】。

t4.h的源程序为:

#defineN10

#dennef2(x)(x*N)

t4.c的源程序为:

#include<stdio.h>

#defineM8

#definef(x)((x)*M)

#include"t4.h"

#main()

{inti,j;

i=f(1+1);j=f2(1+1);

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

}

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

voidfun(intx,inty)

{

x=x+y;y=x-y;x=x-y;

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

}

main()

{

intx=2,y=3;

fun(x,y);

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

}

23.阅读下面语句,则程序的执行结果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

elseprintf("%d,%d\n",b,a);}

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

voidfun()

{

staticinta=0;

a+=2;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<4,cc++)fun();

printf("\n");

}

25.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystden(char*str)

{inti;

fo,(i=0;【】!='\0';i++);

return(i);

26.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是______。

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

main()

{unsignedshorta=65536;intb;

printf("%d\n",b=A);

}

28.下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

29.有以下程序:

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]);

}

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

30.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

31.若用0至9之间不同的三个数构成一个三位数,下面程序将统计出共有多少种方法。请填空。

#include<stdio.h>

main()

{inti,j,k,count=0;

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

for(j=0;i<=9;j++)

if(【】)continue;

elsefor(k=0;k<=9;k++)

if(【】)count++;

printf("%d",count);}

32.阅读下面程序,则程序的执行结果为【】。

#include"stdio.h"

main()

{inta=30,b=20,z;

z=fun(a+b,a-b);

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

fun(inta,intb)

{intz;

z=a/b;

returnz;}

33.分析下列程序:

main()

{intx=1,y=0,a=0,b=0;

switch(a)

{case1:switch(b)

{case0:x++;

case1:y++;break;

}

case2:x++;y++;break;

}

printf("x=%d,y=%d\n",x,y);

}

运行程序的输出结果是______。

34.以下程序段的运行结果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}

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

#include<stdio.h>

main()

{intfun();

fun();

}

fun()

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

inti;

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

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

printf"\n");

}

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

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

printf("%d\n",fun(a,B)/m);

}

37.软件测试分为白箱(盒)测试和黑箱(盒)测试。基本路径测试方法属于()测试。

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

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

39.以下程序输出的最后一个值是【】

intff(intn)

{staticintf=1;

f=f*n;

returnf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i));

}

40.关系数据库管理系统能实现的专门关系运算包括选择、连接和【】。

三、1.选择题(20题)41.设有以下定义和语句,输出的结果是(用small模式编译,指针变量2个字节)______。structdate{long*cat;structdate*next;doubledog;}too;printf("%d",sizeof(too));

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

42.有以下函数定义:voidfun(intn,doubx){……}若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfum(n,x);

43.有以下结构体说明和变量定义,相应的链表如图所示:

struetnode{intdata;struetnode*next;*p,*q,*r;现将q所指结点多链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是()。

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

B.p->next=p->next->next;

C.p->next=r;

D.p=q->next

44.以下能正确定义一维数组的选项是

A.inta[5]={0,1,2,3,4,5};

B.chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};

C.chara={′A′,′B′,′C′};

D.inta[5]="0123";

45.下列4项中,必须进行查询优化的是______。A.A.关系数据库B.网状数据库C.层次数据库D.非关系模型

46.有以下程序:main(){intx=0,y=5,z=31while(z-->0&&++x<5)y=y-1;printf("%d,%d,%d\n",x,y,z);}程序执行后的输出结果是______。

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

47.下列程序的输出结果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i+)printf("%d,",a[i]);}

A.8,2,3,4,5,6,7,1

B.5,6,7,8,1,2,3,4

C.1,2,3,4,5,6,7,8

D.8,7,6,5,4,3,2,1

48.以下程序的输出结果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}

A.650B.1470C.5430D.输出值不定

49.设有一共用体变量定义如下:uniondata{longw;floatx;inty;charz;};uniondatabeta;执行下列语句后,正确的共用体变量beta的值是()。beta.w=123456;beta.y=888;beta.x=3.1416;beta.z='x';

A.123456B.888C.3.1416D.'X'

50.下面四个选项中,均是不合法的用户标识符的选项是()。

A.AP_0doB.floatla0_AC.b-agotointD._123tempint

51.下面程序段中,输出*的个数是char*s="\ta\018bc";for(;*s!='\0';s++)printf("*");

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

52.运行下列程序时,若输入数据为“321”,则输出结果是()。main(){intnum,i,j,k,s;scanf("%d",&num);if(num>99)s=3;elseif(num>9)s=2;elses=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch(s){case3:printf("%d%d%d\n",k,j,i);break;case2:printf("%d%d\n",k,j);case1:printf("%d\n",k);}}

A.123B.1,2,3C.321D.3,2,1

53.下列程序的输出结果是()。#include<stdio.h>main(){inta[2][3]={{1,2,3},{4,5,6}),(*p)[3],i;p=a;for(i=0;i<3;i++){if(i<2)p[1][i]=p[1][i]-1;elsep[1][i]=1;}printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}

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

54.t为int型变量,进入下面的循环之前,t的值为0,则以下叙述中正确的是()while(t=1){…}

A.循环控制表达式的值为0B.循环控制表达式的值为1C.循环控制表达式不合法D.以上说法都不对

55.若执行下面的程序时,从键盘输入5和2,则输出结果是

main()

{inta,b,k;

scanf("%d,%d",&a,&b);

k=a;

if(a<b)k=a%b;

elsek=b%a;

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

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

56.完整的计算机存储器应包括______。

A.软盘、硬盘B.磁盘、磁带、光盘C.内存储器、外存储器D.RAM、ROM

57.以下各选项企图说明一种新的类型名,其中正确的是______。

A.typedefv1int;

B.typedefv2=int;

C.typedefintv3;

D.typedefv4:int

58.设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是A.x=x*100+0.5/100.0;

B.x=(x*100+0.5)/100.0;

C.x=(int)(x*100+0.5)/100.0;

D.x=(x/100+0.5)*100.0;

59.下列队列的描述中,正确的是()

A.队列属于非线性表B.队列在队尾删除数据C.队列按“先进后出”进行数据操作D.队列按“先进先出”进行数据操作

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

四、选择题(20题)61.以下叙述中正确的是()。

A.a是实型变量,C允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值

B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

D.已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为3

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

A.可以给指针变量赋一个整数作为地址值

B.函数可以返回地址值

C.改变函数形参的值,不会改变对应实参的值

D.当在程序的开头包含头文件stdi0.h时,可以给指针变量赋NULL、、、

63.有以下程序:

#include<stdio.h>

main()

{inta[]={10,20,30,40},*p=a,j;

for(i=0;i<=3;i++){a[i]=*P;p++;}

printf("oAd\n",a[2]);

}

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

A.30

B.40

C.10

D.20

64.

65.

66.

67.

68.

69.有以下程序:

程序运行时,输入的值在哪个范围才会有输出结果()。

A.不等于10的整数

B.大于3且不等于l0的整数

C.大于3或等于l0的整数

D.小于3的整数

70.下列判断正确的是()。A.A.chara="ABCD":等价于char*a;*a="ABCD":

B.charstr[10]={"ABCD"}:等价于charstr[10];str[]={"ABCD"};

C.char*s="ABCD":等价于chars;*s="ABCD";

D.charc[5]="ABCD",d[5]="ABCD":等价于charc[5]-d[5]="ABCD";

71.

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

#include<stdio.h>

main()

{inti,S=0;

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

if(!(i%2)&&!(i%3))s+=i;

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

}

A.4B.39C.45D.6

72.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。

A.模拟现实世界中不同事物之间的联系

B.强调模拟现实世界中的算法而不强调概念

C.使用现实世界的概念抽象地思考问题从而自然地解决问题

D.不强调模拟现实世界中的算法而强调概念

73.设有以下语句执行后,c的值为()。

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

74.以下关于typedef的叙述错误的是()。

A.用typedef可以增加新类型

B.typedef只是将已存在的类型用一个新的名字来代替

C.用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名

D.用typedef为类型说明一个新名,通常可以增加程序的可读性

75.

以下程序执行后sum的值是()。

main

{inti,sum;

for(i=1;i<6;i++)sum+=i:

printf("1%d\n",sum):

}

A.15B.14C.不确定D.0

76.

77.(55)在设计程序时,应采纳的原则之一是()

A.程序结构应有助于读者理解

B.不限制goto语句的使用

C.减少或取消注解行

D.程序越短越好

78.

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

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

C.循环队列是非线性结构

D.循环队列是一种逻辑结构

80.下列数据模型中,具有坚实理论基础的是()。A.层次模型B.网状模型C.关系模型D.以上三个都是

五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:计算并输出k以内最大的10个能被15或18整除的自然数之和,k的值由主函数传人。若k的值为800,则函数的值为7605。

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

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

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写函数fun(),其功能是找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#defineM4#include<stdio.h>intfun(inta[][m]){}voidmain(){intarr[2][M]={5,8,3,45,76,-4,12,82};printf(“max=%d\n”,fun(arr));}

参考答案

1.D\n通常,将软件产品从提出、实现、使用维护到停止使用、退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。软件生命周期的主要活动阶段为:可行性研究和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可能方案,制定完成开发任务的实施计划。

\n需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。

\n软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。

\n软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。

\n软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。

\n运行和维护。将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。

\n本题答案是D)。

\n

2.A

3.A

4.B解析:栈是限定在二端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照“先进后出”或“后进先出”的原则组织数据的。注意:队列组织数据的原则是“先进先出”或“后进后出”。注意:数据结构中,栈和队列组织数据的原则。

5.C

6.C本题输出两个结果,第一个是求字符串的长度。第二个是输出的字符串,数组的下标是从0开始的,所以当str取1的时候,应为“One*Dream!”。

7.C学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C项。

8.A解析:本题考查C语言的综合基础知识。构成C程序的基本单位是函数,一个C程序总是从main函数开始执行,而不论main函数在整个程序中的位置如何。C语言的函数定义都是互相平行、独立的,在定义函数时,一个函数内不能定义另一个函数。C函数定义的一般格式有两种:传统格式和现代格式。传统格式也称K&R格式,是早期编译系统使用的格式;现代格式又称ANSI格式,是现代编译系统使用的格式。

9.D

10.A

11.B本题主要考查循环队列的概念,循环队列作为队列的一种也应该是线性结构。队列是一种逻辑结构,而循环队列是一种顺序存储结构的队列。

12.A程序首先使用typedef定义一种新的类型名PER,它包含3种数据成员:整数num,字符数组name,整数score。main函数使用PER定义结构体数组s,s包含两个PER类型的元素。然后调用函数fun将数组s传入。fun函数的功能是比较形参数组x的两个元素的score值的大小。若第1个元素的score值大于第2个元素的score值,就使用临时变量t将两个元素的score值交换。由于621大于585且x等价于实参s的指针,因此实参s的两个元素的score也会进行交换,执行完fun函数之后,for循环将两个元素输出。故本题答案为A选项。

13.C

14.B解析:从工程管理解度来看,软件设计分两步完成:概要设计和详细设计。概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。

15.B栈是先进后出的原则组织数据,所以人栈最早的最后出栈,所以选择B。

16.DC语言的合法的标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第1个字符必须是字母或下划线。选项D错误。本题答案为D选项。

17.BSEEK_SET代表文件的开始,SEEK_END代表文件末尾,SEEK_CUR代表文件当前位置。

18.A本题中定义了整形变量case,但case是关键字,关键字不能用做标识符。单精度printF不是关键字,因为标识符区分大小写。所以A不正确。

19.B

20.B栈是线性表的一种,其插入和删除运算都只在表的一端进行。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除的元素,是按先进后出的原则组织数据的。

21.16111611解析:题目中第1条要替换的语句i=f(1+1);展开后是i=((1+1)*M);继续展开为i((1+1*8),结果使i=16。而第2条语句j=f2(1+1)”;展开后为j=(1+1*N);继续展开为j=(1+1*10),结果使j=11。故程序运行的结果是输出1611。

22.32233,2,2,3解析:主函数中首先定义了整型变量x和y,并分别给它们赋初值为2和3,接着调用fun()函数,fun()函数把实参x和y的值传给形式参数x和y,实参和形参不再有联系.在fun()函数中通过运算使x和y的值交换过来,所以fun()函数中的输出结果是“3,2”。fun()函数调用返回输出x和y依旧是原来的x和y,为“2,3”原因是变量作为形参传值的,对形参的修改并不影响对应的实参。所以最后输出为3,2,2,3。

23.101,0解析:与运算两边的语句必须同时为真时,结果才为真,当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。

24.246246解析:static声明的外部变量只限于被本文件引用,而不能被其他文件引用。用static来声明一个变量的作用有:①对局部变量用static声明,则为该变量分配的空间在整个程序执行期间始终存在;②全部变量用static声明,则该变量的作用域只限于本文件模块(即被声明的文件中)。

25.*(str+i)或str[i]*(str+i)或str[i]解析:str是指针变量,它指向字符型数据,在循环过程中,用*(str+i)或str[i]来访问字符串的第i个元素,判断是否是结束标志,如果不是,i=i+1,继续取下一个元素进行判断,直到*(str+i)的值为'\\0'为止。

26.顺序存储(顺序方式存储)顺序存储(顺序方式存储)解析:二分法查找对表的要求是有序的顺序表,即第一要求是数据元素有序,第二要求是按顺序方式存储。

27.00解析:对于一个unsignedshort来说,它能取的最大值是65535。这里给a赋值65536,已经超出了它的取值范围,这样它的高位将被截掉,只把低位赋给它(全零)。所以a的值实际为0。

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

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

30.数据存储数据存储

31.i==jk!i&&k!ji==j\r\nk!i&&k!j解析:本题用双重for循环写了一段0~9之间不同的3个数构成一个三位数的程序,因为要求三位数各个位数的数不能相同,所以第一个空if语句的条件应为i==j,即当两个位数上的数相同的时候,不再执行下面的操作,转去执行for循环的下一次循环。第二个空,需要判断第三位上的数不能与其他两位的数相同。

32.55解析:函数调用的时候,函数名字必须与所调用的函数名完全一致,形参与实参类型要一致,在没有给出函数返回值类型的情况下,默认为整形,当返回值为整型的函数放到主函数后面时,可以不需要事先说明就调用这个函数。return既可以返回一个普通常量,也可以返回一个指针变量。

33.x=1y=0。x=1,y=0。解析:本题程序的主体部分是switch语句的嵌套结构,当变量a的值为0时,在第一层switch-case语句中,没有匹配的case分支。因此,x和y的值没有变化,仍然是1和0。

34.x=2

35.24682,4,6,8解析:子函数fun()的功能是将数组a中的元素都自加一遍,然后仍然将结果存在原数组中,其实就是将数组a的每个元素都变为原来的2倍,然后输出。在主程序中首先通过intfun()定义了子函数fun(),然后再调用fun()。

36.11解析:本题考查局部变量和全局变量的区别:局部变量是指作用域在函数级和块级的变量,全局变量是指作用域在程序级和文件级的变量。本程序首先定义了一个全局变量m=17,m=17的作用域在整个程序内。在fun函数内部定义了一个局部变量m=3,m=3的作用域仅在fun函数内部,通过fun函数返回两个形参的积再减m。在主函数中,输出fun(a,b)/m=(5*7-3)/17=1。

37.自盒自盒解析:自盒测试法即结构测试,它与程序内部结构相关,要利用程序结构的实现细节设计测试实例。白盒测试法主要有逻辑覆盖、基本路径测试等。

38.246

39.120120解析:静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:

①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。

②对静态局部变量是在编译时赋初值的,即只赋初值—次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。

③如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。(注意:C语言中的非静态变量在定义时,系统并不会自动给它赋初值)

④虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。

本题中函数的功能是:与for语句一起求一个整数的阶乘。

40.投影专门关系运算包括对单个关系进行垂直分解(投影操作)或水平分解(选择操作)和对多个关系的结合(连接操作)等。

41.D解析:sizeof函数计算已知类型所占的字节数。结构体变量所占内存长度是各成员占的内存长度之和。指针变量占2个字节,所以cat和*next各占2个字节;double型占8个字节,故too共占12个字节。

42.C解析:选项A中应将y和m前面的函数的类型说明符去掉,故选项A不正确;选项B中函数传了2个参数,其中一个为整型—个为浮点型,而fun()函数在定义时声明的2个参数,一个为整型一个为双精度型,其参数类型不一致,故选项B不正确;选项D在调用函数时,不应该再声明其返回类型,故选项D不正确。所以,4个选项中选项C符合题意.

43.D解析:本题定义了结构体类型的指针变量p,q,r,并各自有两个成员变量data和next,data用于存放数据,next用于存放下一个结点的地址,所以,要想将q所指结点从链表中删除,同时保持链表的连续,必须使P结点的next指向r,选项D)不对。

44.B解析:选项A)中,定义的初值个数大于数组的长度;选项C)中,数组名后少了中括号;选项D)中,整型数组不能赋予字符串。

45.A解析:关系数据模型诞生之后迅速发展,深受用户喜爱,但关系数据模型也有缺点,其最主要的缺点是由于存取路径对用户透明,查询效率往往不如非关系数据模型。因此,为了提高性能,必须对用户的查询请求进行优化。

46.B解析:第一次执行while语句时,z=3>0,然后执行z--得z=2,执行++x得x=1<5,条件成立,执行y=y-1=5

-1=4;第二次执行while语句时,z=2>0,然后执行z--得z=1,执行++x得x=2<5,条件成立,执行y=y-1=4-1=3;第三次执行while语句时,z=1>0,然后执行z--得x=0,执行++x得x=3<5,条件成立,执行y=y-1=3-1=2;第四次执行while语句时因z=0,z<0条件不成立,同时执行c--得z=-1。即执行完while循环后x=3、y=2、z=-1。

47.D解析:函数f()的功能是对两个数据互换。在主函数中指针变量p和q分别指向数组a[8)的首和尾,在while循环中实现从首尾开始数组元素的互换操作。

48.A解析:对未给出初始值的整数数组元素,被默认初始化为零。

49.D解析:因为共用体的所有成员共同占据一段存储空间,所以成员数据后赋的值会覆盖掉先赋的值,最后共用体变量中保留的就是最后一次赋的值。注意:共用体变量所占存储单元字节数的计算。

50.C解析:C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字,b-a中'-'不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法用户标识符的选项是C)。

51.C解析:本题中,格式符。表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码代码值。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。

52.A解析:本题考查if-else语句和switch语句。scan函数通过键盘读入nUm的值。因为num=321>99,所以s=3,i=3,i=2k=1。因为s=3,所以执行case3,输出k,j,i的值,然后通过breed结束程序。

53.B解析:第1次执行for循环,p[1][0]=p[1][0]-1=3:第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,p[1][2]=1,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。

54.B

55.C解析:本题考查简单的if卐lse语句。先执行条件if(a<b),显然不成立,在执行else语句。

56.C

57.C解析:C语言中可以使用typedef来重新定义已有的数据类型,相当于为数据类型取个别名。

58.C解析:本题考核的知识点是实型变量中小数点的位数。选项A中0.5/100.0将保留小数点后六位,不满足题目要求,故选项A不正确:选项B和选项D也将保留小数点后六位,不满足题目要求,故选项B不正确:所以,4个选项中选项C符合题意。

59.DD)【解析】队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。队列的操作数是依据先进先出的原则进行的。因此队列亦称作先进先出的线性表,或后进后出的线性表。

60.A解析:条件表达式的形式如下:表达式1?表达式2:表达式3,所以本题条件表达式a<b?a:c<d?c:d应该理解为a<b?a:(c<d?

温馨提示

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

评论

0/150

提交评论