2022-2023年浙江省湖州市全国计算机等级考试C语言程序设计_第1页
2022-2023年浙江省湖州市全国计算机等级考试C语言程序设计_第2页
2022-2023年浙江省湖州市全国计算机等级考试C语言程序设计_第3页
2022-2023年浙江省湖州市全国计算机等级考试C语言程序设计_第4页
2022-2023年浙江省湖州市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩98页未读, 继续免费阅读

付费下载

下载本文档

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

文档简介

2022-2023年浙江省湖州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若有以下语句:typedefstructS{intg;charh;}T;以下叙述中正确的是()。A.可用S定义结构体变量B.可用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量

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

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

B.函数可以返回地址值

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

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

3.若有定义和语句:inta,b;scanf("%d,%d",&a,&b);以下选项中的输人数据,不能把值3赋给变量a、5赋给变量b的是()。A.3,5,B.3,5,4C.3,5D.3,5

4.以下符合C语言语法的赋值表达式是()。

A.d=9+e+f=d+9B.d=9+e,f=d+9C.d=9十e,e++,d十9D.d=9十e++=d十7

5.若有定义“inta=1,b=2,c=3,d=4,m=2,n=2;”,则执行“(m=a>b)&&(n=c>d)”后n的值是()。

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

6.有3个关系R、S和T如下.

则由关系R和S得到关系T的操作是()。A.自然连接B.差C.交D.并

7.用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为()。

A.第i行非0元素的个数之和B.第i列非0元素的个数之和C.第i行0元素的个数之和D.第i列0元素的个数之和

8.有以下程序:voidfunl(char*p)程序执行后的输出结果是()A.ProhsbnB.PrphsbnC.ProgsbnD.Program

9.在目标串T[0,n-1]=”xwxxyxy”中,对模式串p[0,m-1]=”xy”进行子串定位操作的结果_______

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

10.设s1="Good",s2="",s3="Bye",则s1、s2和s3连接后的结果是()。

A.GoodB.GoodByeC.GoodByeD.Bye

11.已知字符A的ASCⅡ代码值是65,字符变量c1的直是A,c2的值是D。执行语句printf("%d,%d",c1,c2-2);后,输出结果是()。

A.A,BB.A,68C.65,66D.65,68

12.在数据结构中,与所使用的计算机无关的是数据的()结构。

A.逻辑B.存储C.逻辑和存储D.物理

13.串的长度是指()。

A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数

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

A.宏替换不占用程序的运行时间

B.预处理命令行必须位于源文件的开头

C.在源文件的一行上可以有多条预处理命令

D.宏名必须用大写字母表示

15.下述关于C语言文件的操作的结论中,正确的是______。

A.对文件操作必须先关闭文件

B.对文件操作必须先打开文件

C.对文件操作顺序无要求

D.对文件操作前必须先测文件是否存在,然后再打开文件

16.不带头结点的单链表head为空的判定条件是()。A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL

17.程序中主函数的名字为()。

A.mainB.MAINC.MainD.任意标识符

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

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

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

20.输入序列为ABC,输出为CBA时,经过的栈操作为()。

A.push,pop,push,pop,push,pop

B.push,push,push,pop,pop,pop

C.push,push,pop,pop,push,pop

D.push,pop,push,push,pop,pop

二、2.填空题(20题)21.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

return(num);

}

22.数据的逻辑结构在计算机存储空间中的存放形式称为数据的【】。

23.由25人围坐成圆圈,先从任意一人出发用1到25顺时针依次编号,然后从1号开始顺时针报数(1、2、3…),凡报5的倍数者出圈,剩下者继续报数,求出最后出圈者的编号。

#include<stdio.h>

【】

{inta[26],j,n,count;

for(j=1;j<=25;j++)a[j]=j;

j=1;count=0;n=【】;

do

{if(a[j]!=0)

{n++;

if(n%5==0)

{【】;

if(count==24)printf("%d\n",j);

count++;

}

}

j++;

if(j>25)j=1;

}

while(【】);

}

24.下面程序由两个源程序文件:t4.h和t4.c组成,程序编译运行结果是()。t4.h的源程序为:

#defineN10

#definef2(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);

}

25.在面向对象方法中,类的实例称为______。

26.下面程序的功能是求整数m、n的最大公约数,请填空。

main()

{intm,n,r;

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

if(【】){r=m;m=n;n=r;)

while(【】)

{r=m%n;m=n;n=r;}

printf("%d",m);

}

27.下面程序的运行结果是______。

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

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

}

28.若变量n的值为24,则print函数共输出【】行,最后一行有【】个数。

voidprint(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if(!(i%5))printf("\n");

}

printf("\n");

}

29.在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。

30.有以下程序,其功能是:以二进制“写”方式打开文件d1.dat,写入1~100这100个整数后关闭文件。再以二进制“读”方式打开文件d1.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。

#include<stdio.h>

main()

{FILE*fp;

inti,a[100],b[100];

fp=fopen("d1.dat","wb");

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

fwrite(a,sizeof(int),100,fp);

fclose(fp);

fp=fopen("d1.dat",【】);

fread(b,sizeof(int),100,fp);

fclose(fp);

for(i=0;i<100;i++)printf("%d\n",b[i]);

}

