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

下载本文档

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

文档简介

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

一、单选题(20题)1.

2.运行下面程序段的输出结果是().A.A.Set

B.Setup

C.Setup

D.'S''e''t'

3.考虑函数原型voidtest(inta,intb=7,charz='*'),下面的函数调用中,属于不合法调用的是()。

A.test(5)B.test(5,8)C.test(6,'#')D.test(0,0,'*')

4.下面的哪一个保留字不能作为函数的返回类型()。

A.voidB.intC.newD.long

5.带有头节点的单向链表head,其3个数据节点A、B、C的连接关系如下图所示:节点类型的定义为structlink{doubledt;structlink*next;};若指针P指向A节点,在不改变P指向的前提下,以下选项中不能访问C节点数据成员dt的表达式是()。A.*(*p).next->next->dt

B.p->next->next->dt

C.(*(*(*p).next).next).dt

D.(*(p->next->next)).dt

6.下面关于B树和B+树的叙述中,不正确的结论是()。

A.B树和B+树都能有效的支持顺序查找

B.B树和B+树都能有效的支持随机查找

C.B树和B+树都是平衡的多叉树

D.B树和B+树都可用于文件索引结构

7.任何一棵二叉树的叶子结点在前序、中序和后序遍历序列中的相对次序()。

A.不发生改变B.发生改变C.不能确定D.以上都不对

8.广义表((a),a)的表头是()。

A.aB.()C.(a)D.((a))

9.下面关于串的的叙述中,哪一个是不正确的()。

A.串是字符的有限序列

B.空串是由空格构成的串

C.模式匹配是串的一种重要运算

D.串既可以采用顺序存储,也可以采用链式存储

10.已知字母A的ASCII码为十进制的65,下面程序main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,%c\n",ch1,ch2);}的输出是_________。

A.67,DB.B,CC.C,DD.不确定的值

11.有以下程序:#include<stdio.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf(“%d,%d\n”,a,b);}程序运行后的输出结果是()。

A.9,18B.8,11C.7,11D.10,14

12.

13.能正确表示x>=3或者x<1的关系表达式是()。

A.x>=3orx<1B.x>=3|x<1C..x>=3||x<1D.x>=3||x<1

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

A.C语言编写的函数源程序,其文件名后缀可以是C

B.C语言编写的函数都可以作为一个独立的源程序文件

C.C语言编写的每个函数都可以进行独立的编译并执行

D.一个C语言程序只能有一个主函数

15.

16.以下说法错误的是()。

A.C语言中的常量是指在程序运行过程中经常被用到的变量

B.C语言中的常量是指在程序运行过程中其值不能被改变的量

C.C语言中的常量可以用一个符号名来代表

D.C语言中的常量可以用宏来定义

17.在一个C语言源程序文件中所定义的全局变量,其作用域为()。

A.所在文件的全部范围B.所在程序的全部范围C.所在函数的全部范围D.由具体定义位置和extern说明来决定范围

18.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

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

A.测试工作必须由程序编制者自己完成

B.测试用例和调试用例必须一致

C.一个程序经调试改正错误后,一般不必再进行测试

D.上述三种说法都不对

20.若变量均已正确定义并赋值,以下合法的C语言赋值语句是()。

A.x=y==5;B.X=n%2.5:C.x+n=i;D.x=5=4+1:

二、2.填空题(20题)21.结构化分析方法是面向______进行分析的方法。

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

main()

{inty=9;

for(;y>0;y--)

if(y%3==0)

{printf("%d",--y);continue;}}

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

voidfun(int*n)

{while((*n))

printf("%d",(*n)--);

}

main()

{inta=10;

fun(&a);

}

24.有以下程序:

main()

{charstr[]="xyz",*ps=str;

while(*ps)ps++;

for(ps--;ps-str>=0;ps--)puts(ps);

}

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

25.有以下程序:

voidfun(int*a,inti,intj)

{intt;

if(i<j)

{t=a[i];a[i]=a[j];a[j]=t;

i++;j--;

fun(a,i,j);

}

}

main()

{intx[]=(2,6,1,8),i;

fun(x,0,3);

for(i=0;i<4;i++)printf("%2d",x[i]);

}

程序运行后的输出结果是【】。

26.\13'在内存中占1个字节,"\12"在内存中占______个字节。

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

