2021年广东省韶关市全国计算机等级考试C语言程序设计_第1页
2021年广东省韶关市全国计算机等级考试C语言程序设计_第2页
2021年广东省韶关市全国计算机等级考试C语言程序设计_第3页
2021年广东省韶关市全国计算机等级考试C语言程序设计_第4页
2021年广东省韶关市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

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

文档简介

2021年广东省韶关市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:

程序运行后的输出结果是()。A.4284B.2870C.2668D.3981

2.设有下列二叉树:

对此二叉树先序遍历的结果为

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

3.数据表A中有10000个元素,如果仅要求求出其中最大的10个元素,则采用()最节省时间。

A.堆排序B.希尔排序C.快速排序D.希尔排序

4.有以下程序:#include<stdio.h>main(){chars[]={“012xy”;inti,n=0;for(i=0;s[i]|=0;i++)if(s[i]>=‘a’&&s[i]<=‘z’)n++;printf(“%d\n”,n);}程序的运行结果是()。

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

5.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);)main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(“%d”,a[i]);}printf(“\n”);}程序运行后的输出结果是()。A.1313B.2234C.3234D.1234

6.

7.下列对于线性链表的描述中正确的是()

A.存储空间不一定是连续,且各元素的存储顺序是任意的

B.存储空间不一定是连续,且前件元素一定存储在后件元素的前面

C.存储空间必须连续,且前件元素一定存储在后件元素的前面

D.存储空间必须连续,且各元素的存储顺序是任意的

8.有以下程序:#include<stdio.h>#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf(“%d\n,”,S(k+j));}程序的运行结果是()。

A.33B.197C.143D.28

9.若有下列定义(设int类型变量占2个字节):

inti=8;

则下列语句:

printf("i=%08d",i);

输出的结果是()。A.A.i=8B.i=00000008C.i=08D.8

10.如有inta=11;则表达式(a++*1/3)的值是()。

A.0B.3C.4D.12

11.有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“d1.dat”,“w”);for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);fprintf(fp,“\n”);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d”,&n);fclose(fp);printf(“%d\n”,n);}程序的运行结果是()。

A.321B.12300C.1D.123

12.有以下程序:#include<stdio.h>main(){charch[]=“uvwxyz”,*pc;pc=ch;printf(“%c\n”,*(pc+5));}程序的运行结果是()

A.zB.0C.元素ch[5]的地址D.字符y的地址

13.对于int*pa[5];的描述,()是正确的。

A.pa是一个指向数组的指针,所指向的数组是5个int型元素

B.pa是一个指向某数组中第5个元素的指针,该元素是int型变量

C.pa是一个具有5个元素的指针数组,每个元素是一个int型指针

D.pa[5]表示某数组的第5个元素的值

14.在c语言中,变量的隐含存储类别是()。

A.autoB.staticC.externD.无存储类别

15.

16.

17.在一个单链表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;

18.设有定义:

inta=1,b=2,C=3;

以下语句中执行效果与其他三个不同的是()。

A.if(a>B.C=a,a=b,b=C;

B.if(a>B.{C=a,a=b,b=C;}

C.if(a>B.C=a;a=b;b=c;

D.if(a>B.{C=a;a=b;b=c;}

19.

20.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}

A.16B.2C.9D.1

二、2.填空题(20题)21.定义长度为12的数组,下面四种方法中正确的有【】。

①intx[12];②intn=12;③constintn=12;④intx[]={1,2};

intx[n];intx[n];

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

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

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

}

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

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

24.以下程序的输出结果是()。

#inciude<stdio.h>

main()

{chars[]="ABCabc";

s[5]='\0';

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

}

25.有以下程序:

main()

{intnum[4][4]={{1,2,3,4),{5,6,7,8),{9,10,11,12),{13,14,15,16}},i,j;

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

{for(j=0;j<=i;j++)printf("%4c",'');

for(j=______;j<4;j++)printf("%4d",num[i][j]);

printf("\n");

}

}

若要按以下形式输出数组右上半三角:

1234

678

1112

16

则在程序下划线处应填入的是【】。

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

main()

{inta=0;

a+=(a=8);

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

}

27.设有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

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

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

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

for(i=1;i<5.i++)

PRINT(a+i);

printf("\n");

}

29.设有以下程序:

main()

{inti,sum=0;

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

{if((i%2)==0)

continue;

sum+=i;}

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

}

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

30.数据结构分为线性结构和非线性结构,线性表、栈和队列都属于【】。

31.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是【】。

#include

main()

{chara,b;

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

a=a-'A'+'0';b=b*2;

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

}

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

33.函数sub的功能是根据下面近似分式求π的值。

(π*π)/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)

