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

下载本文档

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

文档简介

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

一、单选题(20题)1.函数调用:strcat(strcpy(str1,str2),str3)的功能是______。

A.将串str1复制到串str2中后再连接到串str3之后

B.将串str1连接到串str2之后再复制到串str3之后

C.将串str2复制到串str1中后再将串sir3连接到串str1之后

D.将串str2连接到串str1之后再将串str1复制到串str3中

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

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

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

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

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

3.若以“a+”方式打开一个已存在的文件,以下叙述正确的是()。

A.文件打开时,原有文件内容不被删除,可以进行添加和读操作

B.文件打开时,原有文件内容不被删除,位置指针移到文件开头,可以进行重写和读操作

C.文件打开时,原有文件内容不被删除,位置指针移到文件中间,可以进行重写和读操作

D.文件打开时,原有文件内容被删除,只可进行写操作

4.有以下程序:main(){intp[7]={11,13,14,15,16,17,18),i=0,k=0;while(i<7&&p[i]%2){k=k+p[i];i++;}printf("%d\n",k)}执行后的输出结果是______。

A.58B.56C.45D.24

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

6.设有二维数组A7×8,每个数据元素占8个字节存储单元,顺序存放,A第一个元素A0,0的存储地址为1000,按列优先存放时,元素A5,4的地址为()。

A.1256B.1264C.1272D.1280

7.有下列程序:#include<stdio.h>voidfun(char*a,char*B){while(*a=='*')a++;while(*b=*A){b++;a++;}}main(){char*s="*****a*b****",t[80];fun(s,t);puts(t);程序的运行结果是()。A.*****a*bB.a*bC.a*b****D.ab

8.设有两个串p和q,求q在p中首次出现的位置的运算称为()。

A.连接B.模式匹配C.求子串D.求串长

9.有以下程序:structst{intx;int*y;}*pt;inta[]={1,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;以下选项中表达式值为11的是()。

A.++p->xB.pt->xC.*pt->yD.(pt++)->x

10.执行下面的程序段后,变量k中的值为()。intk=3,s[2];s[0]=k;k=s[1]*10;

A.不定值B.33C.30D.10

11.有以下程序:#include<stdi0.h>#defineS(x)(x)"x"2main(){intk一5,j=2;Drintf("%printf,",S(k+j));printf("%printf\n",S((k—j)));}程序运行后的输出结果是()。A.98,18B.39,11C.39,18D.98,11

12.广义表((a),a)的表头是()。

A.aB.(a)C.((a))D.()

13.执行下面程序中的输出语句后,输出结果是()。A.65B.20C.15D.10

14.x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是

A.INPUTx、v、z;

B.scanf("%d%d%d",&x,&y,&z);

C.scanf("%d%d%d",x,y,z);

D.read("%d%d%d",&x,&y,&z);

15.若有以下的说明和语句,则在执行for语句后,’(*(pt+1)+2)表示的数组元素是()。intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];

A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]

16.有以下程序段:charstr[4][12]={“aaa”,“bbb”,“ccc”,“ddd”},*p[4];inti;for(i=0;i<4;i++)p[i]=str[i];以下选项中不能正确引用字符串的是()。

A.*p[3]B.p[3]C.str[2]D.*p

17.下列语句中,说法正确的是______。

A.C程序书写格式严格,每行只能写一个语句

B.C程序书写格式严格,每行必须有行号

C.C程序书写格式自由,每行可以写多条语句,但之间必须用逗号隔开

D.C程序书写格式自由,一个语句可以分写在多行

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

A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的

B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

C.顺序存储结构能存储有序表,链式存储结构不能存储有序表

D.链式存储结构比顺序存储结构节省存储空间

19.有以下程序:main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后输出结果是()。

A.77B.88C.810D.1010

20.字符串"alibaba"的二进制哈夫曼编码有多少位()

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