#include

main()

{chara,b;

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

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

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

}

28.有以下语句段

intn1=10,n2=20;

printf("【】",n1,n2);

要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。

n1=10

n2=20

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

#include<stdio,h>

main()

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

if(c=a)printf("%d\n",c);

elseprintf("%d\n",b);}

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

main()

{inta=0;

a+-(a=8);

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

}

31.当线性表的操作无插入和删除时,采用【】结构为好。

32.某二义树中度为2的结点有18个,则该二叉树中有______个叶子结点。

33.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{inti,j,【】;charstr[]={"1234567"};

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

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

34.执行以下程序后,输出‘#’号的个数是【】。

#include<atdio.h>

main()

{inti,j;

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

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

}

35.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【】和选择排序等。

36.程序的功能是将文件filel.c的内容输出到屏幕上并复制到文件file2.c中,请填空。

#include<stdio.h>

main()

{FILE【】;

fp1=fopen("filel.c","r");

fp2=fopen("file2.c","w");

while(!feof(fp1))putchar(getc(fp1));

rewind(fp1);

while(!feof(fp1))putc(【】);

fclose(fp1);

fclose(fp2);

}

37.下面程序的功能是:计算110之间的奇数之和与偶数之和,请填空。

#include<stdio.h>

main()

{inta,b,c,I;

a=c=0;

for(I=0;I<=10;I+=2)

{a+=I;

【】;

c+=b;}

printf("偶数之和=%d\n",a);

printf("奇数之和=%d\n",c-11);}

38.若有如下结构体说明:

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。

【】t[20]

39.软件设计模块化的目的是______。

40.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。

structnode

{intinfo;

【】link;};

三、1.选择题(20题)41.请读程序:#include<stdio.h>f(intb[],intn){inti,r;r=l;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intxa[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}上面程序的输出结果是()

A.720B.120C.24D.6

42.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是_______。

A.地址传递B.单向值传递C.由实参传给形,再由形参传回实参D.传递方式由用户指定

43.若有以下定义:structlink{intdata;strnctlink*next;}a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:

指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是

A.a.next=c;c.next=b;

B.p.next=q;q.next=p.next;

C.p->next=&c;q->next=p->next;

D.(*p).next=q;(*q).next=&b;

44.下列数据结构中,属于非线性的是()。

A.线性表B.队列C.树D.栈

45.设有下列二叉树:

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

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

46.下面程序的输出结果是_______。#include<stdio.h>main(){char*p[]={"DOOL","OPK","H","SP"};inti;for(i=3;i>=0;i-,i-)printf("%c",*p[i]);printf("\n");}

A.SOB.SPC.SPOPKD.SHOB

47.若以下定义:structlink{intdata;strucklink*next;}a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:

指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是

A.a.next=c;c.next=b;

B.p.next=q;q.next=p.next;

C.p->next=&c;q->next=p->next;

D.(*p).next=q;(*q).next=&b;

48.以下只有使用时才为该类型变量分配内存的存储类型说明是()

A.auto和static

B.auto和register

C.register和static

D.extern和register

49.在E-R图中,用来表示实体之间联系的图形是()

A.矩形B.椭圆形C.菱形D.平行四边形

50.设有定义语句:charc1=92,c2=92;,则以下表达式中值为零的是A.c1^c2B.c1&c2C.~c2D.c1|c2

51.下列程序的输出结果是()。#include<stdio.h>main(){chara[]={'a','b','c','d','e','f,'\0'};inti,j;i=sizeof(a);j=strlen(a);printf("%d,%d",i,j);}

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

52.软件详细设计的主要任务是确定每个模块的()。

A.算法和使用的数据结构B.外部接口C.功能D.编程

53.关系代数运算是以______为基础的运算。

A.关系运算B.谓词运算C.集合运算D.代数运算

54.下列术语中,与数据的存储结构有关的是______。

A.堆B.队列C.二叉树D.散列表

55.若变量已正确定义,有以下程序段inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;printf("%d,%d,%d\n",a,b,c);其输出结果是

A.程序段有语法错B.3,5,3C.3,5,5D.3,5,7

56.下列程序的运行结果是()。#include<stdio.h>main(){staticchara[]="Languagef",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=8;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}

A.gaeB.angC.programD.有语法错

57.下列程序的输出结果是()。#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

58.有以下程序:intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%if",&x);x=fun(x);printf("%d\n",x);}执行程序时,给变量X输入10,程序的输出结果是()。A.55B.54C.65D.45

59.下列程序执行后的输出结果是()。#include<stdio.h>main(){inta[3][3],*p,i;p=&a[0][0];for(i=1;i<9;i++)p[i]=i+1;printf("%d\n",a[1][2]);}

A.3B.6C.9D.随机数

60.若w、x、y、z、m均为int型变量,则执行下列的语句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;

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

四、选择题(20题)61.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

62.下述程序的运行结果是()。

#includedstdio.h>

#includedstrin9.h>

main

{char*s1="abDuj";

char*s2="ABdUG";

intt;

t=strcmp(s1,s2);

printf("%d",t);

}

A.正数B.负数C.零D.不确定的值

63.下列程序的运行结果是()。main(){intx=1,y=3,a=0;while(x++!=(y-=1)){a+=1;if(y<x)break;}printf("%d,%d,%d\n",x,y,a);}

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

64.有以下程序:

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

A.1,2,3,0,0,0,0,0,0,0,

B.1,2,3,1,2,3,0,0,0,0,

C.123,0,0,0,0,123,0,0,0,0,

D.1,2,3,0,0,1,2,3,0,0,

65.若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

66.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}该程序的输出结果是()。

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