现在请在下面的函数中填空,完成求π值的功能。

#include"math.h"

doublesub(longm)

{doublesum=0.0,t;longn;

for(n=1;n<=m;n++)sum+=【】;

t=sqrt(6*sum);

return(t);

}

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

main()

{

inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

{

if(i==2||==4)continue;

j=0;

do

{

s+=a[i][j];

j++;

}while(j<4);

}

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

}

35.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。

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

mam()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2=0)

*p='*';

p++;i++;

}

puts(A);

}

37.在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【】。

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

main()

{charb[]="Helloyou";

b[5]=0;

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

}

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

40.下面程序的运行结果是:【】。

fun(intt[],intn)

{inti,m;

if(n==1)returnt[0];

elseif(n>=2){m=fun(t,n-1);returnm;}

}

main()

{inta[]={11,4,6,3,8,2,3,5,9,2};

printf("%d\n",fun(a,10));

}

三、1.选择题(20题)41.在下列定义中的共用体所占内存字节数是()。union{chark[6];struct{intm;floarf;}a;doubled;}b;

A.8B.14C.18D.10

42.下面程序的输出结果是______。unsignedfun(unsignednum){unsignedk=1;do{k*=num%10;num/=10;}while(num);return(k);}main(){unsignedn=26;printf("%d\n",fun(n));}

A.0B.4C.12D.无限次循环

43.下列程序中c的二进制值是()。

chara=2,b=4,C;

c=a^b>>2;

A.00000011B.00010100C.00011100D.00011000

44.假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3

45.已有定义int(*q)(),指针q可以()。

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

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

A.1234B.123C.12D.1

47.阅读下列程序,则在执行后,程序的运行结果为#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}

A.nicetomeetyouyouB.nicetoC.meetyouyouD.nicetoyou

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

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

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

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

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

49.关系数据库管理系统应能实现的专门的关系运算包括()。A.A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表

50.以下叙述不正确的是______。

A.分号是C语言的必要组成部分

B.C程序的注释可以写在句的后面

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

D.主函数的名字不一定用main表示

51.运行下列程序,若从键盘输入字母“a”,则输出结果是()。charc;c=getchar();if(c>='a'&&c<='g')c=c+4;elseif(c>='g'&&c<='z')c=c-21;elseprintf("inputerror!\n");putchar(c);

A.fB.tC.eD.d

52.

A.(a+b)*h/2B.(1/2)*(a+b)*hC.(a+b)*h*1/2D.h/2*(a+b)

53.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;pfintf("%d,%d,%d,%d\n",a,b,c,d);}

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

54.以下不是面向对象思想中的主要特征的是

A.多态B.继承C.封装D.垃圾回收

55.设有如下枚举类型定义:enumlanguage{Basic=3,Assembly,Ada=100,COBOL,Fortran};枚举类型Fortran的值为()

A.4B.7C.102D.103

56.有以下程序main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)pfintf("%d",i);}printf("\n");}执行后的输出结果是

A.5B.24C.32D.40

57.有以下程序:main(){chars[]="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}执行后输出结果是()。

A.赋初值的字符串有错B.6,7C.5,6D.6,6

58.有下列程序:main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}程序运行后的输出结果是()。

A.1*1=11*2=21*3=32*1=22*2=43*1=3

B.1*1=11*2=21*3=32*2=42*3=63*3=9

C.1*1=11*2=22*2=41*3=32*3=63*3=9

D.1*1=12*1=22*2=43*1=33*2=63*3=9

59.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是

A.if((a>b)&&(b>c))k=1;elsek=0;

B.iff(a>b)‖(b>c))k=1;elsek=0;

C.iffa<=b)k=0;elseiffb<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

60.下列程序的运行结果是()。#include<stdio.h>voidsub(int*s,int*y){staticintm=4:*y=s[m];m--;}voidmain(){inta[]={1,2,3,4,5},k,x;printf("\n");for(k=0;k<=4;k++){sub(a,&x);printf("%d,",x);}}

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

四、选择题(20题)61.有以下程序:

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

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

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

63.

64.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式输出数组右上半三角

1234

678

1112

16

则在程序下划线处应填入的是()。

A.i-1B.iC.i+1D.4一i

65.用链表表示线性表的优点是()。

A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序与逻辑顺序相同

66.

67.

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

main

{inti;

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

switch(i){case0:printf("%d",i);

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

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

}

}

A.000102B.000020C.000122D.000111

68.

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.

72.有以下函数函数的功能是()。

A.统计x和y所指字符串中最前面连续相同的字符个数

B.查找x和y所指字符串中是否有’\0’

C.将y所指字符串赋给x所指存储空间

D.统计x和y所指字符串中相同的字符个数

73.