二、2.填空题(20题)21.下面程序的功能是:输出100以内能被4整除且个位数为8的所有整数,请填空。main(){inti,j;for(i=0=();i++){j=i*10+8;if(j%4!=0)continue;printf("%d",j);}}

22.下列程序的功能是将字符串s中所有的字符c删除。请填空。

#include<stdio.h>

main()

{chars[80];

inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(s[i]!='c')

s[j]='\0';

puts(s);

}

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

voidreverse(inta[],intn)

{inti,t;

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

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

24."print("%d\n",strlen("\t\"\023\xABC\n"));”语句的输出结果是______。

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

26.现有两个C程序文件T18.c和myfun.c同在TC系统目录(文件夹)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

当编译连接通过后,运行程序T18时,输入Thank!,则输出结果是【】。

27.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。

structnode

{intinfo;

【】link;};

28.执行下面程序段后,k值是【】。

k=1;n=263;

do

{k*=n%10;n/=10;

}while(n);

29.软件生命周期包括8个阶段。为使各时期的任务更明确,又可以分为以下3个时期:软件定义期、软件开发期、软件维护期。编码和测试属于【】期。

30.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整型数据,成员变量link是指向自身结构体的指针,请将定义补充完整。

structnode

}intinfo;

【】link;

};

31.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

32.数据结构分为逻辑结构与存储结构,线性链表属于【】。

33.度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为______。

34.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。

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

36.下述程序的输出结果是【】。

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

{printf("\n%d",fun(9));}

37.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

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

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

38.设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有【】个元素。

39.有下列程序;

#include<stdio.h>

main()

{charc;

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

}

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

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

三、1.选择题(20题)41.下面程序的文件名为t.exe,在DOS下输入的命令行参数为:ttomeetme<回车>

则程序输出的结果是

#include"stdio.h"

main(argc,argv)

intargc;char*argv[];

{inti;

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

A.3B.4C.2D.以上答案都不正确

42.关系模型允许定义3类数据约束,下列不属于数据约束的是()。

A.实体完整性约束B.参照完整性约束C.属性完整性约束D.用户自定义的完整性约束

43.下列程序的输出结果是()。#include<stdio.h>intfun(intx){intp;if(x==0‖x==1)return3;elsep=x-fun(x-2);returnp;}voidmain(){printf("\n%d",fun(5));}

A.5B.3C.7D.1

44.下列程序的运行结果为()。#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta=2,b=3,c=1,d=3,t;printf("%d\n",(MAX(a+b,c+d))*100);}

A.500B.5C.4D.400

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

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

46.下列叙述中正确的是()。A.用E-R图能够表示实体集之间一对一的联系、一对多的联系、多对多的联系

B.用E-R图只能表示实体集之间一对一的联系

C.用E-R图只能表示实体集之间一对多的联系

D.用E-R图表示的概念数据模型只能转换为关系数据模型

47.下面程序的输出结果是()#include<stdio.h>f(b,n)intb[],n;{inti,r;r=1;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intx,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}

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

48.有以下程序main(){intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};inti,s=0;for(i=0;i<4;i++)s+=aa[i][1];printf("%d\n",s);}程序运行后的输出结果是()

A.11B.19C.13D.20

49.已有定义int(*p)(),指针p可以

A.代表函数的返回值B.指向函数的入口地址C.表示函数的类型D.表示函数返回值的类型

50.设有以下定义:typedefunion{longi;intk[5];charc;}DATE;srtuctdate{intcat;DATEcow;doubledog;}too;DATEmax;则下语句的执行结果是()printf("%d,"sizeof(structdate))+sizeof(max));

A.25B.30C.18D.8

51.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式中正确的是(注:□代表空格字符)

A.10□X□20□Y<回车>

B.10□X20□Y<回车>

C.10□X<回车>20□Y<回车>

D.10X<回车>20Y<回车>

52.以下程序的运行结果是

intk=0;

voidfun(intm)

{m+=k;k+=m;printf("m=%dk=%d",m,k++);}

main()

