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.在下列定义语句中,编译时会出现编译错误的是()。

A.chara=‘\x2d’;B.chara=‘\n’;C.chara=‘a’;D.chara=“aa”;

2.设变量已正确定义,则以下能正确计算f=n!的程序是()。A.f=0:for(i=1;i<=n;i++)f*=i:

B.F=1:for(i=1;i<2n;i++)f*=i:

C.f=1:for(i=n;i>1;i++)f*=i:

D.f=1;for(i=n;i>=2;i--)f*=i:

3.若用一个大小为6的数值来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()。

A.1和5B.2和4C.4和2D.5和1

4.设有以下程序段:structMP3{charname[20];charcolor;floatprice;}std,*ptr;ptr=&std:若要引用结构体变量std中的color成员,写法错误的是()。A.std.colorB.ptr->colorC.std->colorD.(*ptr)color

5.在关系数据库中,用来表示实体间联系的是()。

A.网状结构B.树状结构C.属性D.二维表

6.下面程序的运行结果是______。#include<stdio.h>#include<string.h>fun(char*w,intn){chart,*s1,*s2;s1=w;s2=w+n-1;while(s1<s2){t=*s1++;*s1=*s2--;*s2=t;}}main(){char*p;p="1234567";fun(p,strlen(p));puts(p);}

A.7654321B.1714171C.1711717D.7177171

7.有以下程序(strcat函数用于连接两个字符串):#include<stdio.h>#include<string.h>main(){chara[20]=“ABCD\0EFG\0”,b[]=“UK”;strcat(a,b);printf(“%s\n”,a);}程序的运行结果是()。

A.UKB.ABCDE\0FG\0UKC.ABCDUKD.EFGUK

8.若输入“abcdef”、“abdef”,以下程序的输出结果为()。#include<stdio.h>#lnclude<string.h>main(){intn;chars1[20],s2[20],p1,*p2;scanf("%s",s1);scanf("%s",s2);P1=s1;p2=s2;n=strcmp(p1,p2);printf("%d\n",n);}

A.-1B.0C.abcdefD.abdef

9.下列写法正确的是()。

A.main(){inti=3,j;j=5}

B.main(){inti=3;

C.main()

D.main(){;}

10.有以下程序:#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf(“%d\n”,fun(7));}程序的运行结果是()。A.2B.3C.7D.0

11.有以下程序

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;

*q=*(p+5);

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

}

程序运行后的输出结果是A.运行后报错B.66C.611D.510

12.下面程序的输出结果是#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}

A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC

13.合法的main函数命令参数形式是()。

A.main(inta,char*c[])

B.main(intarc,char**arv)

C.main(intargc,char*argv)

D.main(intargv,char*argc[])

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

#include<stdio.h>

intb=2;

intfunc(int*A)

{b+=*a;retumb;}

main()

{inta=1,t=2;

t+=func(&A);

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

}

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

15.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为()。

A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)

16.下面是有关C语言字符数组的描述,其中错误的是()。

A.不可以用赋值语句给字符数组名赋字符串

B.可以用输入语句把字符串整体输入给字符数组

C.字符数组中的内容不一定是字符串

D.字符数组只能存放字符串

17.以下定义语句中正确的是()。

A.inta=b=0;

B.charA=65+1,b=‘b’;

C.floata=1,*b=&a,*c=&b;

D.doublea=0.0;b=1.1;

18.

19.下列变量声明合法的是()。A.shorta=1.4e-1;

B.doubleb=1+3e2.8;

C.longdo=0xfdaL;

D.float2aaa=1e-3;

20.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

二、2.填空题(20题)21.设有如下定义

#defineMYSWAP(z,x,y){z=x;x=y;y=z;}

floata=5,b=16,c;

MYSWAP(______,a,b);

22.设有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

执行上面的程序段后,*(ptr+5)的值为______。

23.下面程序的输出是【】。

main()

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

char*aa[]={"AA"m,"BB","CC:,"DD"};

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

}

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

25.某二义树中度为2的结点有18个,则该二叉树中有______个叶子结点。

26.请选出以下程序的输出结果#include<stdio.h>main(){inta[]={1,2,3,4},i;intx=0;for(i=0;i<4;i++){sub(a,x);Printf("%d",x);}printf("\n");}sub(S,y)int*s,y;{staticintt=3;y=s[t];t--;}

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

