2021-2022年吉林省白城市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第1页
2021-2022年吉林省白城市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第2页
2021-2022年吉林省白城市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第3页
2021-2022年吉林省白城市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第4页
2021-2022年吉林省白城市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年吉林省白城市全国计算机等级考试C语言程序设计知识点汇总卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.选出任何情况下都不引起二义性的宏定义()。

A.#definePOWER(x)x*x

B.#definePOWER(x)((x)*(x))

C.#definePOWER(x)(x*x)

D.#definePOWER(x)(x)*(x)

2.有以下函数intfun(char*X,char*y){intn=0;while((*x===*y)*x!=\O){x++;y++;n++;}returnn;}函数的功能是()。A.查找X和y所指字符串中是否有\o

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

C.将Y所指字符串赋给X所指定存储空间

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

3.在一个无向图中,所有顶点的度数之和等于所有边数的()倍。

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

4.以下程序段中的变量已正确定义:for(i=0;i<4;i++,i++) for(k=1;k<3;k++); printf(“*”);程序段的运行结果是()。

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

5.设单链表中结点的结构为已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列哪一个操作______。A.s->link=p;p->link=s;

B.s->link=p->link;p->link=s;

C.s->link=p->link;p=s;

D.p->link=s;s->link=p;

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

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

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

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

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

7.有如下程序段

voidfun(int*a,int*b)

{int*k;

k=a;a=b;b=k;

}

main()

{inta=3,b=6,*x=&a,*y=&b;

fun(x,y);

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

}

程序运行后输出的结果是A.A.63

B.36

C.编译出错

D.00

8.考虑下图中的程序段,①号语句的输出结果是()。A.A.'a'B.'t'C.'c'D.'k'

9.有说明语句“inta,b;”,如果输入111222333,使得a的值为111,b的值为333,则以下正确的语句是()。A.scanf("%3d%*3d%3d",&a,&b);

B.scanf("%*3d%3d%3d",&a,&b);

C.scanf("%3d%3d%*3d",&a,&b);

D.scanf("%3d%*2d%3d",&a,&b);

10.下面程序段的运行结果是char*p="abcdefgh";p+=3;printf("%d\n",strlen(strcpy(p,"ABCD")));

A.8B.12C.4D.7

11.下列程序执行输出的结果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

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

12.以下选项中不合法的标识符是()。

A.&aB.FORC.printD._00

13.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

14.下列定义数组的语句中错误的是()。

A.intx[2][3]={1,2,3,4,5,6};

B.intx[][3]={0};

C.intx[][3]={{1,2,3},{4,5,6}};

D.intx[2][3]={{1,2},{3,4},{5,6}};

15.

16.若已定义:“inta[9],*p=a;”,并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是______。

A.p+1B.a+1C.a++D.++p

17.

18.

19.依次插入序列(50,72,43,85,75,20,34,45,65,30)后建立的二叉搜索树中,查找元素30要进行()次元素间的比较。

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

20.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的运行结果是()。

A.abcB.28cC.abc28D.因类型不一致而出错

二、2.填空题(20题)21.有以下程序

main()

{intn=0,m=1,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

执行后输出结果是【】。

22.在计算机领域中,通常用英文单词“Byte'’表示【】。

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

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

structaa

{intdata;

【】}node;

25.在进行软件结构设计时,应遵循的最主要原理是【】。

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

#include<stdio.h>

main()

{charb[]="Helloyou";

b[5]=0;

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

}

27.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结构必须是______。

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

#include<stdio.h>

main()

{inta=2,b=3,c=4;

a*=16+(b++)-(++c);

Printf("%d",a);

}

29.下面程序把从终端读入的文本(用#作为文本结束标志)复制到一个名为file.txt的新文件中。补足所缺语句。

main()

{charch;

FILE*fp;

if((fp=fopen(______))=NULL)exit(0);

while((ch=getchar())!='#')

fputc(ch,fp);

______;

}

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

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));

}

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

main()

{inta,b,c;

a=10;b=20;c=(a%b<1)||(a/b>1);

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

}

32.计算圆的周长、面积和球体积。

#definePI3.1415926

#define【】L=2*PI*R;【】;V=4.0/3.0*PI*R*R*R

