2021年甘肃省张掖市全国计算机等级考试C语言程序设计测试卷(含答案)_第1页
2021年甘肃省张掖市全国计算机等级考试C语言程序设计测试卷(含答案)_第2页
2021年甘肃省张掖市全国计算机等级考试C语言程序设计测试卷(含答案)_第3页
2021年甘肃省张掖市全国计算机等级考试C语言程序设计测试卷(含答案)_第4页
2021年甘肃省张掖市全国计算机等级考试C语言程序设计测试卷(含答案)_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

2021年甘肃省张掖市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在Internet中,域名服务器的主要功能是实现()的转换。

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

2.以下程序的输出结果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}

A.abe+ABC=DEFdef

B.abc+abe=defdef

C.abcaABCDEFdef

D.abcabcdefdef

3.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a<回车>后,以下叙述正确的是()。

A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入第2个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

4.两个或两个以上模块之间关联的紧密程度称为()。

A.耦合度

B.内聚度

C.复杂度

D.数据传输特性

5.有下列程序:程序执行后的输出结果是()。A.2,3,1,2B.9,9,2,9C.8,10,2,8D.9,9,1,9

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

7.在ASC算法team日常开发中,常常面临一些数据结构的抉择,令人纠结。目前大家在策划一个FBI项目(FastBinaryIndexing),其中用到的词汇有6200条,词汇长度在10-15之间,词汇字符是英文字母,区分大小写。请在下面几个数据结构中选择一个使检索速度最快的()

A.二叉搜索树,比较函数开销:1次运算/每字符

B.哈希表,hash算法开销:10次运算/每字符

C.链表,比较函数开销:1次运算/每字符

D.TRIE树,寻找子节点开销:1次运算/每字符

8.若有定义“intx=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为()。

A.1B.1.9C.2D.2.4

9.下列语句组中正确的是()。

A.char*s;s=“Olympic”;

B.chars[7];s=“Olympic”;

C.char*s;s={“Olympic”};

D.chars[7];s={“Olympic”};

10.下列叙述中错误的是()。A.在数据库系统中,数据的物理结构必须与逻辑结构一致,

B.数据库技术的根本目标是要解决数据的共享问题

C.数据库设计是指在已有数据库管理系统的基础上建立数据库

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

11.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

12.若有说明语句:double*P,a;则能通过scanf语句正确给输入项读入数据的程序段是()。

A.*p=&a;scanf("%lf",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%lf",*p);

D.p=&a;scanf("%lf",p);

13.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。A.log2+1

B.log2(n-1)

C.log2n

D.log2(n+1)

14.下面结构中最适于表示稀疏无向图的是()。

A.邻接矩阵B.逆邻接表C.邻接多重表D.十字链表

15.有以下程序voidf(intn,int*r){intr1=0;if(n%3==0)r1=n/3;elseif(n%5==0)r1=n/5;elsef(--n,&r1);*r=r1;}main(){intm=7,r;f(m,&r);printf("%d",r);}程序运行后的输出结果是A.2B.1C.3D.0

16.

17.若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组元素的地址为()。

A.334HB.30DHC.352HD.31AH

18.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

19.

20.

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

#include<stdio.h>

main()

{intn=12345,d;

while(n!=0){d=n%10;printf("%d",D);n/=10;}

}

22.在一个容量为32的循环队列中,若头指针front=3,尾指针rear=2,则该循环队列中共有______个元素。

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

voidfun(int*n)

{while((*n)--);

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

}

main()

{inta=1000;

fun(&a);

}

24.若有如下程序:

main()

{ints[]={1,2,3,4,5,6,},*p=s;

printf{"%d,%d\n",*(p+3),*(p+5)}}

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

25.软件工程研究的内容主要包括:【】技术和软件工程管理。

26.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。

27.有下列程序,功能是把输入的+进制长整型数以+六进制的形式输出,完成程序

#include"stdio.h"

main()

{charb[17]={"0123456789ABCDEF"};

intc[50],d,i=0,base=16;

longn;

scanf("%1d",&n);

do{c[i]=n%base;i++;n=【】;}

while(n!=0);

for(--i;i>=0;--i)

{d=【】;printf("%c",b[d]);}

printf("H\n");}

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

#include<stdio.h>

intf(ihta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

main()

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);prinff("%d\n",s);

}

