2022-2023年广东省揭阳市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2022-2023年广东省揭阳市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2022-2023年广东省揭阳市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2022-2023年广东省揭阳市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2022-2023年广东省揭阳市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年广东省揭阳市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为()。

A.0~255B.0~32767C.0~65535D.0~2147483647

2.以下叙述中正确的是()。A.A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D.c语言中的文件是流式文件,因此只能顺序存取数据

3.设a,b,c,d,m和n均为int型变量,且a=5,b=6,c=7,d=m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为()

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

4.以下选项中能用作数据常量的是()。

A.115LB.0118C.1.5e1.5D.o115

5.有以下程序:#include<stdio.h>main(){inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3:print[("%d\n",b);}程序运行后的输出结果是()。A.0B.1C.2D.3

6.

7.定义学生选修课程的关系模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其属性分别为学号、姓名、课程号、课程名、成绩、学分)则对主属性部分依赖的是()。

A.C#→CnB.(S#,C#)→GC.(S#,C#)→S#D.(S#,C#)→C#

8.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是A.并B.交C.投影D.笛卡儿乘积

9.若一组记录的排序码为(7,9,3,5,1,2,10),则利用堆排序的方法建立的初始堆为()

A.10,7,9,3,5,1,2

B.10,9,7,5,1,2,3

C.10,9,7,5,3,2,1

D.10,9,7,3,2,1,5

10.下列叙述中错误的是()。A.在程序中凡是以“#”开始的语句行都是预处理命令行

B.预处理命令行的最后不能以分号表示结束

C.#defineMAX是合法的宏定义命令行

D.C程序对预处理命令行的处理是在程序执行的过程中进行的

11.如果要求一个线性表既能较快地查找,又能适应动态变化的要求,可以采用下列哪一种查找方法()

A.分块B.顺序C.折半D.哈希

12.

13.设有一个栈,元素依次进栈的顺序为A、B、C、D、E。下列()是不可能的出栈序列。

A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A

14.若在线性表中采用折半查找法查找元素,该线性表应该()A.元素按值有序B.构采用顺序存储结C.元素按值有序且采用顺序存储结构D.元素按值有序且采用链式存储结构

15.

16.设变量已正确定义,则以下能正确计算n!的程序段是______。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;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;

17.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序运行后的输出结果是()。

A.1B.2C.4D.死循环

18.设”inta=15,b=26;”,则”printf(“%d,%d”,a,b);”的输出结果是()。

A.15B.26,15C.15,26D.26

19.下列程序是用来判断数组中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun

A.7,431B.6C.980D.6,980

20.下列程序的输出的结果是()。main{doubled=3.2;intx,Y;x=1.2;v=(x+3.8)/5.0;printf("%d\n",d*y);}A.3B.3.2C.0D.3.07

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

main()

{charc=′z′;

printf("%c",c-25);}

22.有如图所示的双链表结构,请根据图示完成结构体的定义:

structaa

{intdata;

【】}node;

23.在结构化分析使用的数据流图(DFD)中,利用【】对其中的图形元素进行确切解释。

24.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));}

25.耦合和内聚是评价模块独立性的两个主要标准,其中______反映了模块内各成分之间的联系。

26.求任意一个数(用16位二进制码表示)的补码。

main()

{

unsignedinta;

【】;

scanf("%o",&a);

printf("%o\n",getbits(a));

}

unsignedintgetbits(value)

unsignedintvalue;

{

unsignedintz;

z=【】;

if(z==0100000)

【】;

else

z=value;

return(z);

}

27.下列程序执行输出的结果是______。

#include<stdio.h>

f(intA)

{intb=0;

staticc=7;

a=c++;b++;

return(A);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

28.软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于______中的一个阶段。

29.有以下程序:

main()

{intt=1,i=5;

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

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

}

执行后的输出结果是【】。

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

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,e+d)*10;

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

}

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

#include<stdio.h>

main()

{inta=2,b=-1,C=2;

if(a<B)

if(b<O)c=0;

elsec++;

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

}

32.下列程序的运行结果是______。

#include<stdio.h>

main()

{inta=10,b=3;

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

printf("%d,",(a-h,a+b));

printf("%d\n",a-b?a-b:a+b);

}

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

34.以下程序的输出结果是()。#definePR(ar)printf("ar=%d”,ar)main(){intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

36.有以下程序

main()

{intt=1,i=5;

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

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

}

执行后输出结果是______。

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

#include<string.h>

typeaefstructstudent{

charname[10];

longsno;

floatscore;

{STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(a.name,b.name)>0)d=b;

if(strcmp(C.name,)>0)d=C;

printf("%1d%s\n",d.sno,p->name);

}

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

39.下列的for语句的循环次数为______。

for(x=1,y=0;(y!=19)&&(x<7);x++);

40.下列程序的运行结果是______。

#include<stdio.h>

longfunc(intx)

{longp;

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

return(1);

p=x*func(x-1);

return(p);

}

main()

{printf("%d\n",func(4));

}

三、1.选择题(20题)41.有以下程序:main(){intn=0,m=l,x=2;if(!n)x-=l:if(!m)x-=2;if(!x)x-=3;printf("%d\n",x);}执行后的输出结果是______。

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