31.函数调用语句:“fgets(buf,n,fp);”从中指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。

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

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

33.以下程序的功能是从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(【】);

ch=fgetc(fp);

while(!feof(fp)){putchar(ch);ch=fgetc(fp);}

putchar('\n');fclose(fp);

}

34.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。

35.表达式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的数据类型为______。

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

inta=1234;

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

37.以下程序的运行结果是______。

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wbt");

fwtite(a,sizeof(int),5,fp);

fwlite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

for(i=0;i

38.在计算机软件系统的体系结构中,数据库管理系统位于用户和【】之间。

39.已知a为8位二进制数,要想通过ab运算使a的低5位变反(即0变1,1变0),高3位不变,b的值应为【】。

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

三、1.选择题(20题)41.一个算法应该具有“确定性”等五个特性,下面对另外四个特性的描述中错误的是()。

A.有零个或多个输入B.有零个或多个输出C.有穷性D.可行性

42.若执行下列程序时从键盘上输入2,则输出结果是()。#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<3)printf("%d\n",a);elseprintf("%d\n",a--);}

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

43.下面对对象概念描述错误的是()。

A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通信靠消息传递D.操作是对象的动态属性

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

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

45.有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是______。

A.3B.4C.5D.有语法错误

46.假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是______。

A.free(q);p->next=q->next;

B.(*p).next=(*q).next;free(q);

C.q=(*q).next;(*p).next=q;free(q);

D.q=q->next;p->next=q;p=p->next;free(p);

47.阅读程序:main(){intx;scanf("%d',&x);if(x--<5)printf("%d\n",x);elseprintf("%d\、n",x++);}程序运行后,如果从键盘上输入5,则输出结果是()

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

48.下列叙述中,不正确的是

A.算法的执行效率与数据的存储结构有关

B.算法的空间复杂度是指执行这个算法所需要的内存空间

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.算法的时间复杂度是指执行这个算法所需要的时间

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

A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

50.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A.函数调用可以作为独立的语句存在

B.函数调用可以作为一个函数的实参

C.函数调用可以出现在表达式中

D.函数调用可以作为一个函数的形参

51.结构化程序设计的3种基本结构是()。

A.过程、子程序和分程序B.顺序、选择和重复C.递归、堆栈和队列D.调用、返回和转移

52.下面程序:voidfunc(int*a,intb[]){b[0]=*a+6;)main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}则程序运行后的输出结果是()。

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

53.下列程序的输出结果是______。inti=010,j=10;printf("%d,%d\n",++i,j--);

A.11,10B.9,10C.010,9D.10,9

54.在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送()。

A.调用语句B.命令C.N令D.消息

55.有以下程序:#include<stdio.h>#include<strine.h>structSTU{charname[10];inthum;};voidf(char*name,ihtnum){structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};num=s[0].nnm;strepy(name,s[0],name);}main(){structSTUs[2]={{"YangSan",20041},{"LiSiGao",20042}},*P;p=&s[1];f(p->name,p->hum);printf("%s%d\n",p->name,p->num);}程序运行后的输出结果是()。

A.SunDan20042B.SunDan20044C.LiSiGuo20042D.YangSan20041

56.以下选项中不属于C语言的类型的是

A.signedshortint

B.unsignedlongint

C.unsignedint

D.longshort

57.设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。

A.'a'&&'b'

B.a<=b

C.a||+c&&b-c

D.!((a<b)&&!c||1)

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

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

59.下面程序的输出是______。chars[]="ABCD";main(){char*p;for(p=s;p<s+4;p++)printf("%s\n",p);}

A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA

60.字符串"\\\"ABCDEF\"\\"的长度是()。

A.15B.10C.7D.8

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

main()

{inta[3][3],*p,i;

p=&a[1][1];

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

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

}

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

A)3B)6

C)9D)2

62.设x,y,z均为整型变量,现有如下语句x=y=z=1;(++x||(++y&&++z));,则执行这个语句后y的值为

A.2B.1C.0D.不定值

63.(21)算法的空间复杂度是指______。

A.算法程序的长度

B.算法程序中的指令条数

C.算法程序所占的存储空间

D.算法执行过程中所需要的存储空间

64.有以下程序:

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

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

65.

66.下列选项中不属于软件生命周期开发阶段任务的是()。

A.软件测试B.概要设计C.软件维护D.详细设计

67.执行下述程序后,输出的结果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

68.

69.

70.有以下程序:

则以下函数调用语句错误的是()。