#include<stdio.h>

main()

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

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

28.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。

29.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。

30.下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在数组中返回,二进制数的最低位放在下标为0的元素中,其他依此类推。请填空。

Fun(intx,intb[])

{intk=0,r;

do

{r=x%2;

()=r;

x/=2;

}while(x);

}

31.在面向对象方法中,类之间共享属性和方法的机制称为______。

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

#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=%5ld\n",k);}

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

inta=1234;

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

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

main()

{ints,i;

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

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

}

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

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

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

}

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

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};

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

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

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

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

printf("\n");

}

}

37.通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【】。

38.若按功能划分,软件测试的方法通常分为______测试方法和黑盒测试方法。

39.若有下列定义和语句:

char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(s1,s2)));

则输出结果为______。

40.若有定义inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a[1][1]得到的初值是______。

三、1.选择题(20题)41.下列程序段中,不能正确赋值的是()。

A.char*p,ch;p=&ch;scanf("%c",&p);

B.char*p;p=(char*)malloc(1);scabf("%c",p);

C.char*p;*p=getchar();

D.char*p,ch;p=&ch;*p=getchar();

42.有以下程序#defineN20fun(inta[],intn,:Intm){inti,i;for(i=m;i>n;i--)a[i+1);a[i];}main(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};fuu(a,2,9);for(i=0;i<5;i++)printf("%d",a[i]);}程序运行后的输出结果是

A.10234B.12344C.12334D.12234