29.设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【】。

30.以下程序中,select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。

#defineN3

#defineM3

select(inta[N][M],int*n)

{inti,j,row=1,colum=1;

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

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

if(a[i][j]>a[row][colum]){row=i;colum=j;}

*n=【】;

return(【】);

}

main()

{inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;

max=select(a,&n);

printf(“max=%d,line=%d\n”,max,n);

}

31.按照逻辑结构分类,结构可以分为线性结构和非线性结构,栈属于______。

32.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

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

main()

{inta+,b=2,C=3,t=0;

ifa<B){t=a;a=b;b=t;}

ifa<C){t=a;a=c;c=t;}

printf("%d,%d,%dln",a,b,C);

}

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

main()

{

intarr[]={30,25,20,15,10,5},*p=arr;

p++;

printf("%d\n",*(p+3));

}

35.下面程序的运行结果是()。

#defineEXCH(a,B){intt;t=a;a=b;b=t;}

main()

{intx=1,y=2;

EXCH(x,y);

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

}

36.算法的复杂度主要包括空间复杂度和______复杂度。

37.已有文本文件test.txt,其中的内容为:Hello,everyone!。以下程序中,文件test.txt已正确为“读”而打开,由文件指针fr指向该文件,则程序的输出结果是【】。

#include<stdio.h>

main()

{

FILE*fr;charstr[40];

fgets(str,5,fr);

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

fclose(fr);

}

38.软件开发环境是全面支持软件开发全过程的【】集合。

39.函数sstrcmp的功能是对两个字符串进行比较。当s所指字符串和t所指字符串相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数strcmp)。请填空。

#include<stdio.h>

intsstrcmp(char*s,char*t)

{while(*s&&*t&&*s==【】)

{s++;t++;}

return【】;

}

40.#define命令出现在程序中函数的外面,宏名的有效范围为______。

三、1.选择题(20题)41.若有下列说明,则()不是对strcpy库函数的正确的调用。strcpy库函数用于复制一个字符串:char*str1="abcd",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa"

A.strcpy(str2,str1)

B.strcpy(str3,str1)

C.strcpy(str4,str1)

D.strcpy(str5,str1)

42.以下程序段的输出结果是()。inta=1234;printf("%2d\n",a);

A.12B.34C.1234D.提示出错,无结果

43.设a和b均为双精度型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是()。

A.6.5B.6C.5.5D.6

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

A.在同一C程序文件中,不同函数中可以使用名字相同的变量

B.在main()函数体内定义的变量是全局变量

C.形参是局部变量,函数调用完成即失去意义

D.若同一文件中全局和局部变量同名,则全局变量在局部变量作用范围内不起作用

45.下面程序段的输出结果是______。char*s="abcde";s+=2;printf("%d",s);

A.cdeB.字符'c'C.字符'c'的地址D.无确定的输出结果

46.一些重要的程序语言(如Pascal语言)允许过程的递归调用,而实现递归调用中的存储分配通常用()。

A.栈B.堆C.数组D.链表

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

A.在C程序中,逗号运算符的优先级最低

B.在C程序中,APH和aph是两个不同的变量

C.若变量a和b类型相同,执行了赋值表达式a=b后b中的值将放入a中,而b中的值不变

D.当从键盘输入数据时,对于整型变量只能输入整型数值,而实型变量只能输入实型数值

48.执行下面程序的正确结果是()。main(){floata=1.9;switch(a){case0:printf("0000");case1:printf("1111");case2:printf("3333");}printf("%f",a);}

A.1.9B.111133331.9C.33331.9D.1111233331.9

49.下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。#include<stdio.h>main(){inti=0,j,k;do{i++;k=316-13*i}while(______);j=k/11;printf("316=13*%d+11,%d”,i,j);}

A.k/11B.k%11C.k/11==0D.k%11==0