74.(54)在下列几种排序方法中,要求内存量最大的是______。

A.插入排序

B.选择排序

C.快速排序

D.归并排序

75.有以下程序:#include<stdio.h>main(){chars[]={"012xy"};inti,n=o;for(i=0;s[i]!='0';i++)if(s[i]>=as[i]<=z)n++;printf("%d\n",n);}程序运行后的输出结果是()。A.0B.2C.3D.5

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

A.树结构

B.网结构

C.线性表

D.二维表

77.在函数中默认存储类型说明符的变量应该是________存储类型。

A.内部静态B.外部C.自动D.寄存器

78.

79.

80.有以下程序:

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

A.SunDan20042

B.SunDan20044

C.LiSiGuo20042

D.YangSan20041

A.提高耦合性、降低内聚性有利于提高模块的独立性

B.降低耦合性、提高内聚性有利于提高模块的独立性

C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D.内聚性是指模块间互相连接的紧密程度

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:求S的值。

例如,当n为100时,函数的值应为1.566893。

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

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

试题程序:

六、程序设计题(1题)82.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n1)+1/2n)例如,若主函数从键盘给n输入100后,则输出为s=5.878031。n的值要求大于1但不大于100。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.Bfor循环中,i取值为1~100。循环体中,3个if语句必须同时满足才会输出x,输出的x取值为i+3,所以x的取值只能是4到103。x必须满足以下条件:①x%7==0(x必须是7的倍数);②(x-1)%3==0(x必须是3的倍数+1);③(x-2)%2==0(x必须是2的倍数)。满足条件③的x取值为7,14,21,28,35,42,49,56,63,70,77,84,91,98;又满足条件②的x的取值为7,28,49,70,91;又满足条件①的x的取值为28,70。本题答案为B选项。

2.C解析:二叉树的遍历分为先序,中序、后序三种不同方式.本题要求先序遍历,其遍历顺序应该为:访问根结点->,先序遍历左子树->先序遍历右子树。按照定义,先序遍历序列是ABDECF,故答案为C。

3.B

4.B程序首先给字符数组s赋值为“012xy”。for循环语句的功能是遍历字符串,通过if条件语句对字符串中的小写字母进行计数,字符串中小写字母个数为2,即n=2。故本题答案为B选项。

5.C本题考查了宏定义与局部变量的区别,宏定义的作用范围为整个程序,而变量的作用范围只在定义它的函数体的部分,因此,主函数中定义的i与fun中的i互不相干。

6.A

7.A本题考查的是线性单链表、双向链表与循环链表的结构及其基本运算。\n在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。故本题答案为A。

8.CS为带参数的宏定义,运行“S(k+j)”为4*(k+j)*k+j+1=143。故本题答案为C选项。

9.B解析:本题考查printf函数的格式。“%08”格式符中的“0”表示在指定数据输出宽度的同时,在数据前面的多余空格处加“0”;“8”表示指定数据的输出宽度为8位。

10.B

11.D程序首先将数组a中的元素1、2、3分别写入了d1.dat文件中,再将d1.dat文件中的数据“123”整体写到变量n的空间中,所以输出的数据为123。故本题答案为D选项。

12.A语句“pc=ch;”使得指针变量pc指向字符数组ch的首地址,即指向字符‘u’。而“pc+5”指向的是指针向后移动5位所指的字符,即指向字符‘z’,所以输出的“*(pc+5)”的值为‘z’。故本题答案为A选项。

13.A

14.A解析:auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关键字'auto'可以省略,auto不写则隐含确定为'自动存储类别',属于动态存储方式。

15.D

16.A

17.D

18.C由于a小于b,所以所有选项中的条件都为假,c选项中实际执行了a=b;b=c;两个操作。而A、B、D选项由于条件不成立,所以什么也没有做,所以选择c选项。

19.D

20.D解析:本题考查带参数的宏调用。a/=SQR(k+m)/SQR(k+m)进行宏替换后得:a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)=10/(2+2+0+2+1)=10/7/1。

21.①③

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

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

24.ABCabABCab解析:本题中字符数组的初值是“ABCabc”,s[5]='c',然后通过s[5]='\\0'重新给s[5]赋值,在C语言中'\\0'是字符串结束标志,执行s[5]='\\0',其实是将s[5]的值去掉只保留前面的字符。

25.ii解析:上三角的情况是对数组a[i][j],j≥j的时候,因此,在j≥i时应输出所需要的元素,故横线上应填i。

26.1616解析:在程序中首先将8赋值给变量a,然后在进行复合赋值运算。即a=a+a=8+8=16,所以该空格处应该填16。

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