43.以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序;voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1,j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)print("%d,",aa[i]);printf('\n");}程序运行后的输出结果是()。

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

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

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

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

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

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

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

C.(a<=b<=C)

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

45.下列不正确的转义字符是______。

A.'\\',B.'\'C.'074'D.'\0'

46.对关系S和只进行集合运算,结果中既包含S中的所有元组也包含只中的所有元组,这样的集合运算称为()。

A.并运算B.交运算C.差运算D.积运算

47.以下对结构体类型变量的定义中,不正确的是()

A.typedefstructaa{intn;floatm;}AA;AAtdl;

B.#defineAAstructaaAA{intn;floatm;}tdl;

C.struct{intn;floatm;}aa;structaatdl;

D.struct{intn;floatm,}tdl;

48.在关系模型中,()。

A.为了建立一个关系,首先要构造数据的逻辑关系

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

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

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

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

A.一个算法的空间复杂度大,则其时间复杂度也必定大

B.一个算法的空间复杂度大,则其时间复杂度必定小

C.一个算法的时间复杂度大,则其空间复杂度必定小

D.上述三种说法都不对

50.下列叙述中正确的是A.软件测试的主要目的是发现程序中的错误

B.软件测试的主要目的是确定程序中错误的位置

C.为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作

D.软件测试是证明软件没有错误

51.进行二分法查找,则线形表______。

A.必须以顺序方式存储

B.必须以链接方式存储,且数据元素已按值排好序

C.必须以链接方式存储

D.必须以顺序方式存储,且数据元素已按值排好序

52.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()

A.控制流B.加工C.数据存储D.源和潭

53.设有:inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值是

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

54.指出下面不了确的赋值语句()。

A.a++;B.a==b;C.a+=b;D.a=1,b=1;

55.程序的编制与算法的设计在效率上的关系是:()

A.相等B.优于C.劣于D.不一定

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

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

57.以下程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序。voidf(intb[],intn,intflag){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(flag?b[!]>[j]:b[i]<b[j]){t=b[i];b[i]=b[j];b[j]=t;}}main(){inta[10]={5,4,3,2,1,6,7,8,9,10},i;f(&a[2],5,0);f(a,5,1),for(i=0;i<10;i++)printf("%d,",a[i]);}程序运行后输出结果是()。

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

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

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

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

58.有以下程序:#include<stdio.h>main(){union{charch[2];intd;}s;s.d=0x4321;printf("%x,%x\n",s.ch[0],s.ch[1]);}在16位编译系统上,程序执行后的输出结果是()。

A.21,43B.43,21C.43,00D.21,00

59.有以下程序#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen("d3.dat","w+b");fwrite(a,sizeof(int),6,fp);fseek(fp,sizeof(int),3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/fread(a,sizeof(int),3,fp);fclose(fp);for(i=0

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

60.下面的程序片段

y=-1;

if(x!=0)

if(x>0)y=1;elsey=0;

所表示的数学函数关系是_______。

A.

B.

C.

D.

四、选择题(20题)61.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。

A.详细设计B.需求分析C.总体设计D.编程调试

62.有以下程序:

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

A.24B.720C.120D.6

63.(7)在软件开发中,下面任务不属于设计阶段的是()

A.数据结构设计

B.给出系统模块结构

C.定义模块算法

D.定义需求并建立系统模型

64.下列选项中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

65.在数据库设计中,用E-R图来描述信息结构,但不涉及信息在计算机中的表示,它是数据库设计的()阶段。

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

66.下面叙述中,正确的是

A.C语言编译时不检查语法B.C语言的子程序有过程和函数两种

C.C语言的函数可以嵌套定义D.C语言的函数可以嵌套调用

67.有以下程序:

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

A.12B.14C.1234D.123456

68.有以下程序,其中%u表示按无符号整数输出:

main

{

unsignedintx=0xFFFF;/*x的初值为十六进制数*/

printf("%u\n",x);

}

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

A.-1B.65535C.32767D.0xFFFF

69.程序调试的任务是()。

A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误

70.

71.某二叉树共有7个结点,其中叶子结点只有l个,则该二叉树的深度为(假设根结点在第1层)()。

A.3B.4C.6D.7

72.

73.栈和队列的共同点是()。

A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点

74.读取二进制文件的函数调用形式为:fread(buffersize,count,fp);,其中buffer代表的是()。

A.一个文件指针,指向待读取的文件

B.一个整型变量,代表待读取的数据的字节数

C.一个内存块的首地址,代表读人数据存放的地址

D.一个内存块的字节数

75.有以下程序:

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

A.0B.3C.7D.8

76.数据库、数据库系统和数据库管理系统之间的关系是()。

A.数据库包括数据库系统和数据库管理系统

B.数据库系统包括数据库和数据库管理系统

C.数据库管理系统包括数据库和数据库系统

D.三者没有明显的包含关系

77.

78.有以下程序:

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

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

79.若有说明:inta[3][4]={0};,则下面正确的叙述是

A.只初始化了第一个元素,即a[0][0]可得到初值0

B.此初始化语句不正确

C.数组a中各元素都可得到初值,但其值不一定为0

D.数组a中每个元素均可得到初值0

80.

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:将两个两位数的正整数num1,num2合并形成一个整数放在num中。合并的方式是:将num1数的十位和个位数依次放在num数的十位和千位上,num2数的十位和个位数依次放在c数的百位和个位上。

例如,当num1=64,num2=18时,调用到该函数后,num=4168。

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

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

试题程序:

参考答案

1.DD选项中将字符串常量“aa”赋给字符变量a是错误的。故本题答案为D选项。

2.D由i"11的数字定义可知n!=n*(n-1)*(n-2)*…*1。在选项A中,由于f的初值为0,在for循环语句中,f依次乘以1,2,3,…,n,最后计算得到f=n!一0,所以选项A不正确。在选项B中,f的初值为1,在for循环语句中,f依次乘以1,2,3,…,(n-1),最后计算得到f=(n-1)!,所以选项B不正确。在选项C中,f的初值为1,在for循环语句中,f依次乘以n,n+1,n+2,……,所以选项c不正确。在选项D中,f的初值为l,在for循环语句中,f依次乘以n,n-1,n-2,…,2,最后计算得到f=n!,所以选项D正确。

3.B

4.C【答案】C

【知识点】结构体成员变量的引用

【解析】结构体变量包括一个或多个成员变量,引用其成员变量的语法格式如下:

结构体变量.成员变量。通过结构体指针变量获得其结构体变量的成员变量的一般形式为:(*结构体指针变量).成员变量,也可以使用:结构体指针变量->成员变量来引用成员变量。

5.D单一的数据结构——关系,现实世界的实体以及实体间的各种联系均用关系来表示。数据的逻辑结构——二维表,从用户角度,关系模型中数据的逻辑结构是一张二维表。但是关系模型的这种简单的数据结构能够表达丰富的语义,描述出现实世界的实体以及实体间的各种关系。

6.C

7.C字符数组a中包含两个‘\\0’。遇到第1个‘\\0’时就表示字符串a结束。字符串处理函数strcat(字符数组a,字符数组b),功能是连接两个字符串,把字符串b连接到字符串a的后面,结果放在字符数组a中。连接时将字符串a后的‘\\0’取消,只在新串最后保留一个‘\\0’。本题相当于将“ABCD”和“IJK”连接。故本题答案为C选项。

8.A

9.D解析:本题考查语句的基本构成。选项A)中j=5后面少了一个分号:选项B)中少了“}”;选项C)不是一个完整的函数定义格式,一个完整的函数定义格式还包括一对花括号:选项D)正确,是一个空语句。