50.在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用二分法查找关键码值11,所需的关键码比较次数为______。

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

51.开发软件时对提高开发人员工作效率至关重要的是()

A.操作系统的资源管理功能B.先进的软件开发工具和环境C.程序人员的数量D.计算机的并行处理能力

52.已知—个有序表为(12,18,24,35,47,50,62,83,90,115,134),当二分查找值为47的元素时,经过______次比较后查找成功。

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

53.对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。A.N+1B.NC.(N+1)/2D.N/2

54.以理程序的输出结果______。main(){charst[20]="he11\O\t\\";printf("%d%d\n",str1en(st),sizeof(st));}

A.99B.520C.1320D.2020

55.软件开发的结构化生命周期方法将软件生命周期划分成()

A.定义、开发、运行维护

B.设计阶段、编程阶段、测试阶段

C.总体设计、详细设计、编程调试

D.需求分析、功能定义、系统设计

56.已知函数的调用形式:fread(buffer,size,count,fp);其中buffer代表的是()。

A.一个整型变量,代表要读入的数据项总数

B.一个文件指针,指向要读的文件

C.一个指针,是指向的输入数据放在内存中的起始位置

D.一个存储区,存放要读的数据项

57.在下列叙述中,不正确的一条是______。

A.在C语言中,函数中的自动变量可以赋初值,每调用一次,赋一次初值

B.在C语言中,外部变量的隐含类别是自动存储类别

C.在C语言中,在调用函数时,实际参数和对应形参在类型上只需赋值兼容

D.在C语言中,函数形参可以说明为register变量

58.设int型占2个字节,则unsignedint所能表示的数据范围是______。

A.0~65535B.-32769~32767C.1~65536D.0~32767

59.将E-R图转换到关系模式时,实体与联系都可以表示成________。

A.属性B.关系C.键D.域

60.在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是

A.a=20000+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*10L;

四、选择题(20题)61.

62.以下关于字符串的叙述中正确的是()。

A.C语言中有字符串类型的常量和变量

B.两个字符串中的字符个数相同时才能进行字符串大小的比较

C.可以用关系运算符对字符串的大小进行比较

D.空串一定比空格打头的字符串小

63.

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

char*point(char*pt):

main

{charb[4]={a,c,s,f),*pt=b;

pt=point(pt);

printf("%c\n",*pt);

}

point(char*p)

{p+=3;

returnp;

}

A.sB.cC.fD.a

64.软件生命周期中所花费用最多的阶段是()。

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

65.若有以下程序:inta=1,b=2:a=a^b:b=b^a:则执行以上语句后a和b的值分别是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

66.设有定义:doublex=5.16894;,则语句prinff(”%If\n”,(int)(x$1000+0.5)/1000.);的输出结果是()。

A.5.16900B.5.16800C.0.00000D.输出格式说明符与输出项不匹配,产生错误信息

67.表示关系M<=N<=P的C语言表达式为()。