42.C语言函数返回值的类型是由______决定的。

A.return语句中的表达式类型B.调用函数的主调函数类型C.调用函数时临时D.定义函数时所指定的函数类型

43.下列程序的运行结果为

#include<stdio.h>

voidabc(char*str)

{inta,b;

for(a=b=0;str[a]!='\0';a++)

if(str[a]!='c')

str[b++]=str[a];

str[b]='\0';}

voidmain()

{charstr[]="abcdef";

abc(str);

printf("str[]=%s",str);}

A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab

44.假定所有变量均已正确说明,下列程序段运行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

45.与十进制数96等值的二进制是()

A.1100000B.10010110C.1100001D.1100011

46.以下选项中非法的表达式是

A.0<=x<100B.i=i==0C.(char)(65+3)D.x+1=x+1

47.若定义inta=10,则表达式a+=a-=a*=a的值是()。

A.0B.-180C.-100D.-90

48.在数据处理中,其处理的最小单位是()。

A.数据B.数据项C.数据结构D.数据元素

49.已知、棵二叉树的后序遍历序列是dabec,中序遍历序列是debac,则它的前序遍历序列是()。

A.acbedB.decabC.deabcD.cedba

50.函数fseek的正确调用形式是()。

A.fseek(位移量,起始点,文件类型指针);

B.fseek(文件类型指针,位移量,起始点);

C.fseek(文件类型指针,起始点,位移量);

D.fseek(起始点,位移量,文件类型指针);

51.有以下程序:#include<stdio.h>inta=1;intfun(intC){staticinta=2;c=c+1;return(a++)+c;}main(){inti,k=0;for(i=0;i<2;i++){inta=3;k+=f(A);}k+=a;printf("%d\n",k);}程序的运行结果是()。

A.14B.15C.16D.17

52.在C语言的循环语句for、while、do-while中,用于结束本次循环,继续执行下一次循环的语句是______。

A.switchB.breakC.continueD.goto

53.若有以下类型说明语句:charw;intx;floaty,z;则表达式w*x+z-y的结果为______类型。

A.floatB.charC.intD.double

54.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为()

A.0B.1C.-1D.一个非0值

55.若执行下面程序时从键盘上输入5,main(){intx;scanf("%d",&x);if(x++>5)printf("%d\n",x);elseprintf("%d\n",x-);}则输出是_______。

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

56.已定义c为字符型变量,则下列语句中正确的是()。

A.c='97'B.c="97"C.c=97D.c="a"

57.计算机软件一般包括应用软件和____。

A.字处理软件B.系统软件C.服务性软件D.操作系统

58.在计算机中,算法是指()。

A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法

59.需求分析阶段的任务是()

A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能

60.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

四、选择题(20题)61.以下选项中值为1的表达式是()。

A.

B.

C.

D.

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

A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对

63.有以下程序:

main

{chara='a',b;

printf("%c,",++a);

printf("%c\n",b=a++):

)

程序运行后的输出结果是()。A.A.b,bB.b,cC.a,bD.a,c

64.数据库管理系统是()。

A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统

65.

66.有以下函数intaaa(char*s){char*t=s;while(*t+t);t--:return(t-s);}以下关于aaa函数的功能叙述正确的是()。A.求字符串S的长度B.比较两个串的大小C.将串S复制到串tD.求字符串S所占字节数

67.下列字符串不属于标识符的是()

A.sumB.averageC.day_nightD.M,D.JOHN

68.

69.有如下程序

voidf(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;

}

main()

{inta[6]={1,2,4,6,8,10},i,*p,*q;

p=a;q=&a[5];

while(p<q)

{f(p,q);p++;q--;}

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

printf("%d,",a[i]);

}

该程序的输出结果是

A.1,2,4,6,8,10B.10,8,4,6,2,1

C.10,8,6,4,2,1D.10,2,4,6,8,1

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

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

71.

已知有如下结构体:

structsk

{inta;

floatb;

}data,*p;

若有P=&data,则对data的成员a引用正确的是()。

A.(*p).data.aB.(*p).a;C.p->data.aD.p.data.a

72.若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是

A.EOFB.-1C.1D.NULL

73.下列关于队列的叙述中正确的是()。A.在队列中只能插人数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表

74.有以下程序(函数fun只对下标为偶数的元素进行操作):

#include<stdio.h>

voidfun(int*n)

{inti,j,k,t;

for(i=0;i<n-1;i+=2)

{k=i;

for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;

t[a[i];a[i]=a[k];a[k]=t;

}

}

main

{intaa[lO]=[1,2,3,4,5,6,7],a;

fun(aa,7);

for(i=0;i<7;i++)printf("%d,",aa[i]);

printf("n");

}

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

A.7,2,5,4,3,6,1,

B.1,6,3,4,5,2,7,

C.7,6,5,4,3,2,1,

D.1,7,3,5,6,2,1,

75.

76.

77.

78.

有下列程序:

intfun(intx[],intn)

{staticintsum=0,i:

for(i0;i<n;i++)sum+=x[i];

returnsum;

}

main

{inta[]={1,2,3,4,5),b[]一{6,7,8,9),s=0:

s=fun(a,5)+fun(b,4);printf("%d\n",s):

}

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

A.45B.50C.60D.55

79.请选出以下程序的输出结果()。

A.1234

B.4321

C.0000

D.4444

80.有以下程序:

程序的运行结果是()。

A.0B.10C.20D.出错

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头2个元素进行排序,然后把第3个字符插入到前2个字符中,插入后前3个字符依然有序;再把第4个字符插人到前3个字符中,待排序的字符串已在主函数中赋予。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写一个函数voidproc(char*tt,intpp[]),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串abcdefghxyzabcde“e后,程序的输出结果应该是:222233110000000000000000111。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C

2.AB)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。c)选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可以进行随机读写。故本题答案为A)。