10.A因为fun(intx)是一个递归函数。在主函数中fun(7)经过3次递归调用。其过程可以描述为fun(7)=7-fun(5)=7-(5*fun(3))=7*(5*(3*fun(1)))=7-(5-(3-3))=7-5=2。最后的输出结果为2。故本题答案为A选项。

11.C解析:本题中第一行代码对指针P进行了初始化,其指向数组a的第6个元素,在其后的操作中p的值也没有改变过,所以最后输出*p=*\u3000\u3000(p+0)\u3000\u3000=a\u3000[5]\u3000=6,而第二行代码中对q指向的值进行赋值,等价于*q=a[10]=11,所以输出结果*q为11。

12.C解析:本题考查的重点是拷贝字符串——使用strcpy()函数,该函数的调用方式是:strcpy(字符数组,字符串)其中“字符串”可以是字符串常量,也可以是字符数组。函数的功能是:将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。

使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志‘\\0’一起复制。②不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理。

另外,本题还考查连接字符串的strcat()函数,其调用方式是:strcat(字符数组,字符串)

功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。

使用该函数时注意:①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。③连接前两个字符串都有结束标志‘\\0’,连接后“字符数组”中存储的字符串的结束标志‘\\0’被舍弃,只在目标串的最后保留一个‘\\0’。

13.C在C语言中,main函数也可以有参数,例如,main(intar90,char*argv),argc是指字符串的指针数组,而其他几项表达不正确。

14.B解析:本题考查函数调用时的参数传递。在执行函数func时,由于全局定义了一个变量b,所以在函数体中执行时b=2+1=3,最终t=2+3=5。

15.C

16.D\n用来存放字符量的数组称为字符数组。字符数组也可以是二维或多维数组,对一个字符数组,如果不作初始化赋值,则必须说明数组长度,还可用printf函数和scarlf函数一次性输出/输入一个字符数组中的字符串,而不必使用循环语句逐个地输入/输出每个字符。通常用一个字符数组来存放一个字符串。所以D选项不正确。

\n

17.BA选项中的变量b没有定义,不能直接给变量a赋值。C选项中,*b、*c表示的是一个实型变量的地址,不能将指针型变量b的地址赋值给指针型变量c。D选项中,“a=0.0”后面应该为逗号,不能是分号。故本题答案为B选项。

18.D

19.A本题需了解3个知识点:①标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线;②do是C语言的一个关键字,不能再用做变量名和函数名;③c语言规定指数形式的实型数量e或E后面的指数必须是整数。

20.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。

21.CC解析:本题关键在考生是不是了解宏的基本运用,再使用宏的时候明显少了一个实参。在定义宏的时候变量z是用来做中间变量的,题目中缺的变量就是一个中间变量C。

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

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

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

25.1919解析:二叉树具有如下性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。根据题意,度为2的节点为18个,那么,叶子结点就应当是19个。

26.C

27.a=2b=1a=2,b=1解析:本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2分支,最后a和b的值分别为2和1。

28.完整性控制完整性控制

29.可重用性继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。

30.b[k++]b[k++]解析:本题的考查点是do-while语句。形参x默认为十进制,要想将一个十进制的数转换成二进制,可以使用整除求余法,题中的程序段也表明了将使用这种方法,将一个十进制的数转换成二进制要用这个十进制数不断的整除2,将每次的余数记录下来,直至无法再除,此时,整除得到的第一个元素即为二进制数的最低位,其余依次类推,所以在程序段中的横线处,应当填写“b[k++]”。

31.继承继承解析:在面向对象的程序设计方法中,某些属性和方法是可以共享的,由于类从父类中继承而来,这样提高了软件的可重用性。

32.k=5k=5解析:本题主要考查了函数的递归调用方法。g=0或\ue008g=1\ue009或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。