A.k:f(a,B.;B.k:add(a,B.;C.k=(*f)(a,B.;D.k=*(a,B.;

71.有以下程序:

#definef(x)(x*x)main

{

inti1,i2;

i1=f(8)/(4);i2=f(4+4)/f(2+2);

printf("%d,%d\n",i1,i2);

}

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

A.64,28B.4,4C.4,3D.64,64

72.

73.

74.

75.

76.

77.算法的时间复杂度是指()。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程所需要的基本运算次数D.算法程序中的指令条数

78.

79.有以下程序:

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

A.B,C,D,E,B.A,B,C,D,C.C,D,E,F,D.B,D,F,H,

80.已知inti=10;表达式“20-0<=i<=9”的值是()。

A.0B.1C.19D.20

五、程序改错题(1题)81.程序改错题(共l8分)下列给定程序中,函数fun的功能是:传人一个整数m,计算如下公式的值。例如,若输入5,则应输出一0.283333。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编写一个函数,用来删除字符串中的所有*。例如,输入abc*de*f*gh,则输出为abcdefgh。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B解析:语句typedefstructS{intg;charh;}T的作用是用T作为struetS{intg;charh;)的简写,所以选B。

2.C指针变量的值只能是存储单元地址,而不能是一个整数,故选项C错误。

3.C在输入3和5之间除逗号外不能有其他字符。

4.B

5.C对于表达式“(m=a>b)&&(n=c>d)”,首先执行m=a>b,由于a、b的值分别为1、2,因此a>b的值为0,m的值为0,又由于逻辑与运算符&&的短路原则,第1个表达式的值为假,因此整个表达式的值已经确定为假,第2个表达式不会被执行,n的值依然是2。本题答案为C选项。

6.B关系之间的操作分为自然连接、投影、交、并、差等,由图可知此操作为差操作。

7.B

8.A本题中使用了函数的调用,由funl函数中的while循环可知,循环的作用是为了把q所指向的内容增加1,而从主函数传到函数时是从下标为3开始传,因此当调用函数执行完后,传过去的字符串为hsbn,前面不变。

9.C

10.C

11.C在C语言中,用整型格式输出字符时,输出的是其ASCII码值。

12.A

13.B解析::串的长度定义为串中字符的数目。所以B)为正确答案。C)答案不正确,因为串中可以含有相同的字符;A)答案不正确,因为串中可能含有相同的字母,而且也可能含有数字等其他非字母字符;D)答案不正确,因为空格也是一种字符,在计算长度时理应将其计算在内。

14.A宏替换是在编译阶段前的预处理阶段,对程序中的宏完成文本替换,因此宏替换不占用运行时间,选项A正确;预处理命令行无须在源文件的开头,它可以出现在程序的任何一行的开始部位,其作用一直持续到源文件的末尾,选项B错误;在源文件的一行上至多只能有一条预处理命令,选项C错误;宏名通常使用大写字母表示,这并不是语法规定,只是一种习惯,选项D错误。本题答案为A选项。

15.B解析:在C中对文件操作必须先打开文件,待文件操作完毕后要关闭文件。对文件以读的方式进行打开操作时,同时会执行文件的检查文件是否存在,不存在将会返回空的文件指针,如果对文件以写的方式打开时,文件不存在,将会自动创建文件,因此在C中打开文件前不必对其检查文件是否存在,故答案为B。

16.A解析:在不带头结点的单链表head中,head指向第一个元素结点,head=NULL表示该链表为空,所以答案为A。

17.A

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

19.D

20.B

21.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1

22.模式或逻辑模式或概念模式模式也称逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,例如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等。

23.main()0a[j]=0count<25

24.16111611解析:本题主要考查宏定义的两种形式,不带参数的宏定义:“#define宏名替换文本”;带参数的宏定义:“#define宏名(形参表)替换文本”。故i=((1+1)*8)=16,j=(1+1*10)=11。

25.对象对象解析:类描述的是具有相似性质的一组对象。例如,每本具体的书是一个对象,而这些具体的书都有共同的性质,它们都属于更一般的概念“书”这一类对象。一个具体对象称为类的实例。

26.m<n或n>mr或r!=0m<n或n>m\r\nr或r!=0解析:本题使用的是“辗转相除”法求两个数的最大公约数,即以两个数中较大的除以较小的,如果余数不为0,则将较小的数和余数做同样处理,直到被除断为止,此时较小的数就是两个数的最大公约数。本题第一空要求填写一个if语句的判断条件,如果满足此条件则交换m和n的值,再看后面while循环的循环体,使用m%n求余,则此if语句的作用应该是保证m是两个数中较大的那个,故第一空填m<n或n>m。接下来的while循环实现整个辗转相除的过程,其结束条件应该是余数r为0,所以while的循环条件应该填r或r!=0。

27.8080解析:本题考查的知识点是共用体数组变量所占内存的长度。数组a是共用体变量,共用体类型变量所占的内存长度为最大成员的长度,即单精度数组的长度,为4×4=16,因此,数组a所占的内存长度为5×16=80,所以最后输出的s的值为80。

28.5454解析:语句if(!(i%5))printf('\\n');实现每5个数输出一行,因为n的值为24,所以共输出5行,最后一行有4个数。

29.类类解析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。

30.rb或"r+b"或"rb+"rb或'r+b'或'rb+'解析:根据题目要求,在下划线位置应该填入一个能实现二进制读的使用文件方式的参数即可。所以,可以填'rb'或'r+b'或'rb+'。

31.buf的首地址buf的首地址解析:考查fsets()函数的功能,f8ets()函数用来从文件中读入字符串。调用格式为:f8ets(buf,n,fp)。此处,fp是文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函数fsets()时,最多能读入n-1个字符,系统自动在最后加字符串结束标志,并以buf作为函数值返回。

32.1-21,-2解析:题中外层while循环的循环条件是y--!=-1,即y>=0;内层do…while循环的循环条件是y--即y-->0,y>=1。注意:break和continue语句在循体中的作用。