28.1234theend1,2,3,4,theend解析:本题考查带参数的宏的定义。第1次循环,i=1时,调用PRINT(1),P(1)输出1;第2次循环,i=2时,调用PRINT(2),P(2)输出2:第3次循环,i=3时,调用PRINT(3),P(3)输出3:第4次循环,i=4时,调用PRINT(4),P(4)输出4,theend。

29.2424解析:continue语句功能:结束本次循环(注:不是终止整个循环),即跳过循环体中continue语句后面的语句,开始下一次循环。

30.线性结构线性结构解析:本题考查了数据结构的基本概念。与栈类似,队列也是线性表,可以采用链式存储结构,所以带链的队列属于线性结构。

31.1B1B解析:从键盘输入后,有a=B,b=33。a=a-'A'+'0'='B'-'A'+'0'='1',b=b*2=66,在输出时均需要把a,b转化为字符型,因此输出为1B。

32.完整性控制完整性控制

33.1.0/(n*n)1.0/(n*n)解析:sam中累加的值是1+1/(2*2)+1/(3*3)+…+1//(n*n),如果写为1/(n*n),则会因为1和n都为整型,结果则为实型,将1变为1.0,结果则为实型。

34.9292解析:主函数中首先定义了一个4行4列的二维数组,然后执行一个while循环,该循环中又嵌套了一个do-while循环。现看while循环,该循环通过i++的值来判断是否结束循环当i++的值为4的时候结束循环,当i=0时,执行while的循环体,显然if语句条件不满足不执行,接着让i=0,然后执行do-while循环体,我们不难看出do-whilo循环的功能是将第i+1行的所有元素加起来,所以这时s的值为s=a[1][0]+a[1][1]+a[1][2]+a[1][3)=26,当i=1时,i+1=2,uf后面括号里的表达式的值为真执行后面的continue语句,结束该次循环;当i=2时,i加1变为3,把第3+1行的所有元素的加到s上,此时s=s+a[2][0]+a[2][1]+a[2][2]+a[2][3]=92,当i=3时,3+1=4,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环,当i=3时,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环当i=4时while循环结束,所以最后输出的s的值为92。

35.77解析:此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。请注意前缀++,--和后缀++,--的区别。

36.*2*4*6*8**2*4*6*8*解析:程序中定义了一个字符数组a,并初始化为123456789,接着定义了一个指针p并让它指向数组a,紧接着执行了一个while循环,此循环的作用是:当i为偶数时,将“*”赋给a[i],p指向数组末尾,循环结束,此时数组中a[0]、a[2]、a[4]、a[6]和a[8]的值都为“*”,所以最后调用puts()函数输出的a的值为*2*4*6*8*

37.消息消息解析:在面向对象技术中,主要用到对象(object)、类(class)、方法(method)、消息(message)、继承(inheritance)、封装(encapsulation)等基本概念。其中消息是用来请求对象执行某一处理或回答某些信息的要求。

38.HelloHello解析:执行b[5]=0;是给数组的第6个元素赋值为0,即将Hello后的空格变为0。当输出字符串时遇到0终止输出。

39.参照完整性参照完整性

40.1111解析:此题涉及函数的调用和if语句。程序先执行第二个if语句,然后再执行第一个if语句,最后用return返回数值。

41.A解析:结构体变量所占的存储空间是各个分量所占空间的总和。共用体变量中的所有成员占有同一个存储空间,其字节数与成员中占字节数最多的那个成员相等。m占2个字节,f占4个字节,因此结构体变量a所占的存储空间为6字节。k[6]占6个字节,d占8个字节。共用体变量b所占的存储空间与占存储空间最多的d所占存储空间的字节数相同。所以,A选项为所选。

42.C解析:本题定义了一个fun函数,用于num求和,具体执行过程如下:

num=26:k=k*(num%10)=1*(26%10),所以k=6,num=num/10=2;

num=2:k=k*(num%10)=6*(2%10),所以k=12,num=num/10=0);

num=O:while条件不成立,所以返回k的值12。

43.A解析:本题主要考查按位异或和右移运算。b=4的二进制为00000100,b>>2后为00000001,a=2的二进制为00000010,两者异或为00000011。

44.B解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a=0,则!a成立,执行下列的语句,x--,得x=11:第二个if语句,判断条件,发现c=o,则条件不成立,执行下列的else语句,得x=4。

45.A解析:本题考查的是指向函数的指针。函数指针的定义方式是:类型标识符(*指针变量名)()。其中,“类型标识符”为函数返回值的类型;“指针”指向函数的入口地址。

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