{inti=4;

fun(i++);

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

}

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

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

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

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

53.以下程序的输出结果是main(){charc='z';printf("%c",c-25);}

A.aB.ZC.z-25D.y

54.以下程序运行后,输出结果是

#definePT5.5

#defineS(x)PT*x*x

#include<stdio.h>

main()

{inta=1,b=2;

printf("%4.1f\n",S(a+b));}

A.49.5B.9.5C.22D.45

55.有以下程序structSTU{charname[10];intnum;intScore;{main(){structStus[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045;537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]=&s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->Score>p[j]->Score){t=p[i];p[i]=p[j];p[i]=t;}printf("%d%d\n",s[1].Score,p[1]->Score);}执行后输出结果是

A.550550B.680680C.580550D.580680

56.模块本身的内聚是模块独立性的重要性度量因素之—。在7类内聚中,具有最强内聚的—项是______。

A.顺序性内聚B.过程性内聚C.逻辑性内聚D.功能性内聚

57.若有以下说明和定义:fun(int*c){}main(){int(*a)()=fun,*b(),w[10],c;……}在做必要的赋值之后,对fun函数的正确调用语句是______。

A.a=a(w);B.(*a)(&c);C.b=*b(w);D.fun(b);

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

A.XZCYABB.XYZABCC.XYABCZD.XYAZBC

59.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]==1;printf("\n%d",x.i);}

A.266B.11C.265D.138

60.下面程序的运行结果是()。#include<stdio.h>main(){staticchara[]="Languagef",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}

A.gaeB.gaC.LanguageD.有语法错

四、选择题(20题)61.成功的测试是指A.A.运行测试实例后未发现错误

B.发现程序的错误

C.证明程序正确

D.软件产生

62.

63.有以下程序:

执行程序时,给变量X输入10,程序的输出结果是()。

A.54B.55C.65D.45

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

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

65.不能把字符串:Hello!赋给数组b的语句是()。

A.charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B.charb[10];b="Hello!";

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

66.下面程序的功能是输出以下形式的金字塔图案。

main()

{

inti,j;

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

{

for(j=1;j<=4-i;j++)

printf("");

for(j=1;j<=______;j++)

printf("*");

printf("\n");

}

}

在下画线处应填入的是

A.iB.2*i-1C.2*i+1D.i+2

67.下述程序的运行结果是()。#includedstdio.h>#includedstrin9.h>main{char*s1="abDuj";char*s2="ABdUG";intt;t=strcmp(s1,s2);printf("%d",t);}A.正数B.负数C.零D.不确定的值

68.

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

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

70.

71.若有定义语句:“intx=10;”,则表达式x-=x+x的值为()。

A.-20B.-l0C.0D.10

72.以下选项中不能用做C程序合法常量的是()。

A.1,234B.‘\123’C.123D.“\x7G”

73.有以下程序程序执行后的输出结果是()。

A.y=一1B.y=oC.y=1D.while构成无限循环

74.若执行以下程序时从键盘上输入9,则输出结果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8

75.

76.