3.C

4.AA选项中“115L”表示长整型数据。B选项是八进制常量的表示方法,但是在八进制中不能含有数字8,所以B选项错误。C选项中e后面应该是整数,而不能是小数1.5,所以C选项错误。D选项中八进制常量应该是以数字“0”开始,而不是以字母“o”开始。故本题答案为A选项。

5.D

6.D

7.A关系SC中的主键是(S#,C#),但C#(课程号)单独就可以决定Cn(课程名),存在着对主键的部分依赖。本题答案为A选项。

8.B并运算的含义是:假设有一个“在校学生信息表”,它包括这样一些字段:学号、姓名、性别、出生日期、籍贯、联系电话,这个表的关系模式可以表示为:校学生信息表(学号,姓名,性别,出生日期,籍贯,联系电话)。还有一个“新生信息表(学号,姓名,性别,出生日期,籍贯,联系电话)”。若要将9月份进校的新生信息加入到“在校学生信息表”中,这样进行的就是并运算。并运算不会改变表的字段(又叫属性)个数,但是会增加记录(又叫元组)个数。交运算的含义是:两个表(要求结构要一模一样)进行交运算取两个表中相同的记录构成一个新表,交运算不会改变表的字段个数,但是一般会减少记录个数。投影运算的含义是:从在“校学生信息表(学号,姓名,性别,出生日期,籍贯,联系电话)”中选取学生的“姓名”和“联系电话”这两个字段,可以构成一个“学生联系表(姓名,联系电话)”,这就是一个投影运算,所以投影运算一般会减少字段(又叫属性)的个数。笛卡儿乘积又叫称乘运算,设有n元关系R和m元关系s,他们分别有P、q个元组,则关系R和关系s的笛卡儿积表示为R×S,该关系是一个n+m元关系,元组个数是PXq。因此本题的正确答案是B。\r\n

9.B

10.C解析:预处理命令行是以“#”开始的语句,预处理命令行的最后不能以分号表示结束,预处理命令行。其中宏定义的字符替换的定义格式为:#define标识符字符串,预处理命令行是在系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。

11.D

12.B

13.C

14.C

15.A

16.D解析:A选项,将f赋值为0,结果得到0,因为0乘任何数都为0;B选项,i<n,计算的是(n-1)!,C选项将陷入死循环。

17.A“--k”是先自减再使用,所以第1次判断条件即while(4),条件为真输出k的值,k=4-3,结果为1;第2次判断条件即while(0),条件为假,结束循环,输出回车换行符。故本题答案为A选项。

18.C

19.D解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。

20.C根据赋值运算的类型转换规则,先将double型的常量l.2转换为int型,因为x的类型是int,则X的值为1;执行语句y=(K+3.8)/5.0时,即先将整型变量X的值1转换为double型1.0,然后3.8相加得4.8,进行除法运算4.8/5.0结果为0.即变量y的值为0,d*Y的值也为0,故选C选项。

21.aa解析:'z'的ASCII码值为122,经过c-25运算后,得97,以字符形式输出是a。

22.structaa*lhead*rchild;structaa*lhead,*rchild;解析:结构体对链表的定义。

23.数据字典或DD数据字典或DD解析:数据流图用来对系统的功能需求进行建模,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。数据词典(DataDictionary,DD)用于对数据流图中出现的所有成分给出定义,它使数据流图上的数据流名字、加工名字和数据存储名字具有确切的解释。

24.structst或exstructst或ex解析:结构体类型数据,其数据成员各自占据不同的存储空间,整个结构体变量所占存储单元的字节数为每一个数据成员所占的存储空间的和。注意:共用体变量所占存储单元字节数的计算。

25.内聚内聚

26.unsignedintgetbits()value&0100000z=~value+1unsignedintgetbits()\r\nvalue&0100000\r\nz=~value+1

27.88解析:第1次for循环,i=0,调用函数f(2),然后将a的值加1,在f()函数中,变量c为static类型,所以c=8:第2次for循环,i=1,调用函数f(3),然后将a的值加1,调用函数f(3)时,a=c++=8,所以k=8。

28.软件开发软件开发解析:软件生命周期分为3个时期共8个阶段:软件定义期(问题定义、可行性研究和需求分析)、软件开发期(系统设计、详细设计、编码和测试)、软件维护期(即运行维护阶段)。

29.00解析:for循环执行完成后t=5×4×3×2×1×0=0。

30.77解析:在C语言中,宏定义是直接替换的,所以在对表达式MAX(a+b,c+d)*l0进行替换后,表达式变为(a+b)>(c+d)?(a+b):(c+d)*10。在这个条件表达式中,(a+b)>(c+d)为真,所以用(a+b)的值作为整个表达式的值(否则用(c+9d)*10)的值作为整个表达式的值),而(a+b)的值为7。所以整个表达式的值为7。