33.“filea.dat”“r”“filea.dat”,“r”解析:考查对文件的操作。fopen函数的调用方式通常为fopen(文件名,使用文件方式)。本题中要求程序可以打开filea.dat文件,并且是要读取文件中的内容,所以空白处应当填入'filea.dat','r'。

34.自然连接自然连接解析:在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。

35.整型整型解析:上面的表达式中,通过强制类型转换把最后参与运算的数据都转换成了int型,所以最后得到的结果也是int类型。

36.12341234解析:在%与格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插入的宽度小于实际的宽度时,则实际的宽度输出。

37.解析:本题考查文件读写函数fread和fwrite的用法。fwrite函数将数组a的前5个元素输出到文件fp中两次,共10个字节,再调用fread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0,0,1,2,3,0,)},最后的输出结果为“1,2,3,0,0,1,2,3,0,0,”。

38.操作系统或OS操作系统或OS解析:数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务。位于用户和操作系统之间。

39.1F1F解析:11=0,01=1,实现了按位的求反。

40.3232解析:while(表达式)的功能是:首先计算表达式的值,若为真,则执行循环体语句,执行完毕,再计算表达式的值,若仍为真,则重复执行循环体语句,直到表达式的值为假时,结束while语句的执行,继续执行while语句后面的语句:i=0时满足循环条件,也满足if的条件,执行语句得i=11,a=11,第2次循环不满足if的条件,执行i--,i=10,执行i+=11;a+=i后,得i=21,a=32,不满足i<20,循环结束。

41.B解析:算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。算法具有五个重要特性:

①有穷性:一个算法必须总是在执行有限步之后结束,且每一步都可在有限时间内完成。

②确定性:算法中每一步骤都必须有明确的定义,不允许有模棱两可的解释,也不允许有多义性,对于相同的输入只能得出相同的输出。

③可行性:算法中描述的操作可以通过已经实现的基本运算执行有限次来实现。

④输入:一个算法有零个或多个的输入。

⑤输出:一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。

42.B解析:本题考查ifelse语句。程序中首先使用函数scanf()通过键盘读入a的值,并通过第1个if语句,先判断条件,取a的值2和3比较,然后将a的值加1,发现条件成立,执行下列的printf语句,输出a的值3。

43.A解析:对象是面向对象方法中最基本的概念,对象可以用来表示客观世界中的任何实体,因此需要很清楚的理解对象的概念。因为客观世界的实体通常都具有静态跟动态的属性,所以对象也具有有静态和动态的属性,操作是对象的动态属性,属性是对象的静态属性。对象是属性和方法的封装体。面向对象是通过对象与对象间彼此的相互合作来推动的,对象间的相互合作需要传递消息。对象可以有继承性,但并不是任何对象都必须有继承性。

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

45.A解析:(rec4,rec5)是逗号表达式,它的值是rec5的值。所以该函数调用语句含有的实参个数是3。

46.B解析:选项A的错误在于,先已经把q结点给释放,无法再进行余下语句了:选项C和D的错误在于因为有了q=(*q).next做了赋值,则free(q)释放了原来q后面的一个结点。

47.B

48.D解析:算法的时间复杂度是指执行算法所需要的计算工作量。

49.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。

50.D解析:本题考查函数的调用。在有参函数调用中,是将主调函数的实参值传给被调函数的形参。按函数在程序中出现的位置来分,有以下三种函数调用形式:

①函数调用作为一条语句。例如:fun();这时不要求函数带回值,只要求函数完成一定的操作。故选项A)正确。

②函数出现在表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。例如:c=5*max(a,b);函数max是表达式的一部分,将其值乘以5后赋给c。故选项C)正确。

③函数调用作为一个函数的实参,例如:m=max(a,max(b,c));其中max(b,c)是一次函数调用,它的值作为max另一次调用的实参。故选项B)正确。

函数调用不可作为一个函数的形参,因为函数调用参数的数据传递是单向传递,即实参传给形参,不能由形参传给实参。故选项D)错误。

51.BB。【解析】程序的三种基本控制结构包括:顺序、选择和重复(循环),这三种结构就足以表达出各种其他形式的结构。

52.A解析:在函数的形参中使用int*类型和使用int[]类型并无区别,两者都可用宋传递数组名或指针变量,所以func()函数的形参是两个指针a和b,又因为b[0]亦可写成*b,所以表达式b[0]=*a+6也可以写成*b=*a+6,其意思是:将a所指内容加上6赋给b所指内容。所以主函数中对func()的调用func(&a,b)可看成b[0]=a+6,所以最后b[0]的结果为6。正确答案为选项A。

53.B

54.D解析:在面向对象方法中;对象之间通过消息进行通信。消息中只包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎么完成这些处理,接受者独立决定采用什么方式完成所需的处理。

55.A解析:main函数中将定义的结构体类型指针变量p指向结构体类型数组s[1],通过调用函数f改变了指针变量p所指向的结构体中成员变量name的值,但并未改变其num的值。这是因为函数f中的形参name是一个字符型指针变量,它指向了main函数中指针变量p所指向的结构体的成员变量name,所以对函数f中的形参*name的改变也就对main函数中p->name的改变,而函数f中对形参num的改变不会影响main函数中p-?num的值,因为此时传递给num的是一个值,而不是地址。