67.

68.软件工程出现的原因是

A.程序设计方法学的影响B.软件产业化的需要C.软件危机的出现D.计算机的发展

69.

70.在结构化程序设计方法中,下面内聚性最弱的是()。

A.逻辑内聚B.时间内聚C.偶然内聚D.过程内聚

71.

72.在软件开发中,需求分析阶段产生的主要文档是()。A.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书

73.

下列程序的运行结果为()。

#include<stdio.h>

main

{structdate

{intyear,month,day;

}today;

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

}

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

74.

75.

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

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

76.

下列程序的运行结果是()。

#include<stdio.h>

#defineADD(x)x+x

main

{intm=1,n=2,k=3;

intS=ADD(m+n)*k;

printf("s=%d",s);

}

A.sum=18B.sum=10C.sum=9D.sum=25

77.有以下程序:main(){inti=1,j=1,k=2;if((j++‖k++)&&i++)printf("%d,%d,%d\n",i,j,k);}执行后的输出结果是______。

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

78.

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

main

{inti=0,S=0;

for(;;)

{

if(i==3||i==5)continue;

if(i==6)break;

i++;

s+=i:

};

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

}

A.10B.13C.21D.程序陷入死循环

79.若有定义语句:“charS[3][10],(*k)[3],*p;”,则以下赋值语句正确的是()。

A.p=S;B.p=k;C.p=s[0];D.k=s;

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。

例如,若输入“I,anl,A,Student”,则输出“i,am,a,student”。

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

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

试题程序:

六、程序设计题(1题)82.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组stu中,请编写函数proc,其功能是:按分数的高低排列学生的记录,高分在前。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>#defineMl6typedefstruct{charnum[l0];intS;}STREC:voidproc(STRECa[]){inti,j;STRECt;for(i=1;i<M;i++)/*用冒泡法来按从高到低排序*/for(j=0;j<M-1;j++)。if(a[j].s<a[j+1].s)//*按分数的高低排列学生的记录,高分在前*/{t=a[j];a[j]=a[j+1];a[j+1]=t;)}voidmain{STRECstu[M]={{"GA005",85),{"GA003",76},{"GA002",69},{"GA004",85),{"GA001",91),{"GA007",72),{"GA008",64),{"GA006",87),{"GA015",85),{"GA013",91),{"GA012",64),{¨GA014",91),{"GA011",66),{"GA017",64},{"GA018",64),{"GA016",72}};inti;proc(stu);printf("Thedataaftersorted:\n");for(i=0;i<M;i++){if(i%4==0)//每行输出4个学生记录printf("n");printf("%s%4d",stu[i],num,stu[i].s);}printf("\n");}

参考答案

1.A

2.A

3.C

4.C