main()

{floatr,l,s,v;

printf("inputaradus:");

scanf("%f",&r);

CIRCLE(r,l,s,v);

printf("r=%.2f\nl=%.2f\ns=%.2f\nv=%.2f\n",【】);

}

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

34.在运算过程中,能够使空表与非空表的运算统一的结构是【】。

35.执行以下程序后,输出“#”的个数是【】。

#include<stdio.h>

main()

{inti,j;

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

for(j=2;j<=i;j++)putchar('#');

}

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

37.设有以下定义:

structss

{intinfo;structss*link;}x,y,z;

且已建立如下图所示链表结构,

请写出删除点y的赋值语句【】。

38.strcat函数的作用是【】。

39.下列程序执行后输出的结果是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

40.指针变量p和数组a的说明如下:

int*a[3]={"aa","bb","cc"},**p;

执行语句p=&a[2];后,*p指向的字符串是______。

三、1.选择题(20题)41.在以下术语中,与数据的逻辑结构无关的是______。

A.线性结构B.链式结构C.树型结构D.网状结构

42.CPU主要由运算器与控制器组成,下列说法中正确的是()

A.运算器主要负责分析指令,并根据指令要求做相应的运算

B.运算器主要完成对数据的运算,包括算术运算和逻辑运算

C.控制器主要负责分析指令,并根据指令要求做相应的运算

D.控制器直接控制计算机系统的输入与输出系统

43.以下4个选项中,不能看作一条语句的是

A.{;}B.a=0,b=0,c=0;C.if(a>0);D.if(b==0)m=1;n=2;

44.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

45.以下选项中合法的实型常数是A.5E2.0B.E-3C.2.00E-01D.1.3E

46.已知a的ASCⅡ码为97,执行下面两个语句后,输出的结果为______。charc1=97;c2=98;printf("%d%c",c1,c2);

A.9798B.97bC.a98D.ab

47.下列实体的联系中,属于多对多联系的是()

A.学生与课程B.学校与校长C.住院的病人与病床D.工资级别与职工

48.有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是()。A.因变量类型与格式描述符的类型不匹配输出无定值

B.输出项与格式描述符个数不符,输出为零值或不定值

C.a,97,12k=12

D.a,97,k=12

49.下列说法正确的是()。

A.在C语言中,可以使用动态内存分配技术,定义元素个数可变的数组

B.在C语言中,数组元素的个数可以不确定,允许随机变动

C.在C语言中,数组元素的数据类型可以不一致

D.在C语言中,定义了一个数组后,就确定了它所容纳的元素的个数

50.串的长度是______。A.A.串中不同字符的个数

B.串中不同字母的个数

C.串中所含字符的个数且字符个数大于零

D.串中所含字符的个数

51.函数调用strcat(strcpy(str1,str2),str3)的功能是()。

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

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

C.将字符串str2复制到字符串str1后再将字符串str3连接到字符串str1之后

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

52.有以下程序:#iaclude<stdio.h>main(){intp[8]:{11,12,13,14,15,16,17,18},i=0,j:0;while(i++<7)if(p[i]%2)j+=p[i];printf("%'d\n",j);}程序运行后的输出结果是()。

A.42B.45C.56D.60

53.以下四个选项中,不能看作一条语句的是()。

A.;B.a=5,b=2.5,c=3.6;C.if(a<5);D.if(b!=5)x=2;y=6;

54.设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为()

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

55.软件开发的结构化生命周期方法将软件生命周期划分成()

A.定义、开发、运行维护

B.设计阶段、编程阶段、测试阶段

C.总体设计、详细设计、编程调试

D.需求分析、功能定义、系统设计

56.阅读下面程序,则程序段的功能是#include"stdio.h"main(){intc[]={23,1,56,234,7,0,34},i,j,t;for(i=1;i<7;i++){t=c[i];j=i-1;while(j>=0&&t>c[j]){c[j+1]=c[j];j--;}c[j+1]=t;}for(i=0;i<7;i++)printf("%d",c[i]);putchar('\n');}

A.对数组元素的升序排列B.对数组元素的降序排列C.对数组元素的倒序排列D.对数组元素的随机排列

