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

下载本文档

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

文档简介

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

一、单选题(20题)1.在银行业务中,实体客户和实体银行之间的联系是()。

A.—对一B.—对多C.多对一D.多对多

2.下述程序的输出结果是()。#include<stdio.h>voidmain(){chara=1,b=2;charc=a^b<<2;printf("\n%d",C);}

A.9B.10C.12D.2

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

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

4.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

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

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

6.

7.有以下程序:程序运行后的输出结果是()。A.20B.13C.10D.31

8.

9.若有说明:inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是

A.2B.3C.4D.无确定值

10.有以下程序:#include<stdio.h>voidmain(){char*s=“\ta\018bc”;for(;*s!=‘\0’;s++)printf(“*”);printf(“\n”);}程序运行后的输出结果是()。

A.******B.*********C.*****D.*******

11.有以下程序:

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

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

12.采用深度优先搜索或拓扑排序算法可以判断出一个有向图中是否有环(回路)()

A.对B.错

13.有以下程序:程序运行后的输出结果是()。A.6B.10C.8D.4

14.有下列程序:

fun(intx)

{intp;

if(x==0‖x==1)return(3);

p=x-fun(x-2);

returnp;

}

main()

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

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

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

15.下列给字符数组初始化中,()是正确的。

A.chars2[3]="xyz";

B.chars1[]="abcd";

C.chars3[][3]={'a','x','y'};

D.chars4[2][3]={"xyz","mnp"};

16.设有以下语句charchl,ch2;scanf("%c%C",&chl,&ch2);若要为变量chl和ch2分别输入字符A和B,正确的输入形式应该是()。

A.A和B之间用逗号间隔B.A和B之间不能有任何间隔符C.A和B之间可以用回车间隔D.A和B之间用空格间隔

17.

18.下列选项中,不属于数据管理员(DBA.职责的是()。

A.数据库维护B.数据库设计C.改善系统性能,提高系统效率D.数据类型转换

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

20.关于地址和指针,以下叙述正确的是()。

A.可以通过强制类型转换让char型指针指向double型变量

B.函数指针P指向一个同类型的函数f时,必须写成“p=&f;”

C.指针P指向一个数组f时,必须写成“P=&f;”

D.—个指针变量P可以指向自身

二、2.填空题(20题)21.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。

22.以下程序运行后的输出结果是______。

structNODE

{

inthum;

structNODE*next;

};

main()

{structNODEs[3]={{1,'\0'},{2,'\0'},{3,'\0'}},*p,*q,*r;

intsum=0:

s[0].next=s+1;

s[1].next=s+2;

s[2].next=s:

p=s;

q=p->next;

r=q->next;

sum+=q->nexs->num;

sum+=r>next->next->num:

prlntf("%d\n",sum;

}

23.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

24.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【】。

25.若a是int型变量,则表达式(a=2*3,a*2),a+6的值为______。

26.由计算机、操作系统、DBMS、数据库、应用程序及用户组成的一个整体叫做【】。

27.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE*myf;longfl;

myf=【】("test.t","rb");

fseek(myf,(),SEEK_END)fl+ftell(myf);

fclose(myf);

printf("%ld\n",fl);

28.实体之间的联系可以归结为一对一联系、一对多(或多对多)的联系与多对多联系。如果一个学校有许多教师,而一个教师只归属于一个学校,则实体集学校与实体集教师之间的联系属于______的联系。

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

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

30.执行下列语句段后,x的值是______。

int*p,x;

x=100;

p=&x;

x=*p+50;

31.若有以下程序:

main()

{

inta[4][4]={{l,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},

{-31,32,-33,0}};

inti,j,s=0;

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

{

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

{

if(a[i][j]<0)continue;

if(a[i][j]==0)break;

s+=a[i][j];

}

}

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

}

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

32.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。

33.在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。

34.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE*myf;longf1;

myf=【】("test,t","rb");

fseek(myf,(),SEEK_END;f1+ftell(myf);

fclose(myf);

printf("%1d\n",f1);

35.以下程序段的运行结果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}

36.若有以下程序

intf(intx,inty)

{return(y-x)*x;}

main()

{inta=3,b=4,c=5,d;

d=f(f(3,4),f(3,5));

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

}

执行后输出结果是【】。

37.若a=10,b=20,则表达式!(a<b)的值是【】。

38.当数据的物理结构(存储结构)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。

39.函数delete(s,i,n)的作用是从字符串s中删除从第i个字符开始的n个字符,请填空。

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

40.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

三、1.选择题(20题)41.以下选项中,不合法的整型常数是

A.32768B.-56C.3D.0Xaf

42.若有语句:Char*line[5];,以下叙述中正确的是()。

A.定义line是一个数组,每个数组元素是一个基类型为Char的指针变量

B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

C.定义line是一个指针数组,语句中的*号称为间址运算符

D.定义line是一个指向字符型函数的指针

43.设有如下程序段:intx=2002,y=2003;printf(“%d\n”,(x,y));则以下叙述中正确的是

A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出

B.运行时产生出错信息

C.输出值为2002

D.输出值为2003

44.下列说法正确的是

A.int(**def)[10];----def指向一个指针,该指针指向10个整型变量构成的数组

B.int*(*gh[10]);---gh指向一个指针,该指针指向10个整型变量构成的数组

C.int*(*gh[10]);---gh是一个指针,指向由10个指向整型变量的指针构成的数组

D.A,C均正确

45.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是______。

A.sanf("%2d%2d%2d",&i,&j,&k);

B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);

D.scanf("i=%d,j=%d,k=%d",&i,&j,&k)

46.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是main(){int*p,*q,a,b;p=&a;printf("inputa:");scanf("%d",*p);}

A.*p表示的是指针变量p的地址

B.*p表示的是变量a的值,而不是变量a的地址

C.*p表示的是指针变量p的值

D.*p只能用来说明p是一个指针变量

47.有以下程序

#include<stdio.h>

voidfun(int*s,intn1,intn2)

{inti,j,t;

i=n1;j=n2;

while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}

}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,0},k;