47.D解析:考查通过赋值的方式给一维数组赋初值。字符串复制函数strcpy调用形式为:strcpy(s1,s2),此函数用来把s2所指字符串的内容复制到s1所指存储空间中,函数返回s1的值,即目的串的首地址;求字符串长度函数strlen的调用形式如下:strlen(s),此函数计算出以s为起始地址的字符串长度,并作为函数值返回。注意这一长度不包括串的结束标志。用于字符串处理的函数。

48.B数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。数据库可以被直观地理解为存放数据的仓库,只不过这个仓库在计算机的大容量存储器上,例如,硬盘就是一种最常见的计算机大容量存储设备。数据必须按一定的格式存放,因为它不仅需要存放,而且还要便于查找和使用。

数据库管理系统(DBMS)是位于用户与操作系统之间的完成数据管理的系统软件。它是用户与数据库的接口。应用程序一般要通过DBMS才能访问数据库。在数据库建立、运用和维护时对数据库进行统一控制。

数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。数据库是整个数据库系统最基本的成分。数据库管理系统是数据库系统的核心。数据库管理员是数据库系统的责任维护者,负责对数据库系统的整体维护。

综上所述,本题中只有B选项的描述是正确的。

49.B解析:关系数据库建立在关系数据模型的基础上,具有严格的数学理论基础。关系数据库对数据的操作除了包括集合代数的并、差等运算之外,更定义了一组专门的关系运算:连接、选择和投影。关系运算的特点是运算的对象都是表。

50.D解析:C语言的程序是由主函数main()开始运行,由主函数来调用其他函数,所以D是错误的。

51.C解析:首先,getchar函数通过键盘读入字符'a',即c='a',(其实c得到的是字符a的ASCII码值),然后判断if语句的控制条件,发现'a'>='a'&&'a'<='g'成立,则执行下一步列的语句,c=c+4,c得到的是字符e的ASCII码值,退出if语句,通过putchar函数输出字符e。

52.B解析:由于1和2都是整型,选项B中1/2的运算结果为0,故整个表达式的值为0,所以它的结果和题目中要求的代数式的计算结果不相符。

53.D解析:程序中if子句后面有2条语句b=1;c=2;需要用{}括起来,成为一条复合语句,否则else找不到与之配对的if,所以编译出错。

54.D解析:面向对象思想中的三个主要特征是:封装性、继承性和多态性。

55.C

56.C解析:当for循环执行到第30次时,i的值为30能被5整除,然后继续执行两次if语句,i经过两次自加1运算,值变为32,能被8整除,故此时第一次执行“printf('%d',i);”语句,即输出32。

57.C解析:本题在定义字符数组时没有定义数组长度,但用字符常量给数组赋了初值,这时初值的个数即为数组的长度,故数组长度为6(包括'\\0')。字符串的长度为有效字符的个数5。strlen(s)返回值为串中字符的个数(不计最后的'\\0'),则输出值为5。sizeof(s)计算数组所占的字节数,包含'\\0',则输出值为6。因此,C选项正确。

58.B解析:外层for循环的自变量i从1开始,每次循环后增1,直到i等于3结束.对于外层循环自变量i的每一个值,内层循环的自变量j每次从i开始,每次循环后增1,直到j等于3结束。所以在每次外循环开始后,内层循环在一行先打印i*j=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。

59.A解析:本题考核的知识点是三目运算符“?:”的运用:三目运算表达式的规则为如果“?”前面的表达式的值为真,则取“:”前的表达式的值,否则,取“:”后面表达式的值。分析题目中给出的表达式可知,如果a>b和b>c同时成立,k=1,否则k=0.所以,4个选项中选项A符合题意。

60.A解析:本题考查的是静态变量以及函数的实参与形参之间的地址值传递。sub()函数数中定义的变量m是一个静态变量,系统可为其分配固定的存储空间,重复使用时,变量的值保留;所以当mam()函数中的for循环中语句sub(a,&x);执行时,sub函数中m的值依次是4,3,2,1,0;因为变量x进行的是地址值传递,所以最后依次输出的是数组a的元素a[4]、a[3]、a[2]、a[1]、a[0]。

61.D本题考查位运算符,题目中将a向左移两位,左移两位表示乘以4,所以答案为8,选项D正确。

62.B当n为9时,此时if语句成立,执行n++后,n为10,因此输出n的值为10,故选择B选项。

63.A

64.B

\n本题中要求输出右上半角的数,对角线上的数的下标相同,所以j=i。

\n

65.CC。【解析】数据结构是相互之间存在一种或多种特定关系的数据元素的集合。”关系”描述的是数据元素之间的逻辑关系,因此又称数据的逻辑结构。数据的存储结构是指数据结构(数据的逻辑结构)在计算机中的表示,又称物理结构。数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据处理效率不同。由于链表采用链式存储结构,元素的物理顺序并不连续,对于插入和删除无需移动元素,很方便,当查找元素时就需要逐个元素查找,因此查找的时间相对更长。