31.22解析:分析程序,a=2,b=-1,c=2时,if语句的表达式a<b不成立,不再往下判断,直接退出if语句,执行后面的输出语句,程序结束。在这个程序中a、b、c的值没做任何改变。

32.11371,13,7解析:本题考查3个知识点:①余数的计算,题中的a=10,b=3,a%b=1:②(表达式1,表达式2)形式的结果为最后一个表达式的值,题中的a=10,b=3,(a-b,a+b)=a+b=13;③条件运算符的使用,题中的a-b?a-b:a+b,判断语句a-b=7不为0,所以执行a-b,结果为7。

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

34.ar=6ar=6ar=13ar=6ar=6ar=13解析:通过*p=a+5将指针P指向a[5],第1次循环,i=3时,switch(3),执行case3,*(-p)-a[4]=6,所以输出ar=6;第2次循环,j=2时,switch(2),执行case2,(*p++)是先引用a[4]的值6,输出ar=6,再将指针P移位指向a[5];第3次循环,j=1时,switch(1),执行case1,case1后没有break语句,接着执行case2,(*p++)是先引用a[5]的值13,输出ar=13,再将指针P移位指向a[6]。

35.11解析:ifelse语句的功能是:若表达式的值为真,执行语句1,并跳过其他语句,执行ifelse语句的下一条语句,若表达式的值为假,跳过语句1,执行语句2,依次往下判断。题中,x=3,y=2,第一个if语句的控制条件x<y就不满足,又没有与之配对的else语句,所以直接执行printf语句,在整个过程中变量z的值都没发生变化。

36.00解析:本题中的for循环共执行了6次,每执行一次将相应i的值相乘,最后当i=-1时停止循环.该for循环执行完后t的值为5*4*3*2*1*0=0,故最后输出I的值为0。

37.2002Shanxian2002Shanxian解析:本题中第一个if语句将结构体变量a.name和结构体变量b.name中较小的那个赋值给结构体变量d,第二个if语句将结构体变量c.name和结构体变量d.name较大的那个赋给结构体变量d。通过函数strcmp比较。strcmp()函数有两个参数,分别为被比较的两个字符串。如果第一个字符串大于第二个字符串返回值大于0,若第一个小于第二个返回值小于0,相等时返回值为0。字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符串,如果遇到某一个字符小,该字符所在的字符串就是较小的字符串。本程序中第一个if语句strcmp(a.name,b.name)>0为真,故将b的值赋给d,第二个if语句strcmp(c.name,d.name)>0为假,故不执行后面的语句,最后d的值为b的值,因此d.sno和p->name的值为2002Shangxian。

38.存储结构

39.66解析:分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。

40.2424解析:本题考查函数的循环调用。p=x*func(x-1),当x=4时,不满足if语句的条件,p=4*func(3),x=3也不满足条件,则func(3)=3*func(2),func(2)=2*func(1),x=1满足条件return(1),则输出结果为4*3*2*1=24。

41.B解析:因n=0,故!n为真,执行语句x-=1得x=x-1=2-1=1;条件!m和!x不成立,所以x=1,正确答案为1。

42.D解析:函数值的类型应当是在定义函数时指定的。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型—致,如果不—致,则以函数类型为准,即函数类型决定返回值的类型。

43.A解析:本题考查了用字符指针引用字符数组中的字符及对字符的操作。函数abc()的for语句执行过程是:从字符指针str所指向的字符数组的第一个元素开始,逐一判断字符是否为'c',若不是就执行一次数组元素的赋值过程,若字符为'c'就不执行。

44.B

45.A

46.D解析:本题考核的知识点是表达式的赋值。选项D中将表达式的值赋给表达式,在c语言中是不允许给表达式赋值的,故选项D是非法的表达式,所以,4个选项中选项D符合题意。

47.B解析:算术运算符的运算规则是:从右到左的原则。所以表达式中先计算a=a-a*(上标)a的值是-90,再计算a=a+a的值是-180。

48.BB)【解析】数据元素是由多个数据项组成,数据是能够被计算机识别、存储和加工处理的信息载体,数据处理的最小单位是数据项。

49.D解析:依据后序遍历序列可确定根结点为c,由中序遍历序列可知其左子树由deba构成,右子树为空;又由左子树的后序遍历序列可知其根结点为e,由中序遍历序列可知其左子树为d,右子树由ba构成,如图所示。由此可知该二叉树的前序遍历序列为选项D)。

50.B解析:改变文件位置的指针函数fseek()的调用形式为:fseek(fp,offset,position);。fseek函数参数说明:“fp”是指向该文件的文件型指针;“offset'’为位移量,指从起始点position.到要确定的新位置的字节数。也就是以起点为基准,向前移动的字节数。ANSIC要求该参数为长整型量;“position”为起始点,指出以文件的什么位置为基准进行移动,position的值用整型常数表示,“0”表示文件的开头,“1”表示文件的当前位置,“2”表示文件的末尾。