33.12341234解析:在%与格式符之间插入一个整型数来指定输出宽度,当指定宽度小于输出数的实际宽度时,则按实际宽度输出。

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

35.22解析:本题变量m既是外部变量(值是13),又是fun函数的局部变量(值为3)。函数fun(x*y-m)的值为7*5-3=32,在main函数中,fun(a,b)/m中的m应取外部变量的值13,因此输出2。

36.123056009123\r\n056\r\n009解析:数组a中元素的初值为:a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[12][0]=7、a[2][1]=8、a[2][2]=9。执行第1个for循环后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2个for循环的功能是将数组元素按照3行3列的格式输出。

37.软件生命周期软件生命周期解析:软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。

38.白盒白盒解析:软件测试的方法分为白盒测试方法和黑盒测试方法.

39.44解析:strcpy(s1,s2)函数的作用是将字符串s2中的内容拷贝到字符串s1中的内容覆盖。strlen()函数是求字符串的长度。本题实际上是要求s2字符串的长度,即是4。

40.00解析:二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[0]、a[1]、a[2]、a[3],这4个一维数组都有4个元素,a[0]的元素为a[0][0]、a[0][1]、a[0][2]、a[0][3]。

41.C解析:地址变量p指向的存储空间一定要明确,否则可能影响程序的正确性。

42.C解析:数组名可以作为实参传送,由于数组名本身是一个地址值,因此,在函数中对形参数组元素的修改也会相应改变实参数组的元素.在本题中,函数fun()通过一个for循环,将形参数组a中下标为n到m之间的元素向后移动一位,a[n]元素的值不变。所以主函数调用fun(a,2,9);之后,数组a的内容变成{1,2,3,3,4,5,5,6,7,8,9,10},最后通过for循环输出数组前5个元素为12334。选项C符合题意。

43.C解析:本题中首先定义一个长度为10的一个整型数组,并初始化为“1,2,3,4,5,6,7,8,9,10”,然后调用排序函数sort(),通过分析不难看出,sort()函数是对具有n个元素的a数组进行从大到小排序。由于函数的第一个参数是数组名,其对应的实参可以是函数名或地址。本题在调用该函数时,实参是&aa[3]的地址,即把aa[3]的地址传给了行参数组名a,函数也就是对aa[3]开始的5个元素进行从大到小的摔序,aa[0]、aa[1]、aa[2]、aa[8]、aa[9]并没有变化。Sort()执行完毕后,接着执行后面的for语句输出数组aa中各个元素的值,由于函数sort()只是对aa[3]开始的5个元素进行从大到小的排序,aa[0]、aa[1]、aa[2]、aa[8]、aa[9]并没有变化,所以输出为“1,2,3,8,7,6,5,4,9,10”。所以4个选项中C正确。

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

45.C

46.A解析:关系的并运算是指,由结构相同的两个关系合并,形成一个新的关系,其中包含两个关系中的所有元组。

47.C解析:定义结构体类型的变量有几种的方法如下:

①定义结构体类型的同时,定义结构体类型的变量,如下面的定义中在定义结构体类型aa的同时定义了该类型的变量tdl。上述B)项中将宏名AA用宏体structaa替换进去后,与该定义形式一样,因此是正确的。这一定义形式中,结构体类型名明是可以省略的,因此,D)项也是正确的。

structaa

{...

}tdl;

②先定义结构体类型,然后再定义结构体类型的变量,形式如下:

structaa

{

};

structaatdl;

这种定义形式也可演变为,先用类型定义语句typedef将该结构体类型定义成一个类型名AA,然后直接用该类型名AA去定义一个变量(这时不再需要使用关键字struct了)。这就是A)项的形式。

48.C解析:在关系模型中,不需要事先构造数据的逻辑关系,只要将数据按照一定的关系存入计算机,也就是建立关系,选项A错误。对于表示关系的二维表,其最基本的要求是,表中元组的每一个分量必须是不可分的数据项,即不允许表中再有表,选项B和D错误。本题的正确答案是C。

49.D解析:时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。人们都希望选择一个既省存储空间、又省执行时间的算法。然而,有时为了加快算法的运行速度,不得不增加空间开销;有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。因此,选项A、B、C的说法都是错误的。故本题的正确答案是D。