56.D解析:在选项中很明显选项A为无符号短整型,选项B为无符号长整型,选项C为无符号整型,而选项D的类型在C语言中不存在。

57.D解析:选项A:'a'&&'b'是字符a与b的相与,不为0:选项B:a<=b,由题中变量赋值可知,结果为1。选项C:a||+c&&b-c,结果为1;选项D:!((a<B)&&!c||1),运算结果为0。

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

59.A解析:在第一次执行for循环时,字符数组的首地址赋给了指针变量p,使得指针变量p指向了s的首地址,输出p所指向的字符串;第二次执行for循环时,p值增加1,p指向了s的第二个元素输出BCD;第三次输出CD;第四次输出D;直到P指向字符串的结束字符“\\0”,for循环终止抽行。

60.B解析:本题涉及字符串最基本的两个概念:①字符串的长度是指字符串中字符的个数,但不包括字符串结束符;②以反斜杠“\\”开头的特殊字符序列,意思是把反斜杠后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,“\\”连同后面的字符为一个长度。

61.D

62.B本题考查逻辑表达式“||”的求解过程。

在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是必须执行该逻辑表达式时才求出表达式的解。“||”为逻辑或运算,只有当该运算符左右两边的表达式都为假时(值为0),该逻辑运算的值才为假。只要有一个表达式为真,则该逻辑运算的值就为真。

进行逻辑或运算时,只要运算符左边的表达式为真(值不为0),则不用运行运算符右边的表达式。

题目中,初始时x、y、z的值都为1,运算符“||”左边为表达式++x,右边为表达式(++y&&++z)。程序运行时先判断表达式++x的值,该值为2,故该逻辑运算值为真,不需要执行运算符右边的表达式。

63.D

64.C本题的含义是在1—40的蔓敦的范围中,只有当i的值能被5整除,且i+2的值能被3薹纛时,打印i的值,满跫这个条件的只有32,选择c选项。

65.B

66.C解析:软件生命周期由软件定义、软件开发和软件维护三个时期组成,每个时期又进一步划分为若干个阶段。软件定义时期的基本任务是确定软件系统的工程需求。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由下面五个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。即当软件在使用过程中发现错误时应加以改正;当环境改变时应该修改软件,以适应新的环境;当用户有新要求时应该及时改进软件,以满足用户的新要求。根据上述对软件生命周期的介绍,可知选项C中的软件维护不是软件生命周期开发阶段的任务。因此,本题的正确答案是C。

67.D本题j=要是考查带参数的宏的定义,过程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。

68.B

69.A

70.DD选项中+f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。

71.C本题考套的是宏定义。对带参数的宏的

展开只是将语句中宏名后面括号内的实参字符串代替#define命令行中的形参。本题中“i1=f(8)/f(4)”用"#definef(x)(x*x)"代替得i1=(8*8)/(4*4),结果为4;

"i2=f(4+4)/f(2+2)"用“#definef(x)(x*x)”代替得i2=(4+4+4+4)/(2+2+2+2),求得结果为3。故本题输出的值为4,3

72.A

73.A

74.B

75.B

76.B

77.C算法复杂度包括时间复杂度和空间复杂度,算法的时间复杂度是指执,亍算法所需要的计算机工作量,即算法执行过程中所需要的基本运算次数。

78.C

79.A函数ehmlge()的作用将从数组尾部将数组内的元素值加1。数组的初始值为ABCD,因此经change()后,得到的值为BCDE。故答案为A选项。

80.B运算符的优先级;首先计算20-0=0,0<=i成立,结果为1.1<=9成立,所以最后结果还是1.

81.

82.

【解析】根据题目中要求删除字符串中所有的*号,需要检查字符串中的每一个字符,将不是*号的字符放入原来的字符串中,形成新的字符串,最后在新的字符串的末尾加上结束符。

2022-2023年浙江省湖州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.若有以下语句:typedefstructS{intg;charh;}T;以下叙述中正确的是()。A.可用S定义结构体变量B.可用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量

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

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

B.函数可以返回地址值

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

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

3.若有定义和语句:inta,b;scanf("%d,%d",&a,&b);以下选项中的输人数据,不能把值3赋给变量a、5赋给变量b的是()。A.3,5,B.3,5,4C.3,5D.3,5

4.以下符合C语言语法的赋值表达式是()。

A.d=9+e+f=d+9B.d=9+e,f=d+9C.d=9十e,e++,d十9D.d=9十e++=d十7

5.若有定义“inta=1,b=2,c=3,d=4,m=2,n=2;”,则执行“(m=a>b)&&(n=c>d)”后n的值是()。

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

6.有3个关系R、S和T如下.

则由关系R和S得到关系T的操作是()。A.自然连接B.差C.交D.并

7.用邻接矩阵A表示有向图G的存储结构,则有向图G中顶点i的入度为()。

A.第i行非0元素的个数之和B.第i列非0元素的个数之和C.第i行0元素的个数之和D.第i列0元素的个数之和