51.A解析:本题考查的重点是对static变量以及全局变量的理解。static变量是函数或文件中的永久变量。本题中staticinta=2语句定义了一个static局部变量,编译程序为其生成永久存储单元,即调用函数fun时,其值一直都保存着,而不是使用函数外所赋的值(尽管开头定义了一个同名的全局变量)。在主函数中,for循环进行两次,第一次循环得f(3)=3+1+2=6,从而k+=f(3)=6,第二次循环由于static局部变量a变成了3,从而f(3)的值为7,故k+=f(3)=13,再执行k+=a时,此时a的值为全局变量,其值为1,故k的值为14,选项A是正确的。

52.C解析:循环辅助控制语句有continue;和break;,前者跳过本次循环,进行下一次循环,后者跳出整个循环语句。

53.A解析:在进行运算时,不同类型的数据参加运算,需要先将其转换成同一类型的数据,然后再进行运算。转换的顺序由低到高为:char,short→int→unsigned→long→double←float,故结果为float型。

54.A解析:文件尾测试函数feof()的应用,读取文件时,当文件中的数据全部读完后,文件位置指针将位于文件的结尾。此时如果读数据,将会出现错误。为了保证读写数据的正确性,需要进行文件尾测试,文件尾测试使用函数feof(),它的功能是测试fp指向的文件是否到达文件尾。若到达文件尾,返回值为非0,否则返回值为0。在本题中fP指向的某文件还没有到了文件尾,因此返回0。

55.B解析:根据C语言的语法,x++是使用x之后,再将x的值加1,在if语句中,x的值为5,条件不成立,执行else后面的语句,因为x的值已经加1,为6,所以打印结果为6。

56.C解析:本题考核的知识点是字符型变量的基本概念。用单引号括起来的一个字符称为字符常量,而选项B和选项D中用的是双引号,而用双引号括起来的字符为字符串常量,故选项B和选项D不正确。因为在C语言中,字符常量在存储时,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中,所以C语言使字符型数据和整形数据之间可以通用,选项C正确.而选项A中,给字符型变量赋值时只能赋一个字符,而9,7作为字符时为两个字符且必须分别为单引号括起来,故选项A不正确,所以,4个选项中选项C符合题意。

57.B

58.CC。【解析】计算机算法是指解题方案的准确而完整的描述,它的基本特征分别是:可行性、确定性、有穷性和拥有足够的情报。

59.DD)【解析】需求分析是软件定义时期的最后一个阶

\n段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后在这些基础上确定新系统的功能。

60.A解析:函数定义时如果数据类型默认,则默认为int。函数中如果有“retum(表达式):”语句,表达式的类型可能与函数的类型不一致,但它并不能改变函数的类型,实际情况是把表达式转换为函数值的类型作为返回值,因此本题的函数值类型是int。

61.B解析:‘0’代表ASCⅡ码为48的字符,‘\\0’代表ASCⅡ码为0的字符,‘1’代表ASCⅡ码为49的字符,所以只有选项B的表达式的值为1。

62.D算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以A错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。故答案为D选项。

63.A++a与a++的区别是前者先自加再运算,后者是先运算后自加。

64.B数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是一种在操作系统支持下的系统软件,因此本题答案为B)。

65.B

66.A在while循环开始前,指针t和s都指向字符串的起始位置。while循环的判断条件中,判断t所指位置是否为字符串的结束标志,同时让t右移一位。当while循环结束时,t自减1,此时t指向的位置是字符串的结束标志,故t-s的值是字符串的长度。

67.D

68.B

69.C题目中给出的程序分为两个部分:主函数main和函数f。在主函数中初始化定义了一个整型数组a,大小为6,并定义了两个数组指针p,q。指针p指向数组第一个元素的地址,指针q指向数组最后一个元素的地址。主函数包含一个while语句,循环条件为p<q,while语句内部先调用了f函数,p、q指针为该函数的实参,随后进行了p++操作和q--,即使p指针指向下一个元素的地址,q指针指向前一个元素的地址。由于是数组存储,必然存在初始时,有p<q,当p>=q时,while语句结束。while语句后面是for语句,该语句的作用是输出数组a[]中所有的数据。

f函数的形参为整型指针,函数的功能是使得输入的指针变量所指向的数据进行交换,由于使用的是指针变量,故在f函数中对指针的操作结果会影响调用函数中(main)实参所指数据的改变,题目中f函数的调用实质是将main函数中的p、q指针所指的数据进行交换,也将导致数组a中相应的数据进行交换。结合while语句,也就是将数组a中的第1个数据与第6个数据进行交换,第2个数据与第5个数据进行交换,以此类推,得到结果10,8,6,4,2,1。

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

71.B

\n本题主要考查结构指针:P=&data,访问结构体的成员。它可以通过结构变量访问,即data,可以用等价的指针形式:(*p).a和P->a来访问结构体变量中的成员。

\n

72.C解析:EOF是文本文件的文件结束标志,NULL是打开文件错误的时候返回值。foef(fp)用来判断文件位置指针是否在文件末尾,文本文件和二进制文件均可以使用此函数。如果遇到文件结束就返回1,否则返回0。

73.C队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾(rear),允许删除的一端称为队首(front)。队列具有先进先出的特点,它是按“先进先出”的原则组织数据的。