57.请选出以下程序的输出结果______。#include<stdio.h>sub(x,y,z)intx,y,*z;{*z=y-x;}main(){inta,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf("%d,%d,%d\n",a,b,c);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

58.阅读下列程序,当运行函数时,输入asdafaaz67,则输出为#include<stdio.h>#include<ctype.h>#inelude<string.h>intfun(char*str){inti,j=0;for(i=0;str[i]!='\0';i++)if(str[i]!='')str[j++]=str[i];str[j]='\0';}main(){charstr[81];intn;printf("Inputastring:");gets(str);puts(str);fun(str);printf("%s\n",str);}

A.asdafaaz67B.asdafaaz67C.asdD.z67

59.下面能正确进行字符串赋值操作的是

A.chars[5]={"ABCDE"};

B.chars[5]={′A′,′B′,′C′,′D′,′E′};

C.char*s;s="ABCDE";

D.char*s;scanf("%s",s);

60.有如下程序main(){inti,sum;for(i=1;i<=3;sum++)sum+=i;printf("%d\n",sum);}该程序的执行结果是______。

A.6B.3C.死循环D.0

四、选择题(20题)61.

62.有以下程序

main()

{intx,y;

scanf("%d",&x);

y=x>12?x+10:x-12;

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

}

若运行时给变量x输入12,则以下程序的运行结果是

A.0B.22

C.12D.10

63.

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

#include<stdio.h>

voidmain()

{inta,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

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

A.6,1B.2,1C.6,0D.2,0

65.

66.有以下程序:

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

A.AbcdefB.ABCDEFC.aBcDeFD.AbCdEf

67.有两个关系R、S如下:

由关系R通过运算得到关系s,则所使用的运算为()。

A.选择B.投影C.插入D.连接

68.已知intx=(1,2,3,4);变量x的值是()。

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

69.若a是数值类型,则逻辑表达式(a==1)II(a!=1)的值是()。

A.1B.0C.2D.不知道a的值,不能确定

70.

71.关系数据库管理系统能实现的专门关系运算包括()。

A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表

72.结构化程序设计的基本原则不包括A.多态性B.自顶向下C.模块化D.逐步求精

73.

74.阅读以下程序:

#include<stdio.h>

main()

{intcase;floatprintF;

printf("请输人2个数:");

scanf("%d%fl"&case,&printF);

printf("%dofof\n",case,printF);

}

该程序在编译时产生错误,其出错原因是()。

A.定义语句出错,case是关键字,不能用做用户自定义标识符

B.定义语句出错,printF不能用做用户自定义标识符

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句无错,printf不能输出case的值

75.

76.

已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字堪的表达式是()。

A.isupper(c)

B.A<=c<=Z

C.A<=c&&c<=Z

D.c<=(z-32)&&(a-32)<=c

77.(13)设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为()

A.349

B.350

C.255

D.351

78.

79.以下选项中正确的语句组是()。

A.char*s;s={f.BOOK!”};

B.char*s;s:”BOOK!”:

C.chars[10];s=”BOOK!”;

D.cbars[];s:”BOOK!n:

80.对于算法的每一步,指令必须是可执行的。算法的()要求算法在有限步骤之后能够达到预期的目的。

A.可行性B.有穷性C.正确性D.确定性

五、程序改错题(1题)81.下列给定程序中,fun()函数的功能是:从整数1~50中,选出能被3整除且有一位上的数是5的数,并把这些数放b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1放个位数,a2放十位数。

请修改函数中的错误,得出正确的结果。

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

试题程序:

六、程序设计题(1题)82.请编写函数proc(),它的功能是计算下列级数和,和值由函数值返回。sum=1-x+x2/2!-x3/31+…+(-l*x)n/n!例如,当n=23,x=0.3时,函数值为0.740818。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。试题程序:

参考答案

1.B解析:引起带参数宏的二义性主要有两个方面:一是,参数之间因运算符优先级不确定而带来的二义性。例如本题的选项A),若程序中使用POWER(a+b),会展开为a+b*a+b,这样就会先计算b*a的值,然后再加一个a和一个b,产生二义性。杜绝这种二义性的方法是在宏定义的每个参数外加上圆括号以保证总是先计算每个参数的值,就好像本题的选项D)那样。另一个是,整个宏所代表的表达式因运算符优先级不确定而带来的二义性。例如本题的选项D),若程序中使用a/POWER(b),会展开为a/(b)*(b),这样就会先计算a/b的值,然后再乘以b,产生二义性。杜绝这种二义性的方法是对整个宏定义加一个圆括号,就好像本题的选项B)那样。故选项B)在任何情况下都不会引起二义性,应该选B。