66.D

67.C

\n当i=0时,执行switch语句,对应的执行case0,输出0,因为没有break,接着执行case2的语句,又输出一个0,接着执行default语句,再输出一个0,返回i++;i=1时,没有case语句,执行default语句,输出一个1,接着又返回i++;当i=2时执行case2和default语句分别输出一个2,此时又返回i++,i变为3,for循环不成立,终止,最后输出000122。

\n

68.A

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

70.A

71.C

72.A本题中由循环条件可知,当遇到l\0”’或“x与y所指的字符的值不相等”中的一个条件时就结束循环,因此本题函数的功能是统计x和y所指字符串中最前面连续相同的字符个数。

73.A

74.D

75.B本题考查for循环。当i=0时,开始for循环,因为数组的下标是从0开始的,所以s[o]=0,不符合for循环,不执行下边的语句,当i=1时,继续执行if语句,if语句的功能是如果在小写字母a~z,则记数n加1。所以本题结果为2。

76.D

77.A

78.D

79.B

80.A本题考查的是结构体。主函数中定义了结构体类型的指针变量P,并使其指向了结构体类型的数组s\r\n[1],并通过调用函数f改变了指针变量P所指向的结构体\r\n成员变量name的值,但并未改变其num的值。这是因为函数f中的形参flame是一个字符型指针变量,它指向了主函数中\r\n指针变量P所指向的结构体的成员变量name,所以对函数f中\r\n的形参*name的改变也就是对主函数中P->name的改变,\r\n而函数f中对形参num的改变并不会影响主函数中P一>num\r\n的值,因为此时传递给nnm的是一个值,而不是地址。81.(1)错误:proc(intn)

正确:doubleproc(intk)

(2)错误:returnsum

正确:returnsum;

【解析】由主函数中的函数调用及函数proc()中的re-turn语句可知,函数proc()的返回值类型应为double型,因此“proc(intk)”前面应加上double;根据C语言的语法规则,每一条语句都必须以分号结束,因此语句“returns”后应加上分号。

82.

【解析】首先定义一个变量来存放表达式的和.根据题目中提供的多项式,通过n次循环来求出n项的和。最后把所求得的和返回到主函数当中。

2021年广东省韶关市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.有以下程序:

程序运行后的输出结果是()。A.4284B.2870C.2668D.3981

2.设有下列二叉树:

对此二叉树先序遍历的结果为

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

3.数据表A中有10000个元素,如果仅要求求出其中最大的10个元素,则采用()最节省时间。

A.堆排序B.希尔排序C.快速排序D.希尔排序

4.有以下程序:#include<stdio.h>main(){chars[]={“012xy”;inti,n=0;for(i=0;s[i]|=0;i++)if(s[i]>=‘a’&&s[i]<=‘z’)n++;printf(“%d\n”,n);}程序的运行结果是()。

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

5.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);)main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(“%d”,a[i]);}printf(“\n”);}程序运行后的输出结果是()。A.1313B.2234C.3234D.1234

6.

7.下列对于线性链表的描述中正确的是()

A.存储空间不一定是连续,且各元素的存储顺序是任意的

B.存储空间不一定是连续,且前件元素一定存储在后件元素的前面

C.存储空间必须连续,且前件元素一定存储在后件元素的前面

D.存储空间必须连续,且各元素的存储顺序是任意的

8.有以下程序:#include<stdio.h>#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf(“%d\n,”,S(k+j));}程序的运行结果是()。

A.33B.197C.143D.28

9.若有下列定义(设int类型变量占2个字节):

inti=8;

则下列语句:

printf("i=%08d",i);

输出的结果是()。A.A.i=8B.i=00000008C.i=08D.8

10.如有inta=11;则表达式(a++*1/3)的值是()。

A.0B.3C.4D.12

11.有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“d1.dat”,“w”);for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);fprintf(fp,“\n”);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d”,&n);fclose(fp);printf(“%d\n”,n);}程序的运行结果是()。

A.321B.12300C.1D.123

12.有以下程序:#include<stdio.h>main(){charch[]=“uvwxyz”,*pc;pc=ch;printf(“%c\n”,*(pc+5));}程序的运行结果是()

A.zB.0C.元素ch[5]的地址D.字符y的地址

13.对于int*pa[5];的描述,()是正确的。

A.pa是一个指向数组的指针,所指向的数组是5个int型元素

B.pa是一个指向某数组中第5个元素的指针,该元素是int型变量

C.pa是一个具有5个元素的指针数组,每个元素是一个int型指针

D.pa[5]表示某数组的第5个元素的值

14.在c语言中,变量的隐含存储类别是()。