74.A\n对下标为偶数的元素进行降序排序,下标为奇数元素保持不变。

\n

75.B

76.B

77.D

78.C

\n在函数intfun(intxE],intn)的定义中,变量sum为一个静态局部变量。由于在整个程序运行期间,静态局部变量在内存中的静态存储中占据着永久的存储单元。函数intfun(intx[],intn)的功能是求出数组X[]各个元素的和,所以在j三函数中,调用函数fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用fun(b,4)后,变量sum=15+6+7+8+9=45,所以S=l5+45=60。

\n

79.C本题的考查点是函数的形参和实参的关系。x作为函数sub的实参时,函数对X值的改变没有返回主函数,并能使得x的值变化,所以在打印时,x的值始终是0。

80.C分配内存空间函数malloe的调用形式:类型说明符*)malloe(size)。其功能是在内存的动态存储区中分配一块长度为”size”字节的连续区域,函数的返回值为该区域的首地址。”类型说明符”表示把该区域用于何种数据类型。

81.错误:c=arr[i];

正确:ch=arrEi];

【解析】由函数定义可知,函数proc只定义了变量ch,没有定义变量c。因此,“c=”r[i];”应改为“ch=arr[i];”。

82.

【解析】由函数proc()可知,数组PP中存放26个字母各自出现的次数,初始化为0。然后判断字符串tt中每一个字符,每检查一个字符,将数组pp中相应的元素加1。

2022-2023年广东省揭阳市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为()。

A.0~255B.0~32767C.0~65535D.0~2147483647

2.以下叙述中正确的是()。A.A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

B.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖

C.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

D.c语言中的文件是流式文件,因此只能顺序存取数据

3.设a,b,c,d,m和n均为int型变量,且a=5,b=6,c=7,d=m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为()

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

4.以下选项中能用作数据常量的是()。

A.115LB.0118C.1.5e1.5D.o115

5.有以下程序:#include<stdio.h>main(){inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3:print[("%d\n",b);}程序运行后的输出结果是()。A.0B.1C.2D.3

6.

7.定义学生选修课程的关系模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其属性分别为学号、姓名、课程号、课程名、成绩、学分)则对主属性部分依赖的是()。

A.C#→CnB.(S#,C#)→GC.(S#,C#)→S#D.(S#,C#)→C#

8.在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是A.并B.交C.投影D.笛卡儿乘积

9.若一组记录的排序码为(7,9,3,5,1,2,10),则利用堆排序的方法建立的初始堆为()

A.10,7,9,3,5,1,2

B.10,9,7,5,1,2,3

C.10,9,7,5,3,2,1

D.10,9,7,3,2,1,5

10.下列叙述中错误的是()。A.在程序中凡是以“#”开始的语句行都是预处理命令行

B.预处理命令行的最后不能以分号表示结束

C.#defineMAX是合法的宏定义命令行

D.C程序对预处理命令行的处理是在程序执行的过程中进行的

11.如果要求一个线性表既能较快地查找,又能适应动态变化的要求,可以采用下列哪一种查找方法()

A.分块B.顺序C.折半D.哈希

12.

13.设有一个栈,元素依次进栈的顺序为A、B、C、D、E。下列()是不可能的出栈序列。

A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A

14.若在线性表中采用折半查找法查找元素,该线性表应该()A.元素按值有序B.构采用顺序存储结C.元素按值有序且采用顺序存储结构D.元素按值有序且采用链式存储结构

15.

16.设变量已正确定义,则以下能正确计算n!的程序段是______。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;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;

17.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序运行后的输出结果是()。

A.1B.2C.4D.死循环

18.设”inta=15,b=26;”,则”printf(“%d,%d”,a,b);”的输出结果是()。

A.15B.26,15C.15,26D.26

19.下列程序是用来判断数组中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun

A.7,431B.6C.980D.6,980

20.下列程序的输出的结果是()。main{doubled=3.2;intx,Y;x=1.2;v=(x+3.8)/5.0;printf("%d\n",d*y);}A.3B.3.2C.0D.3.07

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

main()

{charc=′z′;

printf("%c",c-25);}

22.有如图所示的双链表结构,请根据图示完成结构体的定义:

structaa

{intdata;

【】}node;

23.在结构化分析使用的数据流图(DFD)中,利用【】对其中的图形元素进行确切解释。

24.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));}

25.耦合和内聚是评价模块独立性的两个主要标准,其中______反映了模块内各成分之间的联系。

26.求任意一个数(用16位二进制码表示)的补码。

main()

{

unsignedinta;

【】;

scanf("%o",&a);

printf("%o\n",getbits(a));

}

unsignedintgetbits(value)

unsignedintvalue;

{

unsignedintz;

z=【】;

if(z==0100000)

【】;

else

z=value;

return(z);

}

27.下列程序执行输出的结果是______。

#include<stdio.h>

f(intA)

{intb=0;

staticc=7;

a=c++;b++;

return(A);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

28.软件生命周期分为软件定义期、软件开发期和软件维护期,详细设计属于______中的一个阶段。

29.有以下程序:

main()

{intt=1,i=5;

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

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

}

执行后的输出结果是【】。

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

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,e+d)*10;

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

}

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

#include<stdio.h>

main()