77.若有定义:“inta,b;”,通过语句“scan[("%d;%d".,&a,&b);”,能把整数3赋给变量a,5赋给变量b的输入数据是()。

A.35B.3,5C.3;5D.35

78.(8)数据库系统的核心是()

A.数据模型

B.数据库管理系统

C.软件工具

D.数据库

79.

80.

五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:从低位开始依次取出长整型变量s中奇数位上的数,构成一个新数存放在t中。高位仍在高位,低位仍在低位。

例如,当s中的数为7654321时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

#include<;stdi0.h>;

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,规定输入的字符串中只包含字母和*号。编写函数fun(),其功能是除了字符串前导和尾部的*号外,将字符串中其他的*号全部删除。形参h指向字符串中第一个字母,形参p指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为“****A*BC*DEF*G********”,删除后,字符串中的内容应当是“****ABCDEFG********”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdio.h>#include<conio.h>#include<string.h>voidfun(char*a,char*h,char*p){}main(){chars[8l],*t,*f;printf(“Enterastring:\n”);gets(s);t=f=s;while(*t)t++;t--;while(*t==‘*’)t--;while(*f==‘*’)f++;fun(s,f,t);printf(“Thestringafterdeleted:\n”);puts(s);}

参考答案

1.C解析:题目中所给函数的功能是;先用函数strcpy把参数串str2复制到参数串str1中去,然后用函数strcat把参数串str3连接到经过修改后的参数串str1后,因此选项C正确。

2.B解析:当一个数组中的元素均为指针类型数据时,该数组就称为指针数组。int*p[3]表示此数组是指针类型的,每个数组元素(指针变量)都是指向一个整型的指针变量。

3.AC语言中,文件打开方式“a+”表示打开一个文本文件,从文件开始位置读,在文件尾部添加数据,如果指定的文件不存在,系统将使用调用fopen时指定的文件名创建一个新的文件;如果指定的文件存在,那么文件原有内容将被保存,新的数据追加到原有文件之后。故本题答案为A选项。

4.D解析:程序中while语句的循环条件为i<7&&p[i]%2。当i=0时,条件成立,k=k+p[0]=11;当i=1时,条件仍成立,k=k+p[1]=11+13=24;当i=2时,p[2]%2=0条件不成立,结束while循环,所以k=24。

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

6.A

7.C解析:主函数main()定义了指向字符串的指针和一个字符数组,接着调用fun(s,t)函数,进行实参向形参传递,函数fun()第一个while语句判断*a中的值为“*”时继续扫描,当遇到不是“*”时结束,接着第二个while循环语句,将*a中从“a”开始的后续所有字符都赋予*b,也就是t[80]中的内容为“a*b****”,所以此题的运行结果为选项C)。

8.B

9.A题目中定义了一个结构体数组c并初始化,指针pt指向c的第1个元素。则“++pt->x”为11,“pt->x”为10,“*pt->y”为1,“(pt++)->x”为20。故本题答案为A选项。

10.A解析:定义数组时,没有对s[1]进行初始化,因此s[1]的值不确定,所以k=s[1]*10的值也不确定。

11.BS(k+j)=(k+j)*k+j*2=(5+2)*5+2*2=39,同理S(k-1)=(k+j)*k+j*2=\r\n(5-2)*5-2*2=11,所以答案选择B。

12.B

13.B

14.B解析:scanf函数的一般格式是:

scanf(格式控制,地址表列)

该格式中,地址表列中应是变量地址,而不是变量名。注意:调用putchar和getchar函输出和输入字符。

15.C从for循环可知pt是指向行的首地址的指针变量,因此由指针的表示方法可知:*(*(pt+1)+2)=pt[1][2]=t[1][2]。

16.A“*P[3]”是一个字符,也就是str[3][0],不是字符串,选项A错误。“P[3]”“str[2]”和“*p”分别代表了ddd、ccc、aaa。故本题答案为A选项。

17.D

18.A解析:顺序存储结构就是用一组地址连续的存储单元依次存储该线性表中的各个元素,链式存储结构中各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致,所以选项A是正确的。两者都可以存储线性的、有序的逻辑结构,所以选项B、C不正确。顺序结构使用的是连续物理空间,链式结构可以使用零散的物理空间存储,链式结构更灵活,不存在谁节约空间的说法,所以选项D不正确。

19.C解析:本题考核的知识点是字符数组的定义、赋初值以及函数sizeof()的应用。本题中定义两个字符型数组,其中a省略了长度,定义了b的长度为10,并赋初值分别为“abcdefg”和“abcdfg”。所以a的长度为赋值给它的字符串的字符个数7加上一个结束转义字符,即a的长度为7+1为8.定义时b的长度定义为10,故b的长度为10,因此最后通过函数sizeof()求得的数组a和数组b的长度分别为8和10,所以,4个选项中选项C符合题意。

20.C