A.(M<=N.AND(N<=P.

B.(M<=N.&&(N<=P.

C.(M<=N<=P.

D.(M<=N.&(N<=P.

68.数据库设计包含四个阶段,它们是需求分析、()、逻辑设计和物理设计。

A.编码设计B.测试阶段C.运行阶段D.概念设计

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

main()

{inta=2,b=3,c;

c=a;

if(a>b)c=1;

elseif(a==b)c=0;

elsec=-1;

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

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

70.

71.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送()。A.调用语句B.命令C.口令D.消息

72.

73.以下选项中,能定义S为合法的结构体变量的是()。

A.

B.

C.

D.

74.已知大写字母A的ASCIl码的值是65,小写字母a的ASCIl码的值是97,以下不能将变量。中的大写字母转换为对应小写字母的语句是()。

A.

B.

C.

D.

75.对于存储同样的一组数据元素而言().

A.顺序结构比链接结构易于扩充空间

B.顺序结构与链接结构相比,更有利于对元素进行插入、删除运算

C.顺序结构占用整块空间,而链接结构不要求整块空间

D.顺序结构比链接结构多占存储空间

76.如下程序段

#include<stdio.h>

#include<ctype.h>

#include<conio.h>

intfun(char*str)

{inti,j=0;

for(i=0;str[i]!=’\0’;i++)

if(str[i]!=’’)str[j++]=str[i];

str[j]=’\0’;

}

main()

{

charstr[81];

intn;

clrscr();

printf("Inputastring:");

gets(str);

fun(str);

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

}

当运行程序时,输入asdafaaz67<回车>,则输出是A.A.asdafaaz67

B.asdafaaz67

C.asd

D.z67

77.

78.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。

A.125B.n/2C.nD.n+1

79.有以下程序:

程序输出结果是()。

A.0,1,2,0B.0,0,0,3C.1,1,2,0D.编译有错

80.有以下程序

main()

{inti;

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

switch(i)

{case1:printf("%d",i);

case2:printf("%d",i);

default:printf("%d",i);

}

}

程序执行后的输出结果是

A.011122B.012

C.012020D.120

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从m个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如输入8名学生的成绩:987867563489.578.576.5则低于平均分的学生人数为3(平均分为72.187500)。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前导的。号之外,将串中其他*号全部删除。在编写函数时.不得使用C语言提供的字符串函数.

参考答案

1.B在Internet中,把域名翻译为IP地址的软件称为域名系统DNS,运行域名系统的主机称为域名服务器。域名服务器的主要功能是实现入网主机名字和IP地址的转换。

2.B解析:字符数组元素作函数参数是单向的值传递。函数cchar的功能是将大写字母转换为小写字母。主函数中while循环语句的条件是判断指针p当前指向的字符是否为空,若不为空,则调用函数cchar,即主函数中通过循环语句将字符串'ABC+abc=defDEF'中的大写字母全部转换为小写字母,因此printf的输出结果为选项B。

3.A解析:本题考查的是getchar()函数。getchar()函数执行时将从键盘缓冲区中读取用户的输入,而不管输入的是否可打印字符,所以当输入a<回车>后,键盘缓冲区被输入的实际上是两个字符:'a'和'\\n'。故选项A的说法是正确的。

4.A解析:本题考核模块独立性的评价。评价模块独立性的主要标准有两个;一是模块之间的耦合,它表明两个模块之间互相独立的程度,也可以说是两个或两个以上模块之间关联的紧密程度(所以,本题的正确答案为选项A);二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。

5.D程序定义了一个整型数组a,它包含5个整型元素,分别是1,2,3,4,5。数组名a代表数组的首地址,另外还定义整型指针P,将a传给函数f。在函数f中,首先将指针s向右移动一个整型变量的长度,此时s指向元素2(a[1])。S[1](a[2]);表示元素3,自增6后s[1](a[2])的值为9。表达式“+=7”;表示将*(s--)指向的元素自增7,即S[0](a[1])的值为9,s向左移动一个整型变量的长度,此时s指向元素1(a[0]),最后将s返回并赋给p。经过函数f的调用可知:P指向数组a的第1个元素,a[1]和a[2]值为9。综上,输出结果为:9,9,1,9。本题答案为D选项。

6.B此题考查除法运算,根据先乘除后加减,有括号先算括号的原则,先计算x/y,即l2/8=1,所以z=0.9+1=1.9。但是Z是整型的,转化一下取整除部分,结果Z=1

7.D

8.A在表达式“z=0.9+x/y”中,先计算“3.6-2”,结果为1;再计算“0.9+1”,结果为1.9。因为变量z为整型,所以z的值为1。故本题答案为A选项。

9.A字符型指针变量可以用A选项的赋值方法“Char*s;s=“OlymPiC”;”。C选项的写法“char*s;s={“Olympic”};”是错误的。字符数组可以在定义的时候初始化,如“chars[]={“Olympic”};”或者“chars[]=“Olympic”;”,但是不可以在定义字符数组后对数组名赋值(数组名是常量,代表数组首地址),所以B选项和D选项都是错误的。对于本例,B、D选项中字符数组s的大小至少为8,才能存放下字符串(字符串的末尾都有结束标识‘\\0’),同时,此时S为字符数组的地址,是常量,不能为其赋值。故本题答案为A选项。

10.A解析:本题考查数据库系统的基本概念和知识。数据的逻辑结构,是数据间关系的描述,它只抽象地反映数据元素之间的逻辑关系,而不管其在计算机中的存储方式。数据的存储结构,又叫物理结构,是逻辑结构在计算机存储器里的实现。这两者之间没有必然的联系。因此,选项A的说法是错误的。

数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项B的说法是正确的。

数据库设计是在数据库管理系统的支持下,按照应用的要求,设计一个结构合理、使用方便、效率较高的数据库及其应用系统。数据库设计包含两方面的内容:一是结构设计,也就是设计数据库框架或数据库结构;二是行为设计,即设计基于数据库的各类应用程序、事务等。因此,选项C的说法是错误的。

数据库系统除了数据库管理软件之外,还必须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件的支持。因此,选项D的说法是正确的。因此,本题的正确答案是选项A。

11.D解析:文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在3个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。注意:文件系统和数据库系统各自的特点,人工管理阶段及数据库系统三代的特点。

12.D解析:*p间接引用指针指向的变量,因此“(*p)=&a”不对。scanf()的输入变量必须为地址,因此C是错误的。

13.A

14.C

15.A解析:本题考查了函数的递归调用。在f函数中,当m=7时,程序执行“f(--n,&r1);”语句,递归调用f(6,&r1),程序执行“r1=n/3;”语句,即r1=\u30006/3=2,然后执行“*r=r1;”语句,所以输出结果为2。

16.B

17.C解析:解答本题,首先要明白在对指针进行加、减运算的时候,数字“1”不是十进制的数“1”,而是指'1'个存储单元长度,而1个存储单元长度占多少存储空间,应该视具体情况而定。如果基本类型是int型,移动1个存储单元的长度就是位移2个字节,如果基本类型是float型,移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址:300H+(13*上标)4)H=352H。

18.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

19.B

20.D

21.5432154321解析:在while循环中,d=n%10;语句每次求得的结果是n个位上的数值,例如12345÷10所得的余数就是个位上的5。接下来输出得到的个位数字d,然后执行n/=10;语句,该语句等价于n=n/10;。在C语言中,如果/运算的两个运算分量都是整数,那所得的结果也截尾取整,所以12345/10=1234,即n-=n/10;语句的作用是让n截去个位上的数字。由此可知,随着while循环的继续,n依次为12345、1234、123、12、1,而每次输出n的个位数字将为5、4、3、2、1。故本题应填543210。

22.3131解析:设队列容量为m,如果:rear>front,则队列中元素个数为rear-front;如果rear<front,则队列中元素个数为m+(rear-front)。本题rear<front,则m=32+(2-3)=31。

23.00解析:while循环的条件为即当*n非零时执行循环,(*n)一是先使用*n的值再对*n减1,结束while循环后*n的值为-1。++(*n)是先对*n加1再使用*n的值,-1+1=0,输出*n的值即输出0。

24.464,6解析:指针p指向数组s的首地址。*(p+3)是取p后3位地址单元中的值即4,*(p+5)是取p后5位地址单元中的值即6。这里p+3或p+5并未改变p的值,p始终指向数组s的首地址。

25.软件开发

26.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。

27.n/base或n/16c[i]n/base或n/16\r\nc[i]解析:字符串的综合运用。

28.1515解析:程序通过递归调用实现求数组aa各元素之和,即a[4]+a[3]+a[2]+a[1]+a[0]=15。

29.33解析:本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3。

30.rowa[row][colum]row\r\na[row][colum]解析:指针变量作为函数参数及二维数组的一个典型算法——求最大值及其下标。通过对题意的分析,在select()函数中,变量row的作用是用来记录最大元素的行下标,colum的作用是用来记录最大元素的列下标。程序中通过一个循环求得数组元素中最大值的行列下标,分别存放在变量row和colum中,根据题意,应该把行下标赋值给形参指针变量n指向的变量,把最大值a[row][colum]作为函数值返回。

31.线性结构线性结构解析:数据的逻辑结构是指数据元素之间的逻辑关系,分为线性结构和非线性结构。常见的线性结构有线性表、栈和队列等,常见的非线性结构有树、二叉树等。

32.静态分析静态分析解析:程序测试分为静态分析和动态测试。其中,静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

33.3123,1,2解析:分析程序,第一个if句,a=1,b=2,控制条件a<b成立,则交换a、b的值,此时a=2,b=1。第二个if语句,a=2,c=3,控制条件a<c成立,则交换a、c的值,此时a=3,c=2。

34.1010解析:整型指针最初被赋的值是数组arr的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为100。

35.x=2y=1

36.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。

37.HellHell解析:该函数有3个参数,第三个参数是文件指针指向要读取数据的文件,第二个参数是一个整数(假设为n),表示从文件中读取n-1个字符并在其后加一个'\\0',第一个参数为存放读取的字符串的内存区的起始地址,读取的数据保存在其中。可见本题的输出结果为Hell。

38.软件工具软件工具

39.*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]*t或t[0]\r\n*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]解析:函数sstrcmp()有两个字符型指针变量,用来指向两个字符串。比较两个字符串的大小方法是:从第一个字符开始依次向后比较,若对应的字符相等则接着比较下一个字符,一直到两个字符串中对应字符不等,或者有一个为\\0,此时字符的ASCII码大的字符串就大。故循环条件是*s和*t不为\\0,且*s和*t相同,第一处应填“*t”或其他等价形式。根据题意可知第二处应填*s-*t或其等价形式。

40.从定义到本源文件结束从定义到本源文件结束解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。

41.C解析:strcpy(s1,s2)函数的功能是将字符串s2复制到字符串s1中(注意:要保证s1存储区能容纳下s2字符串)。

42.C解析:在C语言中,对于不同类型的数据用不同的格式字符,其中,“%d”是按整型数据的实际长度输出,“%md”中,m为指定的输出字段的宽度,如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。注意:格式输入函数scanf的使用。

43.D解析:在这个表达式中,优先级最高的是(int)a,也就是对5.5取整,结果是5,其次是b/b,即2.5/2.5,结果是1.000000,最后相加结果为6.000000(表达式的最终结果为实型),所以4个选项中D正确。

44.B解析:本题考查函数调用时变量的作用域。形参是局部变量,函数调用完就失去意义了,所以在同一个C程序文件中,不同的函数体中可以使用名字相同的局部变量。注意:在函数之外定义的变量称为外部变量,外部变量是全局变量,全局变量可以为本文件中其他函数所共用。它的有效范围为:从定义变量的位置开始到本源文件结束.

45.C解析:语句s+=2;使指针指向字符'c',此时s中保存的便是字符'c'的地址。

46.A解析:一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本身。递归实现的是:当过程每一次执行后,都能返回到最近一次调用它的过程中。这样各调用点之间形成一种后进先出关系,而栈结构正适合来存储这些调用点。

47.D解析:在C语言的所有运算符中,逗号运算符的优先级最低;C语言中的字母区分大小写,所以APH和aph是两个不同的变量;赋值表达式a=b表示将b的值赋给a,而b本身的值保持不变;当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数和整型数值等,选项D)错。

48.B解析:switch语句只接受int型变量,如果不是则隐式转换为int,由于C语言中float到int的转换是截尾取整,故在switch中从case1:标号处开始执行,首先输出4个1。此时又因为case2:之前并没有break;之类的跳转语句,所以case2:标号处的语句也被执行,输出4个3。最后以默认的浮点数格式输出变量a,变量a在switch语句中并未被改变,故最后输出为1.900000,所以应该选择B。

49.B解析:本题的关键是两个加数分别能被13和11整除。当k%11的值为0时,则退出循环,将执行j=k/11;语句,输出结果,所以该表达式合理的条件是k%11。

50.C解析:二分法查找是一种线性查找方法,其基本方法是:首先要用要查找的关键码与线性表中间位置结点的关键码值进行比较,这个中间结点把线性表分为两个子表,比较相等则查找完毕,不等则根据查找结果确定下一步的查找应该在哪一个子表中进行,如此下去,直到找到满足条件的结点:或者确定表中没有这样的结点。用二分法查找关键码值11的顺序如下所示,其中[]内为本次栓索的子表,()内为该子表的中间结果。从图中可以看出,经四次查找后,确定表中没有这样的结点。因此本题正确答案为选项C(4)。

第一次:[3,6,8,10,12,(15),16,18,21,25,30]

第二次:[3,6,(8),10,12],15,16,18,21,25,30

第三次:[3,6,8,[(10),(12)],15,16,18,21,25,30]

第四次:[3,6,8,10,[(12)],(15),16,18,21,25,30]查找失败。

51.B解析:软件工程鼓励研制和采用各种先进的软件开发方法、工具和环境。工具和环境的使用又进一步提高了软件的开发效率、维护效率和软件质量。

52.D

53.B解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个,或者被查元素根本不性表中,则为了查找这个元素需要与线性表中所有元素进行比较,这是顺序查找最坏的情况。

54.B解析:C语言中字符串是以'\\O'字符结束的,且strlen()函数计算的是'\\O'字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。

55.A解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护3个阶段。

56.C解析:数据块输入/输出函数的调用形式为:fread(buffer,size,count,fp)。fread函数参数说明:“buffer”是一个指引,对fread来说,它是读入数据的存放地址;“size”是要读写的字节数;“count”是要进行读写多少个size字节的数据项;“fp”是指文件型指针。

57.B

58.A解析:本题int型占2个字节,即16位,unsignedint所能表示的数据范围是0~(2(上标)16-1),即0~65535。

59.B解析:关系数据库逻辑设计的主要工作是将\ue008E-R\ue009图转换成指定RDBMS中的关系模式。首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。

60.D解析:由于20000+20000、4000+10及30000+10000都是整型表达式,故运算的结果仍然是整型,表达式运算的结果超出了整型数据的范围,不正确。而D是长整型运算,不会超出长整型的范周。

61.A

62.D解析:C语言中只有字符串常量而没有字符串变量,故选项A不正确:字符串比较大小是以第1个不相同字符的大小为标准的,跟长度没有关系,故选项B不正确;字符串比较大小除了使用库函数strcn3()以外,就只能靠自己写代码来实现了,而不能通过关系运算符来比较大小。因为字符串在表达式中相当于const\u3000char*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。所以选项C也不正确。空串的长度为0,而以空格打头的字符串的长度至少为\u30001,故选项D正确,本题应该选择D。

63.C

\n本题考查函数的调用及参数传递,当执行函数point时,刚开始指针P指向“a”,经过+3,指针p指向“f”,所以最后的输出结果是f。

\n

64.D解析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软什开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段.软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。

65.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b=00000011,转化为十进制后为3,b=b^a=00000010-00000011=00000001,即1。

66.A(x}1000+0.5)表示x移动3位小数,细0.5,也就是小数第4位加5,若这位大于等于5,则进1到个整。因为“5.16894}10005168.94+0.575169.44”所以(int)(x$1000+0.5)强制转换为整型结果为5169。(5169/1000.0)5.169,由于1000.0结果自动转换为浮点数所以prinff(“%lf\n”,5.169)结果是5.16900。故答案为A选项

67.BM<=N和N<=P是逻辑与的关系,应使用运算符&&。

68.D数据库设计目前一般采用生命周期法,即将整个数据库应用系统的开发分解成目标独立的若干阶段。它们是需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、编码阶段、测试阶段、运行阶段和进一步修改阶段。数据库设计中采用前四个阶段,并重点以数据结构与模型为设计主线。

69.Cif-else语句的嵌套,a=2,b=3,a<b,不满足条件a>b,a==b,所以执行语句c=-1;

70.D\r\n

71.D解析:面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为消息。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。

72.B

73.B本题的考查点是结构体变量的定义。定义一个结构体类型的变量,可采用三种方法:

温馨提示

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

评论

0/150

提交评论