8.有以下程序:voidfunl(char*p)程序执行后的输出结果是()A.ProhsbnB.PrphsbnC.ProgsbnD.Program

9.在目标串T[0,n-1]=”xwxxyxy”中,对模式串p[0,m-1]=”xy”进行子串定位操作的结果_______

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

10.设s1="Good",s2="",s3="Bye",则s1、s2和s3连接后的结果是()。

A.GoodB.GoodByeC.GoodByeD.Bye

11.已知字符A的ASCⅡ代码值是65,字符变量c1的直是A,c2的值是D。执行语句printf("%d,%d",c1,c2-2);后,输出结果是()。

A.A,BB.A,68C.65,66D.65,68

12.在数据结构中,与所使用的计算机无关的是数据的()结构。

A.逻辑B.存储C.逻辑和存储D.物理

13.串的长度是指()。

A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数

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

A.宏替换不占用程序的运行时间

B.预处理命令行必须位于源文件的开头

C.在源文件的一行上可以有多条预处理命令

D.宏名必须用大写字母表示

15.下述关于C语言文件的操作的结论中,正确的是______。

A.对文件操作必须先关闭文件

B.对文件操作必须先打开文件

C.对文件操作顺序无要求

D.对文件操作前必须先测文件是否存在,然后再打开文件

16.不带头结点的单链表head为空的判定条件是()。A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL

17.程序中主函数的名字为()。

A.mainB.MAINC.MainD.任意标识符

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

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

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

20.输入序列为ABC,输出为CBA时,经过的栈操作为()。

A.push,pop,push,pop,push,pop

B.push,push,push,pop,pop,pop

C.push,push,pop,pop,push,pop

D.push,pop,push,push,pop,pop

二、2.填空题(20题)21.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。

strcen(chara[],charb[])

{intnum=0,n=0;

while(*(a+num)!=【】)num++;

while(b[n]){*(a+num)=b[n];num++;【】;}

return(num);

}

22.数据的逻辑结构在计算机存储空间中的存放形式称为数据的【】。

23.由25人围坐成圆圈,先从任意一人出发用1到25顺时针依次编号,然后从1号开始顺时针报数(1、2、3…),凡报5的倍数者出圈,剩下者继续报数,求出最后出圈者的编号。

#include<stdio.h>

【】

{inta[26],j,n,count;

for(j=1;j<=25;j++)a[j]=j;

j=1;count=0;n=【】;

do

{if(a[j]!=0)

{n++;

if(n%5==0)

{【】;

if(count==24)printf("%d\n",j);

count++;

}

}

j++;

if(j>25)j=1;

}

while(【】);

}

24.下面程序由两个源程序文件:t4.h和t4.c组成,程序编译运行结果是()。t4.h的源程序为:

#defineN10

#definef2(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);

}

25.在面向对象方法中,类的实例称为______。

26.下面程序的功能是求整数m、n的最大公约数,请填空。

main()

{intm,n,r;

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

if(【】){r=m;m=n;n=r;)

while(【】)

{r=m%n;m=n;n=r;}

printf("%d",m);

}

27.下面程序的运行结果是______。

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

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

}

28.若变量n的值为24,则print函数共输出【】行,最后一行有【】个数。

voidprint(intn,intaa[])

{inti;

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

{printf("%6d",aa[i]);

if(!(i%5))printf("\n");

}

printf("\n");

}

29.在面向对象的方法中,______描述的是具有相似属性与操作的一组对象。

30.有以下程序,其功能是:以二进制“写”方式打开文件d1.dat,写入1~100这100个整数后关闭文件。再以二进制“读”方式打开文件d1.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。

#include<stdio.h>

main()

{FILE*fp;

inti,a[100],b[100];

fp=fopen("d1.dat","wb");

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

fwrite(a,sizeof(int),100,fp);

fclose(fp);

fp=fopen("d1.dat",【】);

fread(b,sizeof(int),100,fp);

fclose(fp);

for(i=0;i<100;i++)printf("%d\n",b[i]);

}

31.函数调用语句:“fgets(buf,n,fp);”从中指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。

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

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

33.以下程序的功能是从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(【】);

ch=fgetc(fp);

while(!feof(fp)){putchar(ch);ch=fgetc(fp);}

putchar('\n');fclose(fp);

}

34.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。

35.表达式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的数据类型为______。

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

inta=1234;

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

37.以下程序的运行结果是______。

#include<stdio.h>

main()