fun(a,0,3);fun(a,4,9);fun(a,0,9);

for(k=0;k<l0;k++)printf("%d",a[k]);printf("\n");

}

程序的运行结果是

A.0987654321B.4321098765C.5678901234D.0987651234

48.有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*P,*q,*r;P=&a;q=&b;r=f(p,q);print("%d,%d,%d\n",*P,*q,*r);}执行后的输出结果是______。

A.7,8,8B.7,8,7C.8,7,7D.8,7,8

49.下列函数定义中,会出现编译错误的是()。

A.max(intx,inty,int*z){*z=x>y?x:y;}

B.intmax(intx,y){intz;z=x>y?x:y;returnz;}

C.max(intx,inty){intz;z=x>y?x:y;return(z);}

D.intmax(intx,inty){return(x>y?x:y);}

50.可在C程序中用作用户标识符的一组标识符是

A.andB.DateC.HiD.case_2007y-m-dDr.TomBigl

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

A.18B.11C.0.800.5D.25L

52.下列程序的输出结果,是______。main(){inta=0,b=0,c=0;if(++a>0||++b>0)++c;printf("\na=%d,b=%d,c=%d",a,b,c);}

A.a=0,b=0,c=0B.a=1,b=1,c=1C.a=1,b=0,c=1D.a=0,b=1,c=1

53.下列程序的输出结果是()。#include<stdio.h>intb=2;intfunc(int*a){b+=*a;return(b);}main(){inta=2,res=2;res+=func(&a);printf("%d\n",res);}

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

54.可在C程序中用作用户标识符的一组标识符是A.and2007

B.Date_y-m-d

C.HiDr.Tom

D.caseBigl

55.若程序执行时的输入数据是"2473",则下述程序的输出结果是#include<stdio.h>voidmain(){intcs;while((cs=getchar())!=,'\n'){switch(cs='2'){case0case1:putchar(cs+4);case2:putchar(cs+4);break;case3:putchar(cs+3);default:putchar(cs+2);}}}

A.668977B.668966C.6677877D.6688766

56.以下叙述中,正确的是______。

A.输入项可以是一个实型常量,例如:scanf("%f",3.5);

B.只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf("a=%d,b=%d");

C.当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:scanf("%4.2f",&d);

D.当输入数据时,必须指明变量地址,例如:scanf("%f",&f);

57.若有如下调用函数:intsub(int*t){return(t);}该函数的返回值是()

A.形参t中存放实参变量的地址值B.形参t自身的地址值C.指针变量t所指的实参变量的值D.随机的值

58.以下程序的输出结是_______。#include<stdio.h>main(){inta=200;#definea100printf("%d",a);#undefaprintf(%d",a);}

A.200100B.100100C.100200D.200200

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

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

60.若有如下程序:f2(char*t){*t=*t-32;return(*t);}fl(char*p){for(;*p!='\0';p++)if(*p>='a'&&*p<='z')f2(p);}main(){chara[10]="abcbgH";f1(a);printf("%S",a);}则程序运行后的输出结果是()。