{inta=2,b=-1,C=2;

if(a<B)

if(b<O)c=0;

elsec++;

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

}

32.下列程序的运行结果是______。

#include<stdio.h>

main()

{inta=10,b=3;

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

printf("%d,",(a-h,a+b));

printf("%d\n",a-b?a-b:a+b);

}

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

34.以下程序的输出结果是()。#definePR(ar)printf("ar=%d”,ar)main(){intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

36.有以下程序

main()

{intt=1,i=5;

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

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

}

执行后输出结果是______。

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

#include<string.h>

typeaefstructstudent{

charname[10];

longsno;

floatscore;

{STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(a.name,b.name)>0)d=b;

if(strcmp(C.name,)>0)d=C;

printf("%1d%s\n",d.sno,p->name);

}

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

39.下列的for语句的循环次数为______。

for(x=1,y=0;(y!=19)&&(x<7);x++);

40.下列程序的运行结果是______。

#include<stdio.h>

longfunc(intx)

{longp;

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

return(1);

p=x*func(x-1);

return(p);

}

main()

{printf("%d\n",func(4));

}

三、1.选择题(20题)41.有以下程序:main(){intn=0,m=l,x=2;if(!n)x-=l:if(!m)x-=2;if(!x)x-=3;printf("%d\n",x);}执行后的输出结果是______。

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

42.C语言函数返回值的类型是由______决定的。

A.return语句中的表达式类型B.调用函数的主调函数类型C.调用函数时临时D.定义函数时所指定的函数类型

43.下列程序的运行结果为

#include<stdio.h>

voidabc(char*str)

{inta,b;

for(a=b=0;str[a]!='\0';a++)

if(str[a]!='c')

str[b++]=str[a];

str[b]='\0';}

voidmain()

{charstr[]="abcdef";

abc(str);

printf("str[]=%s",str);}

A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab

44.假定所有变量均已正确说明,下列程序段运行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

45.与十进制数96等值的二进制是()

A.1100000B.10010110C.1100001D.1100011

46.以下选项中非法的表达式是

A.0<=x<100B.i=i==0C.(char)(65+3)D.x+1=x+1

47.若定义inta=10,则表达式a+=a-=a*=a的值是()。

A.0B.-180C.-100D.-90

48.在数据处理中,其处理的最小单位是()。

A.数据B.数据项C.数据结构D.数据元素

49.已知、棵二叉树的后序遍历序列是dabec,中序遍历序列是debac,则它的前序遍历序列是()。

A.acbedB.decabC.deabcD.cedba

50.函数fseek的正确调用形式是()。

A.fseek(位移量,起始点,文件类型指针);

B.fseek(文件类型指针,位移量,起始点);

C.fseek(文件类型指针,起始点,位移量);

D.fseek(起始点,位移量,文件类型指针);

51.有以下程序:#include<stdio.h>inta=1;intfun(intC){staticinta=2;c=c+1;return(a++)+c;}main(){inti,k=0;for(i=0;i<2;i++){inta=3;k+=f(A);}k+=a;printf("%d\n",k);}程序的运行结果是()。

A.14B.15C.16D.17

52.在C语言的循环语句for、while、do-while中,用于结束本次循环,继续执行下一次循环的语句是______。

A.switchB.breakC.continueD.goto

53.若有以下类型说明语句:charw;intx;floaty,z;则表达式w*x+z-y的结果为______类型。

A.floatB.charC.intD.double

54.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数feof(fp)的值为()

A.0B.1C.-1D.一个非0值

55.若执行下面程序时从键盘上输入5,main(){intx;scanf("%d",&x);if(x++>5)printf("%d\n",x);elseprintf("%d\n",x-);}则输出是_______。

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

56.已定义c为字符型变量,则下列语句中正确的是()。

A.c='97'B.c="97"C.c=97D.c="a"

57.计算机软件一般包括应用软件和____。

A.字处理软件B.系统软件C.服务性软件D.操作系统

58.在计算机中,算法是指()。

A.查询方法B.加工方法C.解题方案的准确而完整的描述D.排序方法

59.需求分析阶段的任务是()

A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能

60.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

四、选择题(20题)61.以下选项中值为1的表达式是()。

A.

B.

C.

D.

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

A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对

63.有以下程序:

main

{chara='a',b;

printf("%c,",++a);

printf("%c\n",b=a++):

)

程序运行后的输出结果是()。A.A.b,bB.b,cC.a,bD.a,c

64.数据库管理系统是()。

A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系统D.一种操作系统

65.

66.有以下函数intaaa(char*s){char*t=s;while(*t+t);t--:return(t-s);}以下关于aaa函数的功能叙述正确的是()。A.求字符串S的长度B.比较两个串的大小C.将串S复制到串tD.求字符串S所占字节数

67.下列字符串不属于标识符的是()

A.sumB.averageC.day_nightD.M,D.JOHN

68.

69.有如下程序

voidf(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;

}

main()

{inta[6]={1,2,4,6,8,10},i,*p,*q;

p=a;q=&a[5];

while(p<q)

{f(p,q);p++;q--;}

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

printf("%d,",a[i]);

}

该程序的输出结果是

A.1,2,4,6,8,10B.10,8,4,6,2,1

C.10,8,6,4,2,1D.10,2,4,6,8,1

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

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