{FILE*fp;inta[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wbt");

fwtite(a,sizeof(int),5,fp);

fwlite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat","rb");

fread(a,sizeof(int),10,fp);

fclose(fp);

for(i=0;i

38.在计算机软件系统的体系结构中,数据库管理系统位于用户和【】之间。

39.已知a为8位二进制数,要想通过ab运算使a的低5位变反(即0变1,1变0),高3位不变,b的值应为【】。

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

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;

a+=i;

}

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

}

三、1.选择题(20题)41.一个算法应该具有“确定性”等五个特性,下面对另外四个特性的描述中错误的是()。

A.有零个或多个输入B.有零个或多个输出C.有穷性D.可行性

42.若执行下列程序时从键盘上输入2,则输出结果是()。#include<stdio.h>main(){inta;scanf("%d",&a);if(a++<3)printf("%d\n",a);elseprintf("%d\n",a--);}

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

43.下面对对象概念描述错误的是()。

A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通信靠消息传递D.操作是对象的动态属性

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

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

45.有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是______。

A.3B.4C.5D.有语法错误

46.假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是______。

A.free(q);p->next=q->next;

B.(*p).next=(*q).next;free(q);

C.q=(*q).next;(*p).next=q;free(q);

D.q=q->next;p->next=q;p=p->next;free(p);

47.阅读程序:main(){intx;scanf("%d',&x);if(x--<5)printf("%d\n",x);elseprintf("%d\、n",x++);}程序运行后,如果从键盘上输入5,则输出结果是()

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

48.下列叙述中,不正确的是

A.算法的执行效率与数据的存储结构有关

B.算法的空间复杂度是指执行这个算法所需要的内存空间

C.算法的有穷性是指算法必须能在执行有限个步骤之后终止

D.算法的时间复杂度是指执行这个算法所需要的时间

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

A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.在C的函数中,最好使用全局变量

C.外部变量可以在函数之间传递数据

D.自动变量实质上是一个函数内部的局部变量

50.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A.函数调用可以作为独立的语句存在

B.函数调用可以作为一个函数的实参

C.函数调用可以出现在表达式中

D.函数调用可以作为一个函数的形参

51.结构化程序设计的3种基本结构是()。

A.过程、子程序和分程序B.顺序、选择和重复C.递归、堆栈和队列D.调用、返回和转移

52.下面程序:voidfunc(int*a,intb[]){b[0]=*a+6;)main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}则程序运行后的输出结果是()。

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

53.下列程序的输出结果是______。inti=010,j=10;printf("%d,%d\n",++i,j--);

A.11,10B.9,10C.010,9D.10,9

54.在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送()。

A.调用语句B.命令C.N令D.消息

55.有以下程序:#include<stdio.h>#include<strine.h>structSTU{charname[10];inthum;};voidf(char*name,ihtnum){structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};num=s[0].nnm;strepy(name,s[0],name);}main(){structSTUs[2]={{"YangSan",20041},{"LiSiGao",20042}},*P;p=&s[1];f(p->name,p->hum);printf("%s%d\n",p->name,p->num);}程序运行后的输出结果是()。

A.SunDan20042B.SunDan20044C.LiSiGuo20042D.YangSan20041

56.以下选项中不属于C语言的类型的是

A.signedshortint

B.unsignedlongint

C.unsignedint

D.longshort

57.设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。

A.'a'&&'b'

B.a<=b

C.a||+c&&b-c

D.!((a<b)&&!c||1)

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

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

59.下面程序的输出是______。chars[]="ABCD";main(){char*p;for(p=s;p<s+4;p++)printf("%s\n",p);}

A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA

60.字符串"\\\"ABCDEF\"\\"的长度是()。

A.15B.10C.7D.8

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

main()

{inta[3][3],*p,i;

p=&a[1][1];

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

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

}

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

A)3B)6

C)9D)2

62.设x,y,z均为整型变量,现有如下语句x=y=z=1;(++x||(++y&&++z));,则执行这个语句后y的值为

A.2B.1C.0D.不定值

63.(21)算法的空间复杂度是指______。

A.算法程序的长度

B.算法程序中的指令条数

C.算法程序所占的存储空间

D.算法执行过程中所需要的存储空间

64.有以下程序:

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

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

65.

66.下列选项中不属于软件生命周期开发阶段任务的是()。

A.软件测试B.概要设计C.软件维护D.详细设计

67.执行下述程序后,输出的结果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

68.

69.

70.有以下程序:

则以下函数调用语句错误的是()。

A.k:f(a,B.;B.k:add(a,B.;C.k=(*f)(a,B.;D.k=*(a,B.;

71.有以下程序:

#definef(x)(x*x)main

{

inti1,i2;

i1=f(8)/(4);i2=f(4+4)/f(2+2);

printf("%d,%d\n",i1,i2);

}

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

A.64,28B.4,4C.4,3D.64,64

72.

73.

74.

75.

76.

77.算法的时间复杂度是指()。

A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程所需要的基本运算次数D.算法程序中的指令条数

78.

79.有以下程序:

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

A.B,C,D,E,B.A,B,C,D,C.C,D,E,F,D.B,D,F,H,

80.已知inti=10;表达式“20-0<=i<=9”的值是()。

A.0B.1C.19D.20

五、程序改错题(1题)81.程序改错题(共l8分)下列给定程序中,函数fun的功能是:传人一个整数m,计算如下公式的值。例如,若输入5,则应输出一0.283333。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.请编写一个函数,用来删除字符串中的所有*。例如,输入abc*de*f*gh,则输出为abcdefgh。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B解析:语句typedefstructS{intg;charh;}T的作用是用T作为struetS{intg;charh;)的简写,所以选B。

2.C指针变量的值只能是存储单元地址,而不能是一个整数,故选项C错误。

3.C在输入3和5之间除逗号外不能有其他字符。

4.B

5.C对于表达式“(m=a>b)&&(n=c>d)”,首先执行m=a>b,由于a、b的值分别为1、2,因此a>b的值为0,m的值为0,又由于逻辑与运算符&&的短路原则,第1个表达式的值为假,因此整个表达式的值已经确定为假,第2个表达式不会被执行,n的值依然是2。本题答案为C选项。

6.B关系之间的操作分为自然连接、投影、交、并、差等,由图可知此操作为差操作。

7.B

8.A本题中使用了函数的调用,由funl函数中的while循环可知,循环的作用是为了把q所指向的内容增加1,而从主函数传到函数时是从下标为3开始传,因此当调用函数执行完后,传过去的字符串为hsbn,前面不变。

9.C

10.C

11.C在C语言中,用整型格式输出字符时,输出的是其ASCII码值。

12.A

13.B解析::串的长度定义为串中字符的数目。所以B)为正确答案。C)答案不正确,因为串中可以含有相同的字符;A)答案不正确,因为串中可能含有相同的字母,而且也可能含有数字等其他非字母字符;D)答案不正确,因为空格也是一种字符,在计算长度时理应将其计算在内。