5.Alink结构体中的next是链表中下一个节点的地址。由于p当前指向节点A,因此p->next是B的地址。p->next->next是C的地址,访问C的节点数据成员dt可以使用C的地址访问,即p->next->next->dt,选项B正确。或者使用解引用“*”运算符:(*p)表示节点A,(*p).next表示B的地址,*((*p).next)表示节点B,(*((*p).next)).next表示C的地址,*((*((*p).next)).next)表示节点C,所以C的数据成员dt可以表示为(*((*(*p).next).next)).dt,因为“.”运算符优先级高于“*”运算符,所以也可以写为(*(*(*p).next).next).dt,选项C正确。同理,也可以既使用指针运算符,又使用解引用运算符来访问C的节点数据成员dt,即(*(p->next->next)).dt,选项D正确。选项A中,*p表示A节点,(*p).next表示节点B的地址,由于“->”运算符的优先级高于“*”运算符,因此先执行“->”,即表达式(*p).next->next->dt引用了C节点的数据成员dt,然后再执行解引用运算“*”,这是错误的。故本题答案为A选项。

6.A

7.A

8.C

9.B

10.A解析:由于字符“5”和“3”的ASCII码相差为2,所以ch1经过运算后的值应为65+2=67;同理,ch2经过运算后的值应为65+3=68,即是字符“D”。

11.D第1次循环,a的值为1,满足条件,执行“b+=a;”与“a+=2;”,则b的值变为3,a的值变为3。执行“a++”,a的值为4,满足条件进入第2次循环,执行完循环体后,b的值为7,a的值为6。执行“a++”,a的值为7,满足条件进入第3次循环,执行完循环体后,b的值为14,a的值为9。执行“a++”,a的值为10。条件不满足,退出循环。故本题答案为D选项。

12.B

13.C

14.C函数是指预先定义功能块,其目的是提高程序的重用性。在C语言中函数的源程序,后缀名可以为C。C语言所编写的函数都可以是一个独立的源文件。一个C语言程序只能有一个主函数。C语言中编写的函数不是每个都可以独立地编译和执行的,因为C语言中程序的开始为主函数,如果程序中没有主函数则无法进行编译和执行。

15.C

16.AC语言中的常量是指在程序运行过程中其值不能被改变的量,它可以用宏来定义,用一个符号名来代表。选项A错误,选项B、C、D正确。本题答案为A选项。

17.D

\n全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序该变量是一个已在外部定义了的全局变量,这时全局变量的作用域从extern说明处起,延伸到该函数末尾。

\n

18.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。

19.D解析:测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷,一般应当避免由开发者测试自己的程序,因此,选项A错误;测试是为了发现程序错误,不能证明程序的正确性,调试主要是推断错误的原因,从而进一步改正错误,调试用例与测试用例可以一致,也可以不一致,选项B错误;测试发现错误后,可进行调试并改正错误:经过调试后的程序还需进行回归测试,以检查调试的效果,同时也可防止在调试过程中引进新的错误,选项C错误。

20.AB选项中运算符“%”的运算对象为整数。C选项中不能将变量赋给表达式“x+n”。D选项中不能将表达式“4+1”赋给常量5。故本题答案为A选项。

21.数据流数据流解析:结构化分析方法的实质是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

22.852852解析:循环前,变量y的值为9,其中,循环语句在y大于0情况下循环,每次循环后y的值都减1。循环体是当y能被3整除时输出表达式--y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的值变成3,让y减1变成2,输出2;再经两次循环后,y的值变成0,结束循环,所以程序输出852。

23.1.09877e+010

24.zyzXyzzyzXyz解析:本题考查字符型指针变量的应用。程序中字符指针变量ps指向字符串'xyz',while循环语句的作用使ps指向字符串结尾,for循环的执行过程如下。

第一次循环:ps指向字符串'z',输出z。

第二次循环:ps指向字符串'yz',输出yz。

第三次循环:ps指向字符串'xyz',输出xyz。

25.81628162解析:第一次调用函数fun时,x[0]=2、xL1]=6、x[2]=1、x[3]=8,执行完函数fun后,x[0]与x[3]的值互换,即x[0]=8、x[1]=6、x[2]=1、x[3]=2;第二次调用函数fun时,i=1、j=2,故将x[1]与x[2]的值互换,即得x[0]=8、x[1]=1、x[2]=6、x[3]=2。