2.B由题中while(*x==*y*x!=\\n)可知此函数是统计x和y所指向的字符串中最前面的联系相同的字符的个数。

3.A

4.C因为内层循环“for(k=1;k<3;k++)”后面直接跟了空语句“;”,所以在循环内部什么操作也不做,跳出外层循环后执行printf语句,输出一个“*”。故本题答案为C选项。

5.B

6.B解析:本题考查函数fseek的用法。fseek函数的调用形式为:

fseek(文件指针,位移量,起始点)

“起始点”用0,1或2代替,0代表“文件开始”,1为“当前位置”,2为“文件末尾”。

“位移量”指以“起始点”为基点,向前移动的字节数。ANSIC和大多数C版本要求位移量是long型数据,这样当文件长度大于64k时不致出现问题。ANSIC标准规定在数字末尾加一个字母L表示long型。

7.B在本题中,程序首先定义了一个无返回值的函数fun,该函数带有两个整型的指针形参变量,在函数体中,首先定义一个整型指针变量k,然后试图利用k来交换a和b的结果。但处理语句k=a;很明显是对地址进行赋值操作。在C语言中,指针变量作为函数参数时,可以改变被指向的变量的值,但不能改变指针变量本身的值,即我们可以改变实参指向的变量的值,不能使实参指向其他的变量。因此,本函数并不能交换形参所指向变量的结果。

在主函数中,首先定义了两个整型变量a和b,并分别被初始化为3和6,然后定义两个指针变量x和y,分别指向a和b,接着调用fun函数,传递的实参为指针变量x和y,根据前面对fun函数的分析可知,调用该函数后并不能实现a和b数组的交换,因此,执行输出语句后,输出的结果是36。本题正确答案选B。

8.D

9.A根据题意,要使a的值为111,b的值为333,必须在读入时指定a的读入宽度为3,b的读入宽度为3,且a和b的控制字符之间必须额外增加%*控制符,用于跳过中间的3位输入数字,选项A正确。本题答案为A选项。

10.C在本题中,程序段首先定义了字符型指针变量p,并使其指向一个字符串,然后将指针变量p加3,即使其指向字符串的第四个元素。然后执行输出语句,通过输出语句的输出格式我们可以知道,最后输出的是一个十进制数的整型数值,其输出列表为strlen(strcpy(P,″ABCD″))。这就要求我们了解strlen函数和strcpy函数的作用。

strcpy的调用格式是:strcpy(目的地址,源地址),其功能是把源地址的字符串复制到目的地址中,这种复制将覆盖原来的字符串。strcat函数的功能是将源地址的字符串复制到目的地址字符串的后面。

strlen的调用格式是:strlen(字符串地址),其功能是返回字符串中字符的个数。

那么程序中执行strcpy(P,″ABCD″)后指针变量p所指向的字符串为“ABCD”,该字符串中字符的个数为4,那么执行strlen后,程序最终输出的结果是4。因此本题正确的答案是C。

11.B解析:本题考查函数调用时的参数传递。在函数调用时,static变量在函数调用结束后所做的所有变化均保持(即上次调用结束时的值)。

在主函数中,第一次循环,i=0,调用k-f(a++)=f(2),调用完之后才将a加1,a变为3,在f(2)中,先将c=3赋值给a返回,然后将c加1,得到k=a=3,c=4。

第二次循环,i=1,调用k=f(a++)=f(3),调用完之后才将a加1,a变为4,在f(3)中,先将c=4赋值给a返回,然后将c加1,得到k=a=4,c=5。