71.

已知有如下结构体:

structsk

{inta;

floatb;

}data,*p;

若有P=&data,则对data的成员a引用正确的是()。

A.(*p).data.aB.(*p).a;C.p->data.aD.p.data.a

72.若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是

A.EOFB.-1C.1D.NULL

73.下列关于队列的叙述中正确的是()。A.在队列中只能插人数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表

74.有以下程序(函数fun只对下标为偶数的元素进行操作):

#include<stdio.h>

voidfun(int*n)

{inti,j,k,t;

for(i=0;i<n-1;i+=2)

{k=i;

for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;

t[a[i];a[i]=a[k];a[k]=t;

}

}

main

{intaa[lO]=[1,2,3,4,5,6,7],a;

fun(aa,7);

for(i=0;i<7;i++)printf("%d,",aa[i]);

printf("n");

}

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

A.7,2,5,4,3,6,1,

B.1,6,3,4,5,2,7,

C.7,6,5,4,3,2,1,

D.1,7,3,5,6,2,1,

75.

76.

77.

78.

有下列程序:

intfun(intx[],intn)

{staticintsum=0,i:

for(i0;i<n;i++)sum+=x[i];

returnsum;

}

main

{inta[]={1,2,3,4,5),b[]一{6,7,8,9),s=0:

s=fun(a,5)+fun(b,4);printf("%d\n",s):

}

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

A.45B.50C.60D.55

79.请选出以下程序的输出结果()。

A.1234

B.4321

C.0000

D.4444

80.有以下程序:

程序的运行结果是()。

A.0B.10C.20D.出错

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头2个元素进行排序,然后把第3个字符插入到前2个字符中,插入后前3个字符依然有序;再把第4个字符插人到前3个字符中,待排序的字符串已在主函数中赋予。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写一个函数voidproc(char*tt,intpp[]),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串abcdefghxyzabcde“e后,程序的输出结果应该是:222233110000000000000000111。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C

2.AB)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。c)选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D)选项中,C语言中的文件可以进行随机读写。故本题答案为A)。

3.C

4.AA选项中“115L”表示长整型数据。B选项是八进制常量的表示方法,但是在八进制中不能含有数字8,所以B选项错误。C选项中e后面应该是整数,而不能是小数1.5,所以C选项错误。D选项中八进制常量应该是以数字“0”开始,而不是以字母“o”开始。故本题答案为A选项。

5.D

6.D

7.A关系SC中的主键是(S#,C#),但C#(课程号)单独就可以决定Cn(课程名),存在着对主键的部分依赖。本题答案为A选项。

8.B并运算的含义是:假设有一个“在校学生信息表”,它包括这样一些字段:学号、姓名、性别、出生日期、籍贯、联系电话,这个表的关系模式可以表示为:校学生信息表(学号,姓名,性别,出生日期,籍贯,联系电话)。还有一个“新生信息表(学号,姓名,性别,出生日期,籍贯,联系电话)”。若要将9月份进校的新生信息加入到“在校学生信息表”中,这样进行的就是并运算。并运算不会改变表的字段(又叫属性)个数,但是会增加记录(又叫元组)个数。交运算的含义是:两个表(要求结构要一模一样)进行交运算取两个表中相同的记录构成一个新表,交运算不会改变表的字段个数,但是一般会减少记录个数。投影运算的含义是:从在“校学生信息表(学号,姓名,性别,出生日期,籍贯,联系电话)”中选取学生的“姓名”和“联系电话”这两个字段,可以构成一个“学生联系表(姓名,联系电话)”,这就是一个投影运算,所以投影运算一般会减少字段(又叫属性)的个数。笛卡儿乘积又叫称乘运算,设有n元关系R和m元关系s,他们分别有P、q个元组,则关系R和关系s的笛卡儿积表示为R×S,该关系是一个n+m元关系,元组个数是PXq。因此本题的正确答案是B。\r\n

9.B

10.C解析:预处理命令行是以“#”开始的语句,预处理命令行的最后不能以分号表示结束,预处理命令行。其中宏定义的字符替换的定义格式为:#define标识符字符串,预处理命令行是在系统对源程序进行编译之前进行处理的,不是在程序执行的过程中。

11.D

12.B

13.C

14.C

15.A

16.D解析:A选项,将f赋值为0,结果得到0,因为0乘任何数都为0;B选项,i<n,计算的是(n-1)!,C选项将陷入死循环。

17.A“--k”是先自减再使用,所以第1次判断条件即while(4),条件为真输出k的值,k=4-3,结果为1;第2次判断条件即while(0),条件为假,结束循环,输出回车换行符。故本题答案为A选项。

18.C

19.D解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。

20.C根据赋值运算的类型转换规则,先将double型的常量l.2转换为int型,因为x的类型是int,则X的值为1;执行语句y=(K+3.8)/5.0时,即先将整型变量X的值1转换为double型1.0,然后3.8相加得4.8,进行除法运算4.8/5.0结果为0.即变量y的值为0,d*Y的值也为0,故选C选项。

21.aa解析:'z'的ASCII码值为122,经过c-25运算后,得97,以字符形式输出是a。

22.structaa*lhead*

温馨提示

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

评论

0/150

提交评论