A.ABCBGHB.abcdefghC.abcdgD.EFH

四、选择题(20题)61.两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是()。

if(x++>5)printf("%d",x);

elseprintf("%d\n",x--);

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

62.

63.有以下程序

main()

{

chara[]={′a′,′b′,′c′,′d′,′\0′,′f′,′g′,′h′,′\0′};inti,j;

i=sizeof(a);

j=strlen(a);

printf("%d,%d\b",i,j);

}

程序运行后的输出结果是

A.9,4B.8,4C.1,8D.9,8

64.

65.

66.有以下程序:

voidfunl(char*p)

{char*q;

q=P;

while(*q!='\O')

{(*q)++;q++;}

}

main

{chara[]={"Program"),*P;

p=&a[3];funl(p);

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

}

程序执行后的输出结果是()。A.A.ProhsbnB.PrphsbnC.ProgsbnD.Program

67.

68.有以下程序:

程序输出结果是()。

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

69.有以下程序:

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

A.

B.

C.

D.

70.结构化程序所要求的基本结构不包括()。

A.顺序结构B.选择(分支)结构C.GOT0跳转D.重复(循环)结构

71.

72.设有定义:

73.将E—R图转换为关系模式时,实体和联系都可以表示为()。

A.属性B.键C.关系D.域

74.有以下程序:#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

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

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

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

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

76.

77.

78.

79.有以下程序

#include<stdio.h>

voidfun(ints[])

{staticintj=0;

do

s[j]+=s[j+1];

while(++j<2);

}

main()

{

intk,a[10]={1,2,3,4,5};

for(k=1;k<3;k++)fun(a);

for(k=0;k<5;k++)

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

}

程序的运行结果是

A.34756B.23445

C.35745D.12345

80.

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

例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

六、程序设计题(1题)82.请编写函数voidproc(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶数、不为1的各整数,并按从大到小的顺序放在PP所指的数组中,这些除数的个数通过形参n返回。

例如,若x的值为30,则有3个数符合要求,它们是15,5,3。

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

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

试题程序:

参考答案

1.D一个客户可以在多家银行办理业务,一家银行也有多个客户办理业务,因此,实体客户和实体银行之间的联系是多对多。本题选择D选项。

2.A

3.C

4.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。

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

6.D

7.D程序首先定义整型变量s和i,s的初值为0。for循环中i的取值为1,2,3,4,另外在switch语句中,执行各个分支后,若没有break语句,会继续执行后续分支。当i=1时,switch语句执行case1、case2和default,将s自增3后再自增5,此时s的值为8;当i=2时,switch语句执行case2、default,将s自增3后再自增5,此时s的值为16;当i=3时,switch语句执行case3、case1、case2、default,将s逐步自增2,自增3,自增5,此时s的值为26;当i=4时,switch语句执行default语句,将s自增5,此时s的值为31。本题答案为D选项。

8.D

9.B解析:本题考查二维数组的定义方式。第一维的大小由以下方法判断:①当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小;2)当初值的个数不能被第二维的常量表达式的值除尽时,则第一维的划、:所得的商数+1。

10.Amain函数中定义一个字符指针s,指向字符串“\\ta\\018bc”。for循环遍历s指向的字符串中的字符,然后输出根据题意可以理解为:s指向的字符串中有多少个字符,就输出多少个s指向的字符串中字符分别是\\t(转义字符)、a、\\01(转义字符)、8、b、c,总共6个。其中因为8不属于八进制中的数字,所以“\\018”不是一个转义字符,而“\\01”是转义字符。故本题答案为A选项。

11.A在函数point函数调用时,系统自动为函数的形参P分配内存空间,并赋值为实参P的值。当执行语句P+=3;时,系统操作的是形参P的内存空间,更改形参P的内容,而实参指针变量P的值未受影响,即指针变量作为函数参

12.A

13.C题干中,整型指针变量Pk指向k,Pm指向m,所以右边表达式“*pk*(*pm)”的值为“k*m”,即2*4=8;左边表达式“*(p=&n)”先将变量n的地址赋给p,然后对p解引用,引用到n,将n的值赋为8。本题答案为C选项。