12.AC语言的标识符由字母、数字、下划线组成,且第1个字符必须是字母或下划线。另外,关键字不能作为标识符。因为C语言中区分大小写,所以B选项中的“FOR”可以作为标识符来用。A选项中含有非法字符“&”,所以其不合法。故本题答案为A选项。

13.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。

14.DD选项中“x[2][3]”定义的是一个2行3列的二维数组,而在给数组元素赋值时却赋成了3行,所以错误。故本题答案为D选项。

15.B

16.C

17.C

18.B

19.B

20.Cfprintf函数将内容写入硬盘的文件,fputs函数将字符串写入文件,最终文件的内容为abc28。故本题答案为C选项。

21.-4-4解析:if…else构造了一种二路分支选择,是一种最基本的选择结构,if(条件)S1(if分结构)elseS2(else分结构),它的工作过程是:先对条件表达式进行判断,若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行else分结构(S2)。本题中,n=0,可以判断(!n)为真,执行x=x-1=2-1=1;m=1,可以判断(m)为真,执行x=x-2=1-2=-1进而可以判断(x)为真,执行x=x-3=-1-3=-4。

22.字节字节

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

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

25.模块独立原理模块独立原理

26.HelloHello解析:语句b[5]=0;相当于语句b[5]='\\0';且'\\0'为字符串结束标志,输出时遇到'\\0'就停止输出。

27.顺序存储(顺序方式存储)顺序存储(顺序方式存储)解析:二分法查找对表的要求是有序的顺序表,即第一要求是数据元素有序,第二要求是按顺序方式存储。

28.2828解析:a*=16+(b++)-(++c)等价于a=a*(16+(b++)-(++c)),b++的值为3,++c的值为5,这里要注意前缀++和后缀++的用法。

29.file.txt"w"fclose(fp)。file.txt,'w'fclose(fp)。解析:向文件中写数据,并且该文件是新文件,应当使用文件打开方式'w',文件操作结束时要用函数fclose关闭文件,以防数据丢失。

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

31.1020010200解析:a的初值为10,b的初值为20,因此“a%b”结果为10,“(a%b<1)”为假,“a/b”的结果为0,“(a/b>1)”为假,所以“(a%b<1)||(a/b>1)”的值为0(假),c的值为0。

32.CIRCLE(RLSV)S=PI*R*Rr1sv

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

34.循环链表循环链表解析:在链表的运算过程中,采用链接方式即循环链表的结构把空表与非空表的运算统一起来。循环链表具有两个特点:①在循环链表中增加了一个表头结点,其数据域为任意或根据需要来设置,指针域指向线性表的第一个元素的结点。循环链表的头指针指向表头结点。②循环链表中最后一个结点的指针不是空,而是指向表头结点。

35.66解析:本题考察的是一个嵌套的循环,当满足j<=i时,输出一个“#”号,符合条件的有i=2,j=2;i=3,j=2;i=3,j=3;i=4,j=2;i=4,j=3;i=4,j=4,共输出6个“#”。

36.调试调试

37.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:要删除结点y,只需让结点x的指针域指向y结点的指针域所指向的后续结点就可,因此把结点z的地址赋给x的指针域就可以了,即让结点x的指针域指向结点z。而结点z的地址保存在结点y的指针域中,因此只需把结点y的指针域赋值给结点x的指针域即可。

38.连接两个字符数组中的字符连接两个字符数组中的字符解析:strcat函数的作用是连接两个字符数组中的字符串。

39.1212解析:本题的第—个for循环用于绐数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。

40.cc。cc。解析:a是指针数组,每个数组元素存放的是字符数据的地址,数组a的3个元素分别指向字符串常量'aa'、'bb'和'cc',指针p赋予数组元素a[2]的值,即指向第3个字符串。

41.B

42.B

43.D解析:C语言的语句都用“;”结束。如果只有一个分号,称为“空语句”。用一对花括号把若干语句括起来构成一个语句组,称为“复合语句”,在语法上视为一条语句。因此选项A是一条语句。选项B是逗号表达式加分号构成的语句。选项C是一条if语句,该语句的if子句是一条空语句。选项D中“if(b==0)m=1;n=2;”是两个表达式语句。所以,4个选项中选项D符合题意。

44.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。