A.autoB.staticC.externD.无存储类别

15.

16.

17.在一个单链表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;

18.设有定义:

inta=1,b=2,C=3;

以下语句中执行效果与其他三个不同的是()。

A.if(a>B.C=a,a=b,b=C;

B.if(a>B.{C=a,a=b,b=C;}

C.if(a>B.C=a;a=b;b=c;

D.if(a>B.{C=a;a=b;b=c;}

19.

20.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}

A.16B.2C.9D.1

二、2.填空题(20题)21.定义长度为12的数组,下面四种方法中正确的有【】。

①intx[12];②intn=12;③constintn=12;④intx[]={1,2};

intx[n];intx[n];

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

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

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

}

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

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

24.以下程序的输出结果是()。

#inciude<stdio.h>

main()

{chars[]="ABCabc";

s[5]='\0';

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

}

25.有以下程序:

main()

{intnum[4][4]={{1,2,3,4),{5,6,7,8),{9,10,11,12),{13,14,15,16}},i,j;

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

{for(j=0;j<=i;j++)printf("%4c",'');

for(j=______;j<4;j++)printf("%4d",num[i][j]);

printf("\n");

}

}

若要按以下形式输出数组右上半三角:

1234

678

1112

16

则在程序下划线处应填入的是【】。

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

main()

{inta=0;

a+=(a=8);

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

}

27.设有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

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

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

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

for(i=1;i<5.i++)

PRINT(a+i);

printf("\n");

}

29.设有以下程序:

main()

{inti,sum=0;

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

{if((i%2)==0)

continue;

sum+=i;}

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

}

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

30.数据结构分为线性结构和非线性结构,线性表、栈和队列都属于【】。

31.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是【】。

#include

main()

{chara,b;

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

a=a-'A'+'0';b=b*2;

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

}

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

33.函数sub的功能是根据下面近似分式求π的值。

(π*π)/6=1+1/(2*2)+1/(3*3)+…+1/(n*n)

现在请在下面的函数中填空,完成求π值的功能。

#include"math.h"

doublesub(longm)

{doublesum=0.0,t;longn;

for(n=1;n<=m;n++)sum+=【】;

t=sqrt(6*sum);

return(t);

}

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

main()

{

inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

{

if(i==2||==4)continue;

j=0;

do

{

s+=a[i][j];

j++;

}while(j<4);

}

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

}

35.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。

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

mam()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2=0)

*p='*';

p++;i++;

}

puts(A);

}

37.在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【】。

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

main()

{charb[]="Helloyou";

b[5]=0;

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

}

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

40.下面程序的运行结果是:【】。

fun(intt[],intn)

{inti,m;

if(n==1)returnt[0];

elseif(n>=2){m=fun(t,n-1);returnm;}

}

main()

{inta[]={11,4,6,3,8,2,3,5,9,2};

printf("%d\n",fun(a,10));

}

三、1.选择题(20题)41.在下列定义中的共用体所占内存字节数是()。union{chark[6];struct{intm;floarf;}a;doubled;}b;

A.8B.14C.18D.10

42.下面程序的输出结果是______。unsignedfun(unsignednum){unsignedk=1;do{k*=num%10;num/=10;}while(num);return(k);}main(){unsignedn=26;printf("%d\n",fun(n));}

A.0B.4C.12D.无限次循环

43.下列程序中c的二进制值是()。

chara=2,b=4,C;

c=a^b>>2;

A.00000011B.00010100C.00011100D.00011000

44.假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3

45.已有定义int(*q)(),指针q可以()。

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

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

A.1234B.123C.12D.1

47.阅读下列程序,则在执行后,程序的运行结果为#include"stdio.h"#include"string.h"main(){chara[30]="nicetomeetyou!";strcpy(a+strlen(a)/2,"you");printf("%s\n",a);}

A.nicetomeetyouyouB.nicetoC.meetyouyouD.nicetoyou

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

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

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

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

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

49.关系数据库管理系统应能实现的专门的关系运算包括()。A.A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表

50.以下叙述不正确的是______。

A.分号是C语言的必要组成部分

B.C程序的注释可以写在句的后面

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

D.主函数的名字不一定用main表示

51.运行下列程序,若从键盘输入字母“a”,则输出结果是()。charc;c=getchar();if(c>='a'&&c<='g')c=c+4;elseif(c>='g'&&c<='z')c=c-21;elseprintf("inputerror!\n");putchar(c);

A.fB.tC.eD.d

52.

A.(a+b)*h/2B.(1/2)*(a+b)*hC.(a+b)*h*1/2D.h/2*(a+b)

53.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;pfintf("%d,%d,%d,%d\n",a,b,c,d);}

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