14.C解析:因为在函数fun(intx)中,如果参数x等于0或1时,返回值3。否则p=x-fun(x-2)这是一个递归函数,所以在主函数调用fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5-fun(3))=7-(5-(3-fun(1))=7-(5-(3-3))=7-5=2”,所以最后的输出结果为2。

15.A

16.Bscanf输入函数中,格式控制J必须严格按照函数中的要求进行输入,在scanf("%c%c",&chl,&ch2)的格式控制语句中没有任何字符进行间隔,所以在输入时也不能使用任何字符进行间隔,所以答案选择B。

17.D

18.DD)【解析】数据库管理员(DataBaseAdministrator,DBA)是指对数据库的规划、设计、维护、监视等的人员,其主要工作如下:数据库设计。DBA的主要任务之一是数据库设计,具体地说是进行数据模式的设计;数据库维护。DBA必须对数据库中的数据安全性、完整性、并发控制及系统恢复、数据定期转储等进行实施与维护;改善系统性能,提高系统效率。DBA必须随时监视数据库的运行状态,不断调整内部结构,使系统保持最佳状态与效率。

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

20.A函数名代表函数的入口地址,函数指针P指向一个同类型的函数f时,可以写成“p=f;”,而不能写成“P=&f;”,选项B错误。指针p指向一个数组f时,可以写成“p=f;”,数组名f代表数组的首地址,选项C错误。指针变量指向的是变量的地址,选项D错误。char型根据转化原则可以转化为double类型。故本题答案为A选项。

21.2525解析:#NAME?

22.55解析:主函数首先声明了一个结点数组s[3],并分别初始化其成员num为1,2、3,而成员next全部被初始化为'\\0',也就是0。下面又用三条语句s[0].next=s+1;s[1].next=s+2;s[2].next=s;分别将三个结点指向其后面一个结点,而最后一个结点指向笫1个结点,构造出一条单向循环链表。接下来用结点指针p=s即让其指向s[0],然后让q=p->next,即指向了s[1],r=-q->next即让r指向s[2],然后让一个累计变量sam累加q->next->hum和r->next->next->num,因为q指向s[1)所以它的next指针指向的是s[2],故第1次累加的是s[2].num=3,而r指向的是s[2]所以它的next是s[0],s[0]的next指向s[1],故笫2次累加的是s[1].num=2。所以程序最终输出结果为5。

23.数据存储数据存储

24.88解析:在一般系统中,一个float型数据在内存中占4个字节(32位),一个double型数据占8个字节。

25.1212解析:本题考查逗号表达式的运算规则。逗号表达式的基本格式为:“表达式1,表达式2,…”,其整个表达式的结果取最后一个子表达式的值。本题中首先计算逗号表达式中的第1个表达式a=2*3=6,然后计算第2个表达式a*2,这时整个表达式的值为12,但要注意,因为第2个表达式并没有给a赋值,因此a的值不变;接下来执行最后一个表达式a+6=12,所以整个表达式最后的值为12。

26.数据库系统数据库系统

27.fopenfopen解析:C语言中的文件分为:ASCII文件与二进制文件。文件在使用前打开,使用后要关闭。打开文件的函数为:fopen(),调用形式为:fp=fopen('文件名','使用文件方式');关闭文件的函数为:fclose(),调用形式为:fclose(fp),其中fp为文件指针。

28.一对多或1:N。一对多或1:N。

29.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:

类型说明符*指针变量名;

30.150150解析:本题先给变量x赋初始值100,然后将指针p指向变量x,*p是取指针p所指地址的内容,即100,所以x=100+50=150。

31.5858解析:本题中处理二维数组元素用了两重循环,外循环变量i表示数组的行,内层循环变量j表示数组的列。在第二重循环中首先判断数组元素的值是否小于0,若是则处理该行的下一个元素;若不是则判断a[¨刚的值是否等于0,若等于0则退出内层循环开始处理下一行;其他情况下,把a[i][j]的值加到变量s中。所以本程序段的功能是把每行值为0的元素前面的所有大于0的元素值加到变量s中。

32.调试调试

33.关系关系解析:关系模型用;维表表示,则每个;维表代表一种关系。

34.fopenfopen解析:C语言中的文件分为:ASCII文件与二进制文件。文件在使用前打开,使用后要关闭。打开文件的函数为:fopen(),调用形式为:fp=fopen(“文件名”,“使用文件方式”);关闭文件的函数为:fclose(),调用形式为:fclose(fp);其中fp为文件指针。

35.x=2

36.99解析:函数的嵌套调用是在主函数中函数f(f(3,4),f(3,5))的返回值赋给d。函数的第一个参数为f(3,4)的返回值,函数f(3,4)返回值为(4-3)*3=3,f(3,5)返回值为(5-3)*3=6,那么函数f(f(3,4),f(3,5))等价于函数f(3,6)其返回值为(6-3)*3=9。因此d被赋值为9,所以输出9。

37.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。

38.物理独立性数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。

39.length++i<lengthlength++\r\ni<length解析:第—个循环极有可能是计算串的长度,在i<=length时字符才被删除,被删除的是从第i个到笫i+n或最后—个间的所有字符。删除前,应判断i<=length。由于已经进行了-i运算,故实际应填入i<length。

40.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。

41.A解析:整型数据一般占2个字节,其取值范围是:-32768~+32767,而选项A)超过了整数的取值范围。注意:实型常数的表示方法。