26.22解析:'\\13':表示八进制数13表示的ASCII字符,是一个字符,占一个字节;而”\\12”是个字符串,除了八进制数12表示的ASCII字符占一个字节外,还有在字符串的末尾加上串结束标志“'\\0'”,所以共有2个字节。

27.1B

28.n1=%d\nn2=%d\n或n1=%d\nn2=%d或n1=%2d\nn2=%2d\n或n1=%2d\nn2=%2dn1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d\\nn2=%2d解析:printf函数有两种参数:格式控制参数和输出项参数,其中格式控制参数由两种成分组成:格式说明和普通字符,普通字符将被简单地复制显示,格式说明项将引起一个输出参数项的转换与显示,它是由“%”引出并以一个类型描述符结束的字符串。本题中,n1=和n2=就是普通字符,可以直接显示,又因为n1,n2为整数,所以格式说明项为%d,也可以在%与d之间加上域宽,另外还要在每行输出结束时加转义字符\\n进行换行。所以,应填写n1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2dn或n1=%2d\\nn2=%2d。

29.11解析:该程序要注意的是if语句的判断条件“c=a”是赋值,而不是“c==a”。由于a=1,故条件c=a使c的值为1(真),所以输出c的值1。

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

31.顺序顺序解析:当线性表的操作无插入和删除时,在对线性表进行操作时,不能改变元素的位置,采用顺序结构的效率高于链式结构。因为采用顺序结构,对元素的查找可通过计算得到。

32.1919解析:二叉树具有如下性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。根据题意,度为2的节点为18个,那么,叶子结点就应当是19个。

33.k-1k,-1解析:颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]位于str[j]的前面,即i<j。字符串末元素的下标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和str[j],使用了变量k,该变量应在程序的变量定义部分中一起定义,所以在第一个空框处应填入k。

34.66解析:本题中,i,j分别为外循环和内循环的循环控制变量,外层循环共执行了4次。当i=1时,由于内层循环判断条件(2<=1)为假不执行内层循环。当i=2时,执行内层循环,输出一个#;当i=3时,内层循环循环两次,输出两个#;当i=4时,内层循环循环三次,输出三个#;当i=5时,循环判断条件不成立,退出外层循环。所以一共输出6个#。

35.交换排序交换排序解析:常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)。注意:常见的排序方法及其作用机制和区别。

36.*fp1*fp2getc(fp1)fp2*fp1,*fp2\r\ngetc(fp1),fp2解析:本题主要考查函数intputc(intch,FILE*fp)的功能,把ch中的字符输出到fp所指文件,以及intgetc(FILE*fp),从fp所指文件中读取一个字符。

37.b=I+1b=I+1解析:本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2后的和累加至a,所以a的值就是110之间的偶数之和;b的值是111之间的奇数和,但在输出b值时,c去掉多加的11,即为110之间的奇数之和。

38.strudctSTRUstrudctSTRU解析:结构件类型是构造数据类型,是用户自己定义的一种类型。

结构体类型的定义:

struct结构体类型名

{

成员项表;

};

定义结构体变量的的形式为:

struct结构体类型名变量1,变量2,...?

其中变量包括;一般变量、指针变量、数组变量等。

39.降低复杂性降低复杂性

40.structnode*structnode*解析:本题中的结构类型名为structnode,所以空白处应填:structnode*。即定义一个指向自身的结构体指针。

41.B

42.B解析:C语言函数中的参数传递方式有传值与传址两种方式,传值方式是指将实参的值复制一份传递给形参,而传址方式是指将实参的变量地址传递给形参,也就是实参的引用。

43.D解析:本题考查链表的数据结构,必须利用指针变量才能实现,即一个结点中应包含一个指针变量,用它存放下一结点的地址。

44.C解析:线性结构,是指数据元素只有一个直接前件元素和直接后件元素。线性表是线性结构。栈和队列是指对插入和删除操作有特殊要求的线性表,树是非线性结构。

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

46.A解析:p[0]存放的是“BOOL\\0”的首地址;p[1]存放的是“OPK\\0”的首址等。在printf语句中输出的*p[i]表示p[i]字符串的第一个字符。在for循环中,i的初值为3,那么输出的第一个字符为“S”,接着两次i-,则输出的值为*p[1],即字符“0”,所以本题的输出为SO。