14.A宏替换是在编译阶段前的预处理阶段,对程序中的宏完成文本替换,因此宏替换不占用运行时间,选项A正确;预处理命令行无须在源文件的开头,它可以出现在程序的任何一行的开始部位,其作用一直持续到源文件的末尾,选项B错误;在源文件的一行上至多只能有一条预处理命令,选项C错误;宏名通常使用大写字母表示,这并不是语法规定,只是一种习惯,选项D错误。本题答案为A选项。

15.B解析:在C中对文件操作必须先打开文件,待文件操作完毕后要关闭文件。对文件以读的方式进行打开操作时,同时会执行文件的检查文件是否存在,不存在将会返回空的文件指针,如果对文件以写的方式打开时,文件不存在,将会自动创建文件,因此在C中打开文件前不必对其检查文件是否存在,故答案为B。

16.A解析:在不带头结点的单链表head中,head指向第一个元素结点,head=NULL表示该链表为空,所以答案为A。

17.A

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

19.D

20.B

21.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1

22.模式或逻辑模式或概念模式模式也称逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,例如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等。

23.main()0a[j]=0count<25

24.16111611解析:本题主要考查宏定义的两种形式,不带参数的宏定义:“#define宏名替换文本”;带参数的宏定义:“#define宏名(形参表)替换文本”。故i=((1+1)*8)=16,j=(1+1*10)=11。

25.对象对象解析:类描述的是具有相似性质的一组对象。例如,每本具体的书是一个对象,而这些具体的书都有共同的性质,它们都属于更一般的概念“书”这一类对象。一个具体对象称为类的实例。

26.m<n或n>mr或r!=0m<n或n>m\r\nr或r!=0解析:本题使用的是“辗转相除”法求两个数的最大公约数,即以两个数中较大的除以较小的,如果余数不为0,则将较小的数和余数做同样处理,直到被除断为止,此时较小的数就是两个数的最大公约数。本题第一空要求填写一个if语句的判断条件,如果满足此条件则交换m和n的值,再看后面while循环的循环体,使用m%n求余,则此if语句的作用应该是保证m是两个数中较大的那个,故第一空填m<n或n>m。接下来的while循环实现整个辗转相除的过程,其结束条件应该是余数r为0,所以while的循环条件应该填r或r!=0。

27.8080解析:本题考查的知识点是共用体数组变量所占内存的长度。数组a是共用体变量,共用体类型变量所占的内存长度为最大成员的长度,即单精度数组的长度,为4×4=16,因此,数组a所占的内存长度为5×16=80,所以最后输出的s的值为80。

28.5454解析:语句if(!(i%5))printf('\\n');实现每5个数输出一行,因为n的值为24,所以共输出5行,最后一行有4个数。

29.类类解析:在面向对象的方法中,把具有相同属性和方法的对象称为类,类是对象的抽象,对象是类的实例。

30.rb或"r+b"或"rb+"rb或'r+b'或'rb+'解析:根据题目要求,在下划线位置应该填入一个能实现二进制读的使用文件方式的参数即可。所以,可以填'rb'或'r+b'或'rb+'。

31.buf的首地址buf的首地址解析:考查fsets()函数的功能,f8ets()函数用来从文件中读入字符串。调用格式为:f8ets(buf,n,fp)。此处,fp是文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函数fsets()时,最多能读入n-1个字符,系统自动在最后加字符串结束标志,并以buf作为函数值返回。

32.1-21,-2解析:题中外层while循环的循环条件是y--!=-1,即y>=0;内层do…while循环的循环条件是y--即y-->0,y>=1。注意:break和continue语句在循体中的作用。

33.“filea.dat”“r”“filea.dat”,“r”解析:考查对文件的操作。fopen函数的调用方式通常为fopen(文件名,使用文件方式)。本题中要求程序可以打开filea.dat文件,并且是要读取文件中的内容,所以空白处应当填入'filea.dat','r'。

34.自然连接自然连接解析:在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。

35.整型整型解析:上面的表达式中,通过强制类型转换把最后参与运算的数据都转换成了int型,所以最后得到的结果也是int类型。

36.12341234解析:在%与格式符之间插入一个整形数来指这输出宽

温馨提示

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

评论

0/150

提交评论