42.A解析:理解复杂定义要掌握两点:一、右结合原则.本题中的定义char*line[5];等价于char*(line[5]);;二、自外向内分解成typedef语句。char*(line[5]);等价于typedefchar*A;Aline[5];其中A被typedef定义成字符指针的别名,然后line被定义成A的一维数组,即字符指针的一维数组。再来看看行指针的定义char(*line)[5];它应该被分解成typedefcharB[5];B*line;其中B被定义成包含5个元素的一维字符数组,然后line被定义成指向B的指针,即指向包含5个元素的一维字符数组的指针。所以两者切不可混淆了,后者的括号不能省略。故本题应该选择A。

43.D解析:逗号运算符的结合性为从左到右,其一般形式为“表达成1,表达式2”,整个表达式的值为表达式2的值。故4个选项中选项D符合题意。

44.Dint*(*gh[10]);---gh是一个指针,指向由10个指向整型变量的指针构成的数组,int(**def)[10];---def指向一个指针,该指针指向10个整型变量构成的数组。

45.C解析:scanf函数的格式控制部分中的非格式字符按原样输入,本题指出键盘输入为:1,2,3<回车>,各个数据之间用“,”分隔,所以scanf函数中应包含“,”,选项D中虽然包括“,”号,但是还包含非格式字符i=、j=和k=,正确答案为选项C。

46.B在本题中,题目告诉我们程序中调用scanf函数给变量a输入数值的方法是错误的,要求我们找出其错误的原因,这是一类错误原因分析题。

在本题程序中,首先定义两个整型指针变量p和q,然后定义两个整型变量a和b,让指针变量p执行变量a,接着输出提示语句“请输入a”,执行格式输入语句scanf,由于输入语句的输入列表中给出的应该是输入的地址,即存放输入数据的存储地址,但在本题的输入语句中给出的是*p,这表示一个数值,而非地址。因此,无法完成数据的输入,若要完成输入,可以将*p改为p。

根据上面的分析,我们可以知道本题程序出错的原因是*p表示的是变量a的值,而不是变量a的地址。因此本题正确答案选B。

47.C解析:函数fun(int*s,intn1,intn2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。

48.B解析:函数f是一个返回值为指针的函数,其功能是比较两个数中的最小值,并返回最小值的存储单元地址。main函数中定义了指针变量p和q,p=&a,q=&b,即*p=7,*q=8,调用函数{后r=p,所以*r=7,printf函数的输出结果为7,8,7。

49.B解析:本题考核的知识点是函数的定义方法。选项B中在说明形参时,省略了第二个参数的类型,故选项B编译不能通过。

50.A解析:在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字。

51.D

52.C解析:“||”是或运算,它有个“短路”的特点需特别注意,当“||”运算符左边的表达式的值为真时,则程序就不再对“||”右边的表达式的值进行运算,而是使得整个表达式的值直接为真。

53.B解析:对于函数体中的语句b+=*a;其中的“*”是指针运算符,*a就是main函数中变量a的值。

54.A解析:在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下画线3种字符组成,且第一个字符必须为字母或下画线。C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字。

55.A解析:本题主要考查switch语句的使用方法。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。

56.D

57.A

58.C解析:#define宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用#undef命令终止宏定义的作用域。本题由于#undef的作用,使a的作用范围在#definea100到#undefa之间,故答案为C。

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

60.A解析:程序的功能是将字符数组a中的小写字母变为大写字母,所以选项A符合题意。

61.C

62.B

63.Asizeof是求字节运算符,在字符数组a中,′\0′也作为字节保存,是a数组的一个成员,所以sizeof(a)的值应为9,strlen是测试字符串长度的函数,它碰到字符串结束标识′\0′结束,因此在碰到第一个′\0′时结束,strlen(a)的值为4。

64.B

65.A

66.A本题中

温馨提示

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

评论

0/150

提交评论