47.D解析:本题考核的知识点是在链表中插入结点的操作。在本题中指针p.指向变量a,q指向变量c。要把c插入到变量n和变量b之间,就应该首先让变量a的指针域指向变量c,即(*p).next=q,然后让变量c的指针域指向变量b,即(*q).next=&b.所以,4个选项中D为所选。

48.B

49.C解析:E-R模型可用E-R图来表示,它具有3个要素:①实体(型)用矩形框表示,框内为实体名称。②属性用椭圆型来表示,并用线与实体连接。属性较多时也可以将实体及其属性单独列表。③实体间的联系用菱形框表示。用线将菱形框与实体相连,并上标注联系的类型。

50.A解析:四种位操作,只有第c1^c2的结果返回都为0的二进制数,即为零。

51.B解析:sizeof()函数的功能是返回字符串所占的字节数,strlen()函数的功能是返回字符串的长度,其中'\\0'是一个转义字符,它占存储空间,但不计入串的长度。

52.A解析:从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。详细设计的任务就是要决定各个模块的实现算法,并精确表达出这些算法。本题正确答案为选项A。

53.C解析:关系代数是以集合代数为基础女发展起来的,它是以关系代数作为运算对象的一组高级运算的集合。它的基本操作是并、交、差、笛卡尔积,另外还包括针对数据库环境专门设计的操作,包括对关系进行垂直分割(投影)、水平分割(选择)、关系的结合(连接)等。

54.D

55.B解析:本题考查if条件语句。a=3,b=5,因此a>b条件不成立,c=a=3。此时c!=a条件不成立,不执行c=b;语句,c的值仍然为5。结果a=3,b=5,c=3。

56.A解析:本题考查指针的用法,if(*(p1+k)==*(p2+k))语句的功能是判断两个数组中的字符是否相同,如果相同则输出。

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

58.A函数fun()通过递归调用实现的功能为n+(n-1)+…+1,故程序的输出结果为55。

59.B解析:本题中,a[1][2]是二维数组中的第6个元素,对应for循环中i的值为5,p[5]=5+1。

60.A解析:条件表达式“a?b:c”的含义是:当a为真时,其值等于表达式b的值;当a为假时,其值等于表达式c的值。

表达式运算过程:第1个表达式:w=2<x=3为真,所以返回w的值,即m=w=2;第2个表达式:m=2<z=5为真,所以返回m的值,即m=2;第3个表达式:w=2<y=4为真,所以返回m的值,即m=2。

61.D解析:文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在3个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。注意:文件系统和数据库系统各自的特点,人工管理阶段及数据库系统三代的特点。

62.A本题考查符符串比较函数和两个字符串比较的原则这两个知识点。

\n(1)两字符串比较的原则是依次比较两个字符串同一位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同,则ASCII码值较大的字符所在的字符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大(2)strcmp(s1,s2)的返回值,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数。

63.D解析:本题考查while循环。第一次循环,先拿x的值和(y-1)比较,此时x=1,y-1=2,循环条件成立,比较完将x的值加1,此时x=2,进入循环,a=a+1=1,判断if语句的控制条件是否成立,y<x不成立,接着执行下一次循环。第二次循环,先拿x的值和(y-1)比较,此时x=2,y-1=1,循环条件成立,比较完将x的值加1,此时x=3,进入循环,a=a+1=2,判断if语句的控制条件是否成立,y<x成立,执行break语句退出循环。

64.D本题考查文件操作函数,两次fwrite后,币文件中已经写入l,2,3,O,0,l,2,3,0,0然后将文件币中的内容重新写人数组a中,最后输出a为1。2,3,0,0,1,2,3,0,0,所以选项D正确。

65.A函数fgete()从文件读入一个字符到指定变量。函数fputc()将指定字符写入审文件中,函数fprinff(),fwrite()均是写入文件操作函数。因此选项B,c。D错误。答案为A选项。

66.AC语言规定case后面跟的必须是整型常量表达式。进入case后,如果没有遇到break语句就会一直往下执行,后面其他case或default分支的语句也会被执行到,直到遇到break,或者执行到整个switch语句块的末尾。题目中给出了三个case语句:case0、case1、case2。当x为1

温馨提示

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

评论

0/150

提交评论