54.以下不是面向对象思想中的主要特征的是

A.多态B.继承C.封装D.垃圾回收

55.设有如下枚举类型定义:enumlanguage{Basic=3,Assembly,Ada=100,COBOL,Fortran};枚举类型Fortran的值为()

A.4B.7C.102D.103

56.有以下程序main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)pfintf("%d",i);}printf("\n");}执行后的输出结果是

A.5B.24C.32D.40

57.有以下程序:main(){chars[]="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}执行后输出结果是()。

A.赋初值的字符串有错B.6,7C.5,6D.6,6

58.有下列程序:main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}程序运行后的输出结果是()。

A.1*1=11*2=21*3=32*1=22*2=43*1=3

B.1*1=11*2=21*3=32*2=42*3=63*3=9

C.1*1=11*2=22*2=41*3=32*3=63*3=9

D.1*1=12*1=22*2=43*1=33*2=63*3=9

59.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是

A.if((a>b)&&(b>c))k=1;elsek=0;

B.iff(a>b)‖(b>c))k=1;elsek=0;

C.iffa<=b)k=0;elseiffb<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

60.下列程序的运行结果是()。#include<stdio.h>voidsub(int*s,int*y){staticintm=4:*y=s[m];m--;}voidmain(){inta[]={1,2,3,4,5},k,x;printf("\n");for(k=0;k<=4;k++){sub(a,&x);printf("%d,",x);}}

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

四、选择题(20题)61.有以下程序:

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

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

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

63.

64.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式输出数组右上半三角

1234

678

1112

16

则在程序下划线处应填入的是()。

A.i-1B.iC.i+1D.4一i

65.用链表表示线性表的优点是()。

A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序与逻辑顺序相同

66.

67.

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

main

{inti;

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

switch(i){case0:printf("%d",i);

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

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

}

}

A.000102B.000020C.000122D.000111

68.

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.

72.有以下函数函数的功能是()。

A.统计x和y所指字符串中最前面连续相同的字符个数

B.查找x和y所指字符串中是否有’\0’

C.将y所指字符串赋给x所指存储空间

D.统计x和y所指字符串中相同的字符个数

73.

74.(54)在下列几种排序方法中,要求内存量最大的是______。

A.插入排序

B.选择排序

C.快速排序

D.归并排序

75.有以下程序:#include<stdio.h>main(){chars[]={"012xy"};inti,n=o;for(i=0;s[i]!='0';i++)if(s[i]>=as[i]<=z)n++;printf("%d\n",n);}程序运行后的输出结果是()。A.0B.2C.3D.5

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

A.树结构

B.网结构

C.线性表

D.二维表

77.在函数中默认存储类型说明符的变量应该是________存储类型。

A.内部静态B.外部C.自动D.寄存器

78.

79.

80.有以下程序:

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

A.SunDan20042

B.SunDan20044

C.LiSiGuo20042

D.YangSan20041

A.提高耦合性、降低内聚性有利于提高模块的独立性

B.降低耦合性、提高内聚性有利于提高模块的独立性

C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D.内聚性是指模块间互相连接的紧密程度

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:求S的值。

例如,当n为100时,函数的值应为1.566893。

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

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

试题程序:

六、程序设计题(1题)82.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n1)+1/2n)例如,若主函数从键盘给n输入100后,则输出为s=5.878031。n的值要求大于1但不大于100。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.Bfor循环中,i取值为1~100。循环体中,3个if语句必须同时满足才会输出x,输出的x取值为i+3,所以x的取值只能是4到103。x必须满足以下条件:①x%7==0(x必须是7的倍数);②(x-1)%3==0(x必须是3的倍数+1);③(x-2)%2==0(x必须是2的倍数)。满足条件③的x取值为7,14,21,28,35,42,49,56,63,70,77,84,91,98;又满足条件②的x的取值为7,28,49,70,91;又满足条件①的x的取值为28,70。本题答案为B选项。

2.C解析:二叉树的遍历分为先序,中序、后序三种不同方式.本题要求先序遍历,其遍历顺序应该为:访问根结点->,先序遍历左子树->先序遍历右子树。按照定义,先序遍历序列是ABDECF,故答案为C。

3.B

4.B程序首先给字符数组s赋值为“012xy”。for循环语句的功能是遍历字符串,通过if条件语句对字符串中的小写字母进行计数,字符串中小写字母个数为2,即n=2。故本题答案为B选项。

5.C本题考查了宏定义与局部变量的区别,宏定义的作用范围为整个程序,而变量的作用范围只在定义它的函数体的部分,因此,主函数中定义的i与fun中的i互不相干。

6.A

7.A本题考查的是线性单链表、双向链表与

温馨提示

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

评论

0/150

提交评论