50.A解析:本题考查软件工程中测试的目的和方法。仅就软件测试而言,它的目的是发现软件的中的错误,但是,发现错误并不是最终目的,最终目的是通过测试发现错误之后还必须诊断并改正错误,这就是调试的目的。

由于测试的目标是暴露程序中的错误,从心理学角度看,由程序的编写者自己进行测试是不恰当的。因此,在软件测试阶段通常由其他人员组成测试小组来完成测试工作。因此,经过上述分析可知选项A的说法是正确的,而选项B、C、D的说法是错误的。

51.D

52.A解析:数据流图包括4个方面,即加工(转换)(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体)。不包括选项中的控制流。

53.B解析:本题考查逻辑与运算的运算规则。其规则是:当运算符前后两个条件表达式都满足时,其最终结果才为真。当发现第一个表达式的值为假后,计算机将不再执行后面表达式的运算。

本题中,由于前一个表达式的值为“假”,所以,后面的表达式不再进行运算,因而n的值保持不变,仍为2。

54.B解析:选项A中a++相当于a+1,是赋值语句;选项C和选项D也是赋值语句。只有选项B不是,因为选项B中“==”符号是等于的意思,并不是赋值运算符,所以,4个选项中B符合题意。

55.C

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

57.B解析:题目中先后两次调用了函数f()。第1次,使用参数“&a[2],5,0”表示从数组a下标为2的元素开始,对其后的5个元素进行由大到小排序。所以排序结果是{5,4,7,6,3,2,1,8,9,10)。第2次,使用参数“a,5,1”表示从数组a的首元素开始,对其后5个元素进行由小到大排序。所以排序结果是{3,4,5,6,7,2,1,8,9,10)。故本题应该选择B。

58.A解析:int型变量和字符数组ch共用两个字节的存储单元,通常ch[0]位于低字节,ch[1]位于高字节,所以s.ch[0]=21,s.c[1]=43。

59.A解析:首先利用fwrite函数将数组a中的数据写到文件中,接着fseek函数的功能是读文件的位置,指针从文件头向后移动3个int型数据,这时文件位置指针指向的是文件中的第4个int数据“4”,然后fread函数将文件fp中的后3个数据4,5,6读到数组a中,这样就覆盖了数组中原来的前3项数据。最后数组中的数据就成了{4,5,6,4,5,6}。

60.C解析:本题的考查点是根据程序写出数学函数关系。题中的两个判断语句实际上指出了y取值的条件,即是当x大于零时y取1;当x小于零时y取0;当x等于零时y值不变,为-1。

61.C解析:软件系统结构的总体设计包括:基于功能层次结构建立系统、按功能划分成模块的层次结构、确定每个模块的功能、建立与已确定的软件需求的对应关系、确定模块间的调用关系和模块间的接口、评估模块划分的质量等方面。详细设计的任务是:在使用程序设计语言编制程序以前,对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求,通常包括:功能需求、性能需求、环境需求、可靠性需求、安全保密要求、用户界面需求、资源使用需求、成本消耗需求、开发进度需求等。编程调试的任务是诊断和改正程序中潜在的错误。综上所述。软件功能分解只能发生在总体设计阶段。

62.C函数hm()求数组指定返回的元素的积。函数fun(a,3)求的是数组a[0]~a[3]的积。因此结果为2t3女4十5=120,故答案为C选项。

63.D数据结构设计、给出系统模块结构以及定义模块算法都属于设计阶段,而定义需求并建立系统模型属于分析阶段。

64.B水平制表符中,'\t'表示的是横向跳若干格;选项B中,'\039'错误,'\039'是八进制形式表的字符,最大数为7,但其中出现'9',','是字符逗号;选项D中,'\n'表示的是换行。

65.B本题考查数据库设计不同阶段的任务。

数据库设计过程可分为需求分析、概念设计、逻辑设计、物理设计四个阶段。其中用E-R图来描述信息结构,但不涉及信息在计算机中的表示是概念设计阶段。

66.D本题主要考查我们对C语言一些基础知识的掌握情况。下面分别分析本题的四个选项。

C语言程序在编译时的主要任务就是检查程序的语法是否符合规定,因此选项A的描述不正确。

一个程序一般都是从主函数开始运行,之后主程序调用的其他程序段叫子程序。由于C语言的程序段都是以函数形式存在的,所以除了主程序main()函数以外,其他程序中出现的子程序都是函数

温馨提示

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

评论

0/150

提交评论