21.i<10i<10解析:分析程序:当(i=0,1,2,…)时,“j=i*10+8”语句的运行结果是(8,18,28,…)个位数字为8的所有整数;题中要求是100以内的整数,所以i<10;“if(j%4!=0)continue;”语句的功能是当条件不能被4整除时,继续循环不执行操作,直到能被4整除时输出该数,所以输出的数满足条件100以内能被4整除且个位数为8。

22.S[j++]=s[i]S[j++]=s[i]解析:循环开始后如果数组s中储存值与字符c相同,则i++直接跳过当前值;如果不相同,则将当前值赋予数组指定位置,并通过j++将下标加1,指向下一元素要存储的位置。

23.2222解析:在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},然后再执行for循环结构,将b[6],b[7]…b[9]的值相加,结果为22。

24.66解析:strlen()函数的作用是计算字符串的长度并作为函数的返回值,这里的长度不包括串尾的结束标志,\'\\0\'。

\'\\t\',是转义字符,代表横向跳若干格;\'\\\''是转义字符,代表双引号;\'\\023\'只代表一个字符,而不管转义字符后面有几个字符:\'\\xAB\'是以两位十六进制数AB表示的ASCII码字符,只代表一个字符:\'\\n\'是转义字符,代表回车换行。’

5个子符常量各代表一个字符,再加上字母C,所以返回的长度是6。

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

26.!knahT!knahT解析:此程序是一道次序颠倒题,即输入'Thank!',则输出'!knahT'。

27.structnode*structnode*解析:本题中的结构类型名为structnode,所以空白处应填:structnode*。即定义一个指向自身的结构体指针。

28.3636解析:本题循环体共执行了3次。第一次:k=3,n=26:第二次:k=18,n=2;第三次:k=36,n=0。

29.软件开发。软件开发。解析:通常,软件生命周期包括8个阶段:问题定义、可行性研究、需求分析、系统设计、详细设计、编码、测试、运行维护。还分为3个时期,软件定义期:包括问题定义、可行性研究和需求分析3个阶段;软件开发期:包括系统设计、详细设计、编码和测试4个阶段;软件维护期:即运行维护阶段。

30.struetnode*struetnode*解析:本题中的结构类型名为struetnode,所以空白处应填:structnode*,即定义一个指向自身的结构体指针。

31.88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。

32.存储结构

33.4545解析:对于长度为N的线性表,在最坏情况下(即线性表中元素现在的顺序与目标顺序正好相反),冒泡排序需要经过N/2遍的从前往后的扫描和N/2遍的从后往前的扫描,需要的比较次数为N(N-1)/2。

34.参照完整性参照完整性

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

36.77解析:本题考查的是函数的递归调用。x=0或x=1是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。

37.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下—个字符,则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+1]。最终打印输出得到的字符串str,所以第三空应填:'%s',str。

38.2424解析:在循环队列中因为头指针指向的是队头元素的前一个位置,所以是从第6个位置开始有数据元素,所以队列中的数据元素的个数为29-5=24。

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

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

41.B解析:argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数组的指针。

42.C详细解答:

关系模型允许3类数据约束,它们是:

实体完整性约束

该约束要求关系的主键中属性值不能为空值,这是数据库完整性的最基本要求。

参照完整性约束

该约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组:即在关系中的外键要么是所关联关系中实际存在的元组,要么就为空值。

用户定义的完整性约束

用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。cC

43.A解析:本题考查函数的递归调用。在函数递归调用时,fun(5):a=5-fun(3)->fun3=a=3-fun(1)->fun(1):a-3,反推回去fun(3):a=3-3=0->fun(5):a=5-0=5,最后的计算结果为5。

44.A解析:本题考查带参数的宏的定义及相关运算:(x)>(y)?(x):(y)是x>y时输出x,否则输出y,调用(MAX(a+b,c+d))*100时,(a+b=5)>(c+d=4),所以输出a+b=5,所以x=5*100。

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