45.C解析:在C语言中,实数有两种表示形式:小数形式与指数形式。小数形式的实数由整数部分、小数点和小数部分组成(必须要有小数点)。指数形式字母e(E)之前必须有数字,且e或E后的指数必须为整数。选项A中,5E2.0中E后面的2.0不是整数;选项B中,E前面没有数字;选项D中,E后面没有数字,只有选项C正确。

46.B解析:整型数据和字符数据可以通用,变量c1和c2被定义为字符型,语句c1=97和c2=98的作用相当于执行c1='a'和c2='b'两语句。在输出语句中,%d%c是输出格式符,要求在相应位置上分别输出一个整数和一个字符。

47.AA本题考查关系数据库中实体之间的联系。实体之间的联系有3种:一对一关系、一对多关系和多对多关系。一个学生可以选择多门课程,一门课程可被多个学生选择,所以学生与课程之间是多对多的联系

48.D解析:在用基本输出函数printf时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,多余的输出项不予输出;如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或0。

49.D解析:本题考查数组的两个知识点:①在C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好之后,它所能容纳的元素的个数也就确定了;②同一个数组中所有元素的类型是一样的。

50.D解析:串的长度指的是串中字符的个数,且其字符个数可以为零。选项D正确。

51.C解析:strcat(s1,s2)是把s2字符串连接到s1字符串末尾,strcpy(s1,s2)是把s2字符串复制给s1字符串,要保证s1能容纳下连接或复制后的字符串。

52.B解析:程序执行过程如下:

i=0:i++<7为真,p[i]%2即为p[1]%2,值为0,不执行j+=p[i];j=0;

i=1:i++<7为真,P[i]%2即为p[2]%2,值为1,执行j+=p[i];j=13;

i=2:i++<7为真,p[i]%2即为P[3]%2,值为0,不执行j+=p[i];j=13;

i=3:i++<7为真,p[i]%2即为P[4]%2,值为1,执行j+=p[i]];j=13+15=28;

i=4:i++<7为真,p[i]%2即为p[5]%2,值为0,不执行j+=P[i];j=28;

i=5:i++<7为真,P[i]%2即为P[6]%2,值为1,执行j+=P[i];j=28+17=45;

i=6:i++<7为真,P[i]%2即为p[7]%2,值为0,不执行j+=p[i];j=45;

i=7:i++<7为假,结束循环,输出j的值45。

可见,程序的功能是求除p[0]外的其他奇数的和。

53.D解析:选项D)为两条语句,每条语句以分号结束。

54.C解析:R为n元关系,有P个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。

55.A解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护3个阶段。

56.B解析:读懂两个循环的关系,是解这个题目的关键,本题的第一个for循环的作用是实现对数组元素的遍历,第二个循环的作用是排序。while(j>=0&&t>c[j]),这个语句是控制排序的关键语句,它即实现了比较两个元素大小的作用,又实现了元素向后移动的作用,不断地把大的数据向前移动,直到找到一个比它小的,或到数据的上界为止。

57.B解析:sub()函数的作用是将形参y和x的差赋给了z指向的那个内存地址,所以在sub(10,5,&A),10和5届于值传递,a是属于地址传递,也就是a与z指向了同一个存储单元,在执行函数后,a的值随*z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&B)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&c)后,c的值发生变化,其值为-12-(-5)=-7。

58.A解析:本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用“留下”字符的算法,以前的题目亦是如此。用str[i]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存str[j]中。注意j的下标变化、初值及最后加串结束符“\\0”。

59.C解析:考查了一维字符数组的定义和初始化。选项A)和B)定义的数组空间太小,至少应该为6个字符的长度才可以。选项D)中的指针s未赋初值,所以指向一个不确定的地址,因而不能用scanf输入数据到这一指针所指向的地址中。

60.C解析:在循环过程中,i的值一直没有被改变,所以这是一个死循环。

61.C

62.A在本题中,程序首先定义了两个整型变量x和y,然后通过键盘输入的方式给这变量x赋初值。执行语句y=x>12?x+10:x-12;,该题语句是将x>12?x+10:x-12的运算结果保存到变量y中,由于从键盘输入的

温馨提示

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

最新文档

评论

0/150

提交评论