46.A解析:用E-R图可以简单明了地描述实体及其相互之间的联系,用E-R图还可以方便地描述多个实体集之间的联系和一个实体集内部实体之间的联系。因此,选项A中的说法是正确的,而选项B与C中的说法都是错误的。

为了建立用户所要求的数据库.必须把概念结构(用E-R图表示的概念数据模型)转换为某个具体的数据库管理系统所支持的数据模型,这就是逻辑结构设计所要完成的任务。

在已给定数据库管理系统的情况下,数据库的逻辑设计可以分两步来进行:

①将概念模型转换成一般的数据模型;

②将一般的数据模型转换为特定的数据库管理系统所支持的数据模型。

由此可知,用E-R图表示的概念数据模型不仅能转换为关系数据模型,还可以转换为其他数据模型,如网状模型和层次模型等。因此,选项D中的说法也是错误的。

47.B

48.B解析:C语言规定,数组元素的下标是从零开始的.本题首先定义了一个二维数组aa并按行赋初值,定义了一个变量s用于求和。for循环执行4次分别把数组元素aa[0][1]、aa[1)[1)、oa[2][1]和aa[2][1]的值(2,6,9,2)加到变量s中,s的值为19,所以最后输出的s的值为19.所以4个选项中B正确。

49.B解析:此题考查了函数指针的概念,函数指针是定义一个指针指向函数的入口地址,可用这个指针来调用函数。

50.B

51.D解析:本题中,scanf函数的格式控制没有空格,所以,对于选项A)、B)、C),输入的第一个空格会作为字符赋值给变量c1,而不会被解释成分隔符。

52.B解析:由于在main()函数中,变量i=4,所以就调用fun(4),则输出“m=4k=4”。然后变量k增1等于5,变量i增1等于5,所以main()函数的“printf('i=%dk=%d\\n',i,k);”语句输出“i=5k=5”。

53.A解析:'z'的ASCII码值为122,经过c-25运算后,得97,以字符形式输出是a。所以本题答案是A)。

54.A解析:考查宏替换的使用。宏替换用'#define宏名宏体'的形式来定义。在进行编译预处理时,将把程序中宏定义之后的所有宏名用宏体替换。宏虽然可以带参数,但宏替换过程中不像函数那样要进行参数值的计算、传递及结果返回等操作;宏替换只是简单的字符替换,不进行计算,因而本题中的S(a+b)进行宏替换后为PT*1+2*1+2=5.5*1+2*1+2=9.5。

55.C解析:本题中首先定义了结构体类型STU,该结构体由一个长度为10的字符数组、两个整型变量num和Score组成。在主函数中,定义了一个长度为5的结构体数组s并赋初值,一个指针数组p和一个指针变量t,接着将数组s中各元素的地址依次赋给指针数组p中的各成员。然后通过两个for循环将数组p按Score的值从小到大的顺序排列。因此最后输出的p[1]->Score的值为550,而数组s[1].Score的值为580。

56.D解析:内聚性是—个模块内部各元素间彼此结合的紧密程度的度量。内聚共有7类,它们之间的内聚性由弱到强排列顺序为:偶然内聚、逻辑内聚,时间内聚、过程内聚、通信内聚、顺序内聚和功能内聚。

57.B

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

59.A解析:由于本题定义的是共用体,所以成员表列中的整型变景x与字符数组c共占用同—个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。

60.A解析:指针p1+k相当于指针P1向后移动了k个字符的位置,指针p2同理。

61.B软件测试的目的主要有以下几个方面。

(1)软件测试是为了发现错误而执行程序的过程。

(2)一个好的测试用例能够发现至今尚未发现的错误。

(3)一个成功的测试是发现了至今尚未发现的错误的测试。

另外,即使经过了最严格的测试,可能仍然还有没被发现的错误藏在程序中,测试只是找出程序中的错误,不能证明程序中没有错误。

62.B

63.B本程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为l+2+3+4+5

温馨提示

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

评论

0/150

提交评论