2021-2022年吉林省吉林市全国计算机等级考试C语言程序设计_第1页
2021-2022年吉林省吉林市全国计算机等级考试C语言程序设计_第2页
2021-2022年吉林省吉林市全国计算机等级考试C语言程序设计_第3页
2021-2022年吉林省吉林市全国计算机等级考试C语言程序设计_第4页
2021-2022年吉林省吉林市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年吉林省吉林市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有下列二叉树:

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

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

2.对于循环队列,下列叙述中正确的是()。

A.队头指针是固定不变的

B.队头指针一定大于队尾指针

C.队头指针一定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

3.A[N][N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是()。

A.i(i-1)/2+jB.j(j-1)/2+iC.i(j-i)/2+1D.j(i-1)/2+1

4.

5.程序中对fun函数有如下说明

void*fun();

此说明的含义是:A.fun了数无返回值

B.fun函数的返回值可以是任意的数据类型

C.fun函数的返回值是无值型的指针类型

D.指针fun指向一个函数,该函数无返回值

6.有以下函数:intfun(char*x,char*y){intn=0;.while((*x==*y)&&*x!="\0){x++;y++;n++;}returnn;}函数的功能是()。

A.将y所指字符串赋给x所指存储空间

B.查找和y所指字符串中是否有"\0'

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

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

7.以下正确的字符常量是()。A.'\089'B.'\012'C.'\0XAB'D.'\0xab'

8.用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,最少需要()长的二进制字符串

A.12B.14C.18D.24

9.有下列程序:main{intk=5,n=0;while(k>0){switch(k){dcfault:break;case1:n=n+k;case2:case3:n+=k;}k--;}printf("%d\n".n);}程序运行后的输出结果足()。A.0B.4C.6D.7

10.下列语句组中正确的是()。

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

B.char*s;s=“BOOK!”;

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

D.chars[];s=“BOOK!”;

11.函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,但函数不完整:intfun(int*a,intn){int*p,*s;for(p=a,s=a;p-a<=""p="">if(________)s=p;return*s;}在if语句下划线处应填入的选项是()。

A.p>sB.*p>*sC.a[p]>a[s]D.p-a>p-s

12.

13.下面程序的运行结果是()。

#inelude<stdio.h>

voiddel(char*s)

{inti,j;

char*a;

a=s:

for(i=0,j=0;a[i]!='\0';i++)

{if(a[i]>='0'&&a[i]<='9')

{s[j]=a[i];

j++;

}

s[j]='\0';

}

}

main

{char*s="aa89gggh";

del(s):

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

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

14.要解决散列引起的冲突问题,最常用的方法是()

A.数字分析法、除留余数法、平方取中法

B.除留余数法、线性探测法、平方取中法

C.线性探测法、二次探测法、链地址法

D.除留余数法、线性探测法、二次探测法

15.以下关于C语言的叙述中正确的是()。

A.C语言中的注释不可以夹在变量名或关键字的中间

B.C语言中的变量可以在使用之前的任何位置进行定义

C.在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致

D.C语言的数值常量中夹带空格不影响常量值的正确表示

16.在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。

A.概要设计B.详细设计C.可行性分析D.需求分析

17.

18.有以下程序

main()

{

intn[3],i,j;

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

n[i]=0;

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

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

n[j]=n[i]+1;

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

}

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

B.1

C.0

D.3

19.

20.甲乙两个聪明人上街,捡到一张10块钱的购物卡,两人就想出一个办法来分配这张卡。两个分别将自己出的价格写在纸上,然后看谁出的价高就给谁,并且那个出价高的人要把出的钱给对方。现在甲有6块钱,乙有8块钱,甲乙双方都知道对方当前有多少钱并且都希望自己收益高于对方。问最后谁获得的钱多()

A.甲多B.乙多C.一样多D.有可能出现有人赔钱的情况

二、2.填空题(20题)21.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

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

23.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。

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

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

}

25.一般来说,算法可以用顺序、选择和______三种基本控制结构组合而成。

26.数据模型按不同应用层次分成3种类型,它们是概念数据模型、【】和物理数据模型。

27.软件测试的方法有动态测试、静态测试和【】13种。

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

main()

{intX=10,y=20,t=0;

if(X==y)t=x;x=y;y=t;

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

}

29.若有以下程序:

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

}

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

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

31.在数据库理论中,数据物理结构的改变,如存储设备的更换、物理存储的更换、存取方式等都不影响数据库的逻辑结构,从而不引起应用程序的变化,称为【】。

32.设有定义:

struct{inta;floatb;charc;}abc;*p_abc=&abc;

则对结构体成员a的引用方法可以是abc.a和p_abc【】a。

33.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

34.将经过确认测试的软件与外设、网络等连接在一次运行的测试叫【】

35.以下isprime函数的功能是判断形参a是否为素数,如果是素数,函数返回1,否则返回0。

intisprime(inta)

inti;

for(i=2;i<=a/2;i++)

if(a%i==0)【】;

【】;

}

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

37.一个项目具有一个项目主管,一个项目主管叫‘管理多个项目,则实体“主管”与实体“”的联系属于______。

38.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下:

1

11

121

1331

14641

其构成规律是,第0列元素和主对角线元素均为1,其余元素为其左上方和正上方元素之和,数据的个数每行递增1。请将程序补充完整。

#defintN6

voidYangHui(int*[N][N])

{

inti,j;

x[0][0]=1

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

{

x[i][0]=【】=1

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

x[i][j]=【】;

}

}

39.按“先进后出”原则组织数据的数据结构是[]。

40.下面的程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。

#include<stdio.h>

#include<stdlib.h>

FILE*fp;

main()

{charch;

if((fp=fopen(【】))==NULL)exit(0);

while((ch=getchar())!='@')fputc(ch,fp);

fclose(fp);

}

三、1.选择题(20题)41.下列选项中不符合良好程序设计风格的是A.源程序要文档化B.数据说明的次序要规范化C.避免滥用goto语句D.模块设计要保证高耦合、高内聚

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

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

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

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

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

43.下列程序的输出结果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i+)printf("%d,",a[i]);}

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

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

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

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

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

A.一个算法的空间复杂度大,则其时间复杂度必定大

B.一个算法的空间复杂度大,则其时间复杂度必定小

C.一个算法的时间复杂度大,则其空间复杂度必定小

D.上述三种说法都不对

45.若有说明语句:double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是()。

A.*p=&a;sCanf("%1f",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%1f",*p);

D.p=&a;scanf("%1f",p);

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

A.C语言编译时不检查语法

B.C语言的子程序有过程和函数两种

C.C语言的函数可以嵌套定义

D.C语言所有函数都是外部函数

47.若有说明inta[][3]={0,0);,则不正确的叙述是()。

A.数组a的每个元素的初值都是0

B.数组a的第一维大小为1

C.数组a的行数为1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

48.以下选项中,与k=n++完全等价的表达式是

A.k=n,n=n+1B.n=n+l,k=nC.k=++nD.k+=n+1

49.若a=1,b=2,则a|b的值是______。

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

50.设有如下定义,则执行表达式(nFa>b)&&(n=c>d)后,n的值为______。inta=1,b=2,c=3,d=4,m=2,n=2;

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

51.以下不属于对象的基本特点的是()

A.分类性B.多态性C.继承性D.封装性

52.有以下程序:#include<stdio.h>fun(charp[][10]){intn=0,i;for(i=0;i<7;i++)if(p[i][0]=='T')n++;returnn;}main(){charsir[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};prlnff("%d\n",fun(str));}程序执行后的输出结果是()。

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

53.以下能正确定义一维数组的选项是A.intnum[];

B.#defineN100intnum[N];

C.intnum[0..100];

D.intN=100;intnum[N];

54.以下对C语言函数的有关描述中,正确的是______。

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

B.函数既可以嵌套定义又可以递归调用

C.函数必须有返回值,否则不能使用函数

D.C程序中有调用关系的所有函数必须放在同一个源程序文件中

55.若以下定义: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;

56.下面语句中不能定义一个数组,元素值依次分别为1,1,1,0,0的是______。

A.staticinta[5]={1,1,1,0,0};

B.staticinta[5]={1,1,1};

C.staticinta[]={1,1,1,0,0};

D.staticinta[5]={1*2,0*3};

57.数据结构中,与所使用的计算机无关的是数据的()。A.存储结构B.物理结构C.逻辑结构D.物理和存储结构

58.假定建立了以下链表结构,指针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);

59.表达式0x130x17的值是()。

A.0x04B.0x13C.0xE8D.0x17

60.指针变量p的基类型为int,并已指向一连续存储区,若p中当前的地址值为1234,则执行p++后,p中的值为()

A.1234B.1235C.1236D.1237

四、选择题(20题)61.下列程序的输出结果是()。#include<stdio.h>main{inta[2][3]={{1,2,3),{4,5,6)),(*p)[3],i;p=a;for(i=0;i<3;i++){if(i<2)p[1][i]=p[1][i]-1;elsep[1][i]=1;}printf("%d\n",a[o][1]+a[1][1]+a[1][2]);}A.8B.7C.12D.9

62.设有以下定义inta=0;doubleb=1.25;charc=’A’;#defined2则下面语句中错误的是()

A.a++;B.b++C.c++;D.d++;

63.在c语言中,只有在使用时才占用内存单元的变量,其存储类型是()。

A.auto和static

B.extern和register

C.auto和register

D.static和register

64.语句int(*ptr)的含义是()。

A.ptr是一个返回值为int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

65.

66.若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式a<b?a:c<d?c:d的值是()。A.A.1B.2C.3D.4

67.

有以下程序段

intj;floaty;charname[50]:

scanf("%2d%f%s",&i,&.y,name):

当执行上述程序段,从键盘上输入555667777abc后,y的值为()。

A.55566.0B.566.0C.7777.0D.566777.0

68.有以下程序(注:字符a的ASCIl码值为97)}程序运行后的输出结果是()。

A.789B.abcC.7890D.979899

69.

70.下列叙述中错误的是()。

A.一种数据的逻辑结构可以有多种存储结构

B.数据的存储结构与数据的处理效率无关

C.数据的存储结构与数据的处理效率密切相关

D.数据的存储结构在计算机中所占的空间不一定是连续的

71.

72.在16位编译系统上,若有定义“inta[]={10,20,30},*p=&a;”,当执行“P++;”后,下列说法错误的是()。

A.P向高地址移了一个字节B.P向高地址移了一个存储单元C.P向高地址移了两个字节D.P与a+1等价

73.

74.利用E-R模型进行数据库的概念设计,可以分成3步:首先设计局部E-R模型,然后把各个局部E-R模型综合成一个全局的模型,最后对全局E-R模型进行(),得到最终的E-R模型。

A.简化B.结构化C.最小化D.优化

75.已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是()

A.堆排序B.直接插入排序C.快速排序D.直接选择排序

76.

77.假定已建立以下链表结构,且指针p和q已指向如图所示的结点:

78.若有以下的定义:‘intt[3][2];”,能正确表示t数组元素地址的表达式是()。

A.&t[3][2]B.t[3]C.t[l]D.t[2][2]

79.数据库管理系统中负责数据模式定义的语言是()。A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

80.

五、程序改错题(1题)81.下列给定程序中函数proc的功能是:取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为l23456789时,t中的数为2468。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。

则函数值为59。

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

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

试题程序:

参考答案

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

2.D循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。

3.B

4.B

5.D解析:返回指针的函数定义为:返回值类型,函数名(\u3000\u3000),而指向函数的指针定义为:返回值类型(*变量名)(\u3000\u3000)。本题中函数fun返回一个无类型的指针。

6.C本题中由循环条件可知遇到“0或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符个数。

7.B题目中的选项都以转义字符“\\”开头,“\\ddd”表示3位八进制数代表的一个ASCII字符,“\\xhh”表示2位十六进制数代表的一个ASCII字符。选项A中“089”是不合法的八进制数,错误;选项C、D中“\\0X”或“\\0x”不合法,错误;选项B表示八进制数012代表的ASCII字符,正确。本题答案为B选项。

8.B

9.D本题主要考查while循环语句和switchcase语句的使用方法。其执行步骤为:k=5时,跳出switch语句,然后k自减1;当k=4时,跳出switch语句,然后k自减1;当k=3时,n=13+k=0+3=3,跳出switch语句,然后k自减1;当k=2时n=n+k=3+2=5,跳出switch语句,然后k自减l;当k=1时,case1:n=n+k一5+1=6,没有break继续执行CaSe3;n=n+k=6+1=7,跳出switch语句,然后k自减1;当k=0时,退出循环,所以输出结果为7。

10.BA选项去掉花括号后,赋值正确;C选项和D选项应在定义时赋初值,因为数组名相当于常量,不能重新赋值。故本题答案为B选项。

11.B函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回。通过for循环比较,s始终指向最大值的那个元素。取指针的值,使用*P,因此比较使用*P和*s,又因为找最大值,当*s<*p时,修改指针s的指向。故本题答案为B选项。

12.A

13.D本题中del(char*s)函数实现的功能是:逐个读入S数组中的字符,如果遇到数字,则将数字存在s中,遇到非数字字符则跳过。所以最后输出的应该是字符串S中所有的数字的个数。

14.C

15.B解析:C语言中注释可以放在任何位置,选项A错误;C语言中的变量只要在使用之前定义即可,位置可以是使用前的任何位置,故选项B正确;C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选项C错误;C语言数值常量中不允许存在空格,选项D错误。

16.D解析:在需求分析阶段中,根据可行性研究阶段所提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求,即要明确系统必须做什么的问题。本题的正确答案为D。

17.A

18.D初始时定义一个大小为3个一维整型数组,第一个for语句是对数组赋初值,每个值都为0。后面是一个for语句的嵌套调用,外层的循环变量i的取值为[0,2],内层循环变量的取值范围为[0,2]。最初外层的循环变量i=0,内层的循环变量j取值从0到2,计算n[j]=n[0]+1,得到n[0]=1,n[1]=1,n[2]=1。外层for语句的循环变量为1时,内层的循环变量j取值从0到2,计算n[j]=n[1]+1,得到n[0]=2,n[1]=2,n[2]=2。外层for语句的循环变量为2时,内层的循环变量j取值从0到2,计算n[j]=n[2]+1,得到n[0]=3,n[1]=3,n[2]=3。最后的输出结果为3。

19.B

20.C

21.存储结构数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。

22.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。

23.封装封装

24.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。

25.循环循环解析:算法一般由顺序,选择和循环三种基本控制结构组合而成。

26.逻辑数据模型逻辑数据模型解析:数据是现实世界符号的抽象,而数据模型(datamodel)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成3种类型,它们是概念数据模型(conceptualdatamodel)、逻辑数据模型(logicdatamodel)、物理数据模型(physicaldatamodel)。

27.正确性测试正确性测试

28.20020,0解析:在主函数中首先定义了3个整型变量x、y、t,并分别给它们赋初值为10、20、0,接着执行汀语句,在if后面括号内的条件表达式中,条件x==y即10==20不成立,则不执行其后的语句t=x,然后退出if语句,顺序执行语句x=y;y=t;。执行完这两条语句后x的值变为20,y的值变为0,所以最后输出x、y的值为20和0。

29.99解析:在主函数中函数f(f(3,4),f(3,5))的返回值赋给do函数的第一个参数为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。

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

31.物理独立性物理独立性解析:数据的物理结构改变,不影响数据库的逻辑结构,从而不引起应用程序的变化,这种性质叫做物理独立性。

32.->->解析:结构变量abc有成员a,并有指针pabc指向结构变量abc,则引用变量abc成员a的形式有abc.a和p_abc->a。

33.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。

34.系统测试系统测试

35.return0或return(0)return1或return(1)return0或return(0)\r\nreturn1或return(1)解析:素数是指只能被1和其本身整除,不能被其他任何整数整除的数。根据if条件语句,若形参a对i取余等于0,则形参a可以被其他数整除,所以第一处填return0;若形参a对i取余不等于0,则形参s不可以被其他数整除,所以第二处填return1。

36.3691236912解析:本题考查最基本的for循环:for(cc=1;cc<5;cc++)规定循环次数为4次,每次a+=3即每次a的值增3,但因为fun函数中变量a为static类型,所以每次调用完于函数之后,变量a所做的改变都要保存。

37.一对多一对多解析:由于一个项目主管可以管理多个项目,而一个项目只能有一个项目主管,“项目主管”这个实体与“项目”这个实体的管理关系嘱于一对多。

38.x[i][i]x[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]x[i][i]\r\nx[i-1][j-1]+x[i-1][j]或x[i-1][j]+x[i-1][j-1]解析:在程序中有两重循环。在第一层for循环中将每行的第0列赋值为1,对角线上的元素赋值为1,显然在第一个空白处应该填入对角线上的元素即x[i][i],在第二重循环中给每行其他元素赋值,而在每行中除了第0列和对角线的元素外其他元素为其对应的上一行中同列和同列的前一列的元素相加,所以在第二个空白处应该填入x[i-1][j-1]+x[i-1][j]。

39.栈栈解析:栈和队列都是—种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的—端进行插入或删除操作,是—种“先进后出”的线性表;而队列只允许在表的—端进行插入操作,在另—端进行删除操作,是—种“先进先出”的线性表。

40.bi.dat"w"或"bi.dat""w+"bi.dat,'w'或'bi.dat','w+'解析:根据fopen函数的调用方式fopen(文件名,使用文件方式)和题意可得结果。

41.D解析:编程风格是在不影响性能的前提下,有效地编排和组织程序,以提高可读性和可维护性。更直接地说,风格就是意味着要按照规则进行编程。这些规则包括:(1)程序文档化。就是程序文档包含恰当的标识符、适当的注解和程序的视觉组织等。(2)数据说明。出于阅读理解和维护的需要,最好使模块前的说明语句次序规范化。此外,为方便查找,在每个说明语句的说明符后,数据名应按照字典顺序排列。(3)功能模块化。即把源程序代码按照功能划分为低耦合、高内聚的模块。(4)注意goto语句的使用。合理使用goto语句可以提高代码的运行效率,但goto语句的使用会破坏程序的结构特性。因此,除非确实需要,否则最好不使用goto语句。因此,本题的正确答案是D。

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

43.D解析:函数f()的功能是对两个数据互换。在主函数中指针变量p和q分别指向数组a[8)的首和尾,在while循环中实现从首尾开始数组元素的互换操作。

44.DD。【解析】算法的时间复杂度和算法的空间复杂度是从不同的角度来衡量算法的执行情况的,它们之间没有内在联系。

45.D解析:double*p,a;语句表示定义了一个指向双精度型的指针变量p和双精度型变量a,而语句p=&a表示将变量a的地址赋给指针变量p;scanf'('%1f',p)表示用键盘输入的数赋给指针变量p所指向的地址单元中。scanf()函数要求在输入double型数据,格式控制符必须用%1f(或%1e)。否则,数据不能正确输入。所以选项D)为正确答案。

46.D解析:C语言在编译时要检查其语法是否合法,故选项A错误。C语言的子程序由函数组成,过程不是C语言的组成部分,显然过程和函数并不是C语言的子程序的两种不同形式,故选项B错误。在C语言中明确规定:不能嵌套定义,即不能在函数内部定义函数,故选项C错误。一个完整的C程序有且仅有一个主函数(main()函数),其他函数都是在执行main()函数时,通过函数调用或嵌套调用来执行的,都是外部函数,故选项D正确。所以,4个选项中选项D符合题意。

47.D解析:本题考查给二维数组元素赋值。给二维数组元素赋值时应注意下列两点:①在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0。②二维数组第一维的大小由下列规则确定:当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小;当初值的个数不能被第二维的常量表达式的值除尽时,第一维的大小=所得商数+1。

48.A解析:在本题中k=n++,为后缀运算。根据其运算规则,首先n先加一,但n++表达式的值依然n原来的值,即k的值没有改变。选项A中先给k赋值为n,然后n再加1,k值没有变化,所以这个表达式和本题中表达式等价;选项B中先n加1,然后将n加1后的值赋给k,k变化了比原来的值大1,所以这个表达式和本题中表达式不等价;选项C中先计算表达式左边的表达式++n的值,执行++n后,左边的表达式的值为n的值加1,然后将n+1后的值赋给k,所以这个表达式和本题中的表达式不等价;选项D中表达式展开为k=k/(n+1),k的值发生了变化,所以这个表达式和本题中的表达式不等价.所以4个选项中A正确。

49.D

50.B

51.C解析:对象的基本特点包括;标识惟一性、分类性、多态性、封装性和独立性等。继承性不属于对象的基本特点。

52.B解析:数组名str作为函数参数将实参数组的起始地址传给形参数组p,当形参数组发生变化时主函数中的实参数组中的值也随之发生变化。调用fun函数执行for循环语句后,n为2,返回给main函数输出。

53.B解析:选项A定义数组时省略了长度,而C语言中规定,只有在定义并同时进行初始化时,数组的长度才可以省略,数组的长度为初始化时候的成员个数,故选项A错误;在C语言中规定,数组的长度必须是一个整数或整型常量表达式,故选项C不正确:定义时数组的长度不能使用变量表示,故选项D不正确,所以,4个选项中选项B符合题意。

54.A解析:在C语言中,提供了许多库函数供用户使用,因此选项D错误。

55.D解析:在本题,扣指针p指向变量a,q指向变量c。要把c插入到变量a和变量b之间,就应该首先让变量a的指针域指向变量c,即(*p).next=q,然后让变量c的指针域指向变量b,即(*q).next=&b。所以,4个选项中D为所选。

56.D解析:不可能用表达式的方式来给数组元素一一赋值。

57.C数据结构概念一般包括3个方面的内容,数据的逻辑结构、存储结构(物理结构)及数据上的运算集合。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,即数据元素之间的前后件关系,而不管它在计算机中的存储表示形式。

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

59.A解析:运算符“^”是按位异或运算符,其运算规则是:参与运算的两个二进制数,若相对应的二进制位上的数相同,则该位的结果为0;否则该位的结果为1。可得:0x130x17=1001110111=0x04

60.C

61.B本题考查for循环及if…else语句嵌套,第1次执行for循环,p[1][0]=p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,p[1][2]=l,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。

62.D++是自增运算符,作用是使变量的值增加1,选项D中的d不是变量,而是一个标识符,它代表常量2,常量是不允许进行自增运算的。故本题答案为D。

63.CC语言的存储类型为auto、register、extern、static。下面分别解释每种存储类型的含义。auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时,系统会给它们分配存储空间,在函数调用结束后自动释放这些存储空间。register:为了提髙效率,C语言允许将局部变量的值放在CPU的寄存器中,这种变量叫“寄存器变量”,只有局部自动变量和形参可以作为寄存器变量。extern:外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件末尾。static:静态局部变量,属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。故本题答案为C选项。

64.C本题考查的是指向函数的指针。函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。

65.A

66.C本题考查三目运算符a<b?a:c<d?c:d也可写成a<b?a:(c<d?c:d),所以根据优先级,先算括号内的,c小于d为真取C的值,再看a小于b为假,所以取C的值。

67.B

\n变量J只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被保存到浮点型变量Y中。

\n

68.A因为小写字符a,b,c的ASCIl码的值分别为97,98,99,而在d0…while循环语句中,每次对字符的ASCIl码的值取余数并输出,所以分别输出7,8,9,选项A)正确。

69.C\r\n

70.BB。【解析】数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。数据的存储结构与数据的处理效率密切相关。

71.C

72.A因为P是整型的指针变量,因此其移动一个位置即两个字节,故选择A选项。

73.D

74.D解析:在概念设计中按照模块的划分画出每个模块的E-R图,然后把这些图合成一张E-R图作为全局模型,最后应该对全局E-R图进行优化,看看是否有重复和不合理的地方。不能只是进行简单的合并。

75.B堆排序。先把序列看成一棵大根堆或小根堆,摘取最大或最小元素后再建成新的根堆,再排序。堆排序的过程是:先建一个堆,输出堆顶的最大或最小的元素,再将剩余的n-1个元素重新调整成一个新堆。如此反复进行,直到排序完成。

直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好的有序表中,从而得到一个新的、记录数增1的有序表。首先,将序列中的第1个记录看成是一个有序的子序列,然后从第2个记录起逐个进行插入,直至整个序列变成按关键字非递减有序序列为止。

快速排序是对冒泡排序的一种改进。它的基本思想是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可以分别对这两部分记录继续进行排序,以达到整个序列有序。

直接选择排序是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的一个记录,并和第i个记录交换。这样重复执行n-1趟选择排序。

在本题中,数据表A中每个元素距其最终位置不远,即说明数据表基本有序,简单移动一些元素即可完成排序,在这种情况下,使用直接插入排序法所需时间最少,最合理。因此本题的正确答案是B。

\r\n\r\n\r\n

76.B

77.A本题考查的是在链表中删除结点的操作。在本题中指针p指向结点a,q指向结点b。要把结点b删除,就应该首先让结点a的指针域指向结点C,即p—next=q—next,也可以写成(*p).next=(Pq).next,然后释放结点b,

free(q):所以,4个选项中,只有A)满足题意。

78.C数组的下标是从0开始的,A中越界,行下标和列下标都不能越界;B中,虽然是个地址,但是也同样越界了;选项C中表示的是第一个的首地址;选项D表示的为其元素的值,并不是地址。

79.AA。数据定义语言(DDL)是集中负责数据库模式定义与数据库对象定义的语言。数据操纵语言(DML)是指用来查询、添加、修改和删除数据库中数的语句。数据控制语言(DCL)是用来设置或者更改数据为用户或角色权限的语句。据此,本题正确答案为选项A。

80.B

81.(1)错误:voidproc(longs,longt)

正确:voidproc(longS,long*t)

(2)错误:while(s<0)

正确:while(s>0)

【解析】从主函数中实参可知,形参的第二个变量是长整型的指针变量。因此“voidproe(10ngs,longt)”应改为“voidproc(10ngs,long*t)”;要从低位开始取出长整型变量s中偶数位上的数,每次变量s要除以100,然后判断其是否大于0来决定是否要继续,因此“while(s<0)”应改为“while(s>0)”。

82.

【解析】要求二维数组周边元素之和,首先应该判断数组中的每一个元素是否是周边元素。找出所有的周边元素后求和,返回给主函数。周边元素的下标特点为行或列的下标为。或N—1。根据此特点,找出所有的周边元素然后求和。

2021-2022年吉林省吉林市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有下列二叉树:

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

A.ABCDEFB.DBEAFCC.ABDECPD.DEBFCA

2.对于循环队列,下列叙述中正确的是()。

A.队头指针是固定不变的

B.队头指针一定大于队尾指针

C.队头指针一定小于队尾指针

D.队头指针可以大于队尾指针,也可以小于队尾指针

3.A[N][N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k是()。

A.i(i-1)/2+jB.j(j-1)/2+iC.i(j-i)/2+1D.j(i-1)/2+1

4.

5.程序中对fun函数有如下说明

void*fun();

此说明的含义是:A.fun了数无返回值

B.fun函数的返回值可以是任意的数据类型

C.fun函数的返回值是无值型的指针类型

D.指针fun指向一个函数,该函数无返回值

6.有以下函数:intfun(char*x,char*y){intn=0;.while((*x==*y)&&*x!="\0){x++;y++;n++;}returnn;}函数的功能是()。

A.将y所指字符串赋给x所指存储空间

B.查找和y所指字符串中是否有"\0'

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

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

7.以下正确的字符常量是()。A.'\089'B.'\012'C.'\0XAB'D.'\0xab'

8.用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,最少需要()长的二进制字符串

A.12B.14C.18D.24

9.有下列程序:main{intk=5,n=0;while(k>0){switch(k){dcfault:break;case1:n=n+k;case2:case3:n+=k;}k--;}printf("%d\n".n);}程序运行后的输出结果足()。A.0B.4C.6D.7

10.下列语句组中正确的是()。

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

B.char*s;s=“BOOK!”;

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

D.chars[];s=“BOOK!”;

11.函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回给调用函数,但函数不完整:intfun(int*a,intn){int*p,*s;for(p=a,s=a;p-a<=""p="">if(________)s=p;return*s;}在if语句下划线处应填入的选项是()。

A.p>sB.*p>*sC.a[p]>a[s]D.p-a>p-s

12.

13.下面程序的运行结果是()。

#inelude<stdio.h>

voiddel(char*s)

{inti,j;

char*a;

a=s:

for(i=0,j=0;a[i]!='\0';i++)

{if(a[i]>='0'&&a[i]<='9')

{s[j]=a[i];

j++;

}

s[j]='\0';

}

}

main

{char*s="aa89gggh";

del(s):

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

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

14.要解决散列引起的冲突问题,最常用的方法是()

A.数字分析法、除留余数法、平方取中法

B.除留余数法、线性探测法、平方取中法

C.线性探测法、二次探测法、链地址法

D.除留余数法、线性探测法、二次探测法

15.以下关于C语言的叙述中正确的是()。

A.C语言中的注释不可以夹在变量名或关键字的中间

B.C语言中的变量可以在使用之前的任何位置进行定义

C.在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致

D.C语言的数值常量中夹带空格不影响常量值的正确表示

16.在软件生存周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。

A.概要设计B.详细设计C.可行性分析D.需求分析

17.

18.有以下程序

main()

{

intn[3],i,j;

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

n[i]=0;

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

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

n[j]=n[i]+1;

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

}

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

B.1

C.0

D.3

19.

20.甲乙两个聪明人上街,捡到一张10块钱的购物卡,两人就想出一个办法来分配这张卡。两个分别将自己出的价格写在纸上,然后看谁出的价高就给谁,并且那个出价高的人要把出的钱给对方。现在甲有6块钱,乙有8块钱,甲乙双方都知道对方当前有多少钱并且都希望自己收益高于对方。问最后谁获得的钱多()

A.甲多B.乙多C.一样多D.有可能出现有人赔钱的情况

二、2.填空题(20题)21.数据结构包括数据的逻辑结构、数据的【】以及对数据的操作运算。

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

23.在面向对象方法中,信息隐蔽是通过对象的______性来实现的。

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

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

}

25.一般来说,算法可以用顺序、选择和______三种基本控制结构组合而成。

26.数据模型按不同应用层次分成3种类型,它们是概念数据模型、【】和物理数据模型。

27.软件测试的方法有动态测试、静态测试和【】13种。

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

main()

{intX=10,y=20,t=0;

if(X==y)t=x;x=y;y=t;

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

}

29.若有以下程序:

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

}

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

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

31.在数据库理论中,数据物理结构的改变,如存储设备的更换、物理存储的更换、存取方式等都不影响数据库的逻辑结构,从而不引起应用程序的变化,称为【】。

32.设有定义:

struct{inta;floatb;charc;}abc;*p_abc=&abc;

则对结构体成员a的引用方法可以是abc.a和p_abc【】a。

33.数据结构分为逻辑结构和存储结构,循环队列属于______结构。

34.将经过确认测试的软件与外设、网络等连接在一次运行的测试叫【】

35.以下isprime函数的功能是判断形参a是否为素数,如果是素数,函数返回1,否则返回0。

intisprime(inta)

inti;

for(i=2;i<=a/2;i++)

if(a%i==0)【】;

【】;

}

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

37.一个项目具有一个项目主管,一个项目主管叫‘管理多个项目,则实体“主管”与实体“”的联系属于______。

38.函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下:

1

11

121

1331

14641

其构成规律是,第0列元素和主对角线元素均为1,其余元素为其左上方和正上方元素之和,数据的个数每行递增1。请将程序补充完整。

#defintN6

voidYangHui(int*[N][N])

{

inti,j;

x[0][0]=1

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

{

x[i][0]=【】=1

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

x[i][j]=【】;

}

}

39.按“先进后出”原则组织数据的数据结构是[]。

40.下面的程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。

#include<stdio.h>

#include<stdlib.h>

FILE*fp;

main()

{charch;

if((fp=fopen(【】))==NULL)exit(0);

while((ch=getchar())!='@')fputc(ch,fp);

fclose(fp);

}

三、1.选择题(20题)41.下列选项中不符合良好程序设计风格的是A.源程序要文档化B.数据说明的次序要规范化C.避免滥用goto语句D.模块设计要保证高耦合、高内聚

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

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

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

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

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

43.下列程序的输出结果是()。voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q);p++;q--;}for(i=0;i<8;i+)printf("%d,",a[i]);}

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

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

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

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

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

A.一个算法的空间复杂度大,则其时间复杂度必定大

B.一个算法的空间复杂度大,则其时间复杂度必定小

C.一个算法的时间复杂度大,则其空间复杂度必定小

D.上述三种说法都不对

45.若有说明语句:double*p,a;则能通过scanf语句正确给输入项读入数据的程序段是()。

A.*p=&a;sCanf("%1f",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%1f",*p);

D.p=&a;scanf("%1f",p);

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

A.C语言编译时不检查语法

B.C语言的子程序有过程和函数两种

C.C语言的函数可以嵌套定义

D.C语言所有函数都是外部函数

47.若有说明inta[][3]={0,0);,则不正确的叙述是()。

A.数组a的每个元素的初值都是0

B.数组a的第一维大小为1

C.数组a的行数为1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

48.以下选项中,与k=n++完全等价的表达式是

A.k=n,n=n+1B.n=n+l,k=nC.k=++nD.k+=n+1

49.若a=1,b=2,则a|b的值是______。

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

50.设有如下定义,则执行表达式(nFa>b)&&(n=c>d)后,n的值为______。inta=1,b=2,c=3,d=4,m=2,n=2;

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

51.以下不属于对象的基本特点的是()

A.分类性B.多态性C.继承性D.封装性

52.有以下程序:#include<stdio.h>fun(charp[][10]){intn=0,i;for(i=0;i<7;i++)if(p[i][0]=='T')n++;returnn;}main(){charsir[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};prlnff("%d\n",fun(str));}程序执行后的输出结果是()。

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

53.以下能正确定义一维数组的选项是A.intnum[];

B.#defineN100intnum[N];

C.intnum[0..100];

D.intN=100;intnum[N];

54.以下对C语言函数的有关描述中,正确的是______。

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

B.函数既可以嵌套定义又可以递归调用

C.函数必须有返回值,否则不能使用函数

D.C程序中有调用关系的所有函数必须放在同一个源程序文件中

55.若以下定义: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;

56.下面语句中不能定义一个数组,元素值依次分别为1,1,1,0,0的是______。

A.staticinta[5]={1,1,1,0,0};

B.staticinta[5]={1,1,1};

C.staticinta[]={1,1,1,0,0};

D.staticinta[5]={1*2,0*3};

57.数据结构中,与所使用的计算机无关的是数据的()。A.存储结构B.物理结构C.逻辑结构D.物理和存储结构

58.假定建立了以下链表结构,指针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);

59.表达式0x130x17的值是()。

A.0x04B.0x13C.0xE8D.0x17

60.指针变量p的基类型为int,并已指向一连续存储区,若p中当前的地址值为1234,则执行p++后,p中的值为()

A.1234B.1235C.1236D.1237

四、选择题(20题)61.下列程序的输出结果是()。#include<stdio.h>main{inta[2][3]={{1,2,3),{4,5,6)),(*p)[3],i;p=a;for(i=0;i<3;i++){if(i<2)p[1][i]=p[1][i]-1;elsep[1][i]=1;}printf("%d\n",a[o][1]+a[1][1]+a[1][2]);}A.8B.7C.12D.9

62.设有以下定义inta=0;doubleb=1.25;charc=’A’;#defined2则下面语句中错误的是()

A.a++;B.b++C.c++;D.d++;

63.在c语言中,只有在使用时才占用内存单元的变量,其存储类型是()。

A.auto和static

B.extern和register

C.auto和register

D.static和register

64.语句int(*ptr)的含义是()。

A.ptr是一个返回值为int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

65.

66.若整型变量a、b、c、d中的值依次为2、2、3、4,则条件表达式a<b?a:c<d?c:d的值是()。A.A.1B.2C.3D.4

67.

有以下程序段

intj;floaty;charname[50]:

scanf("%2d%f%s",&i,&.y,name):

当执行上述程序段,从键盘上输入555667777abc后,y的值为()。

A.55566.0B.566.0C.7777.0D.566777.0

68.有以下程序(注:字符a的ASCIl码值为97)}程序运行后的输出结果是()。

A.789B.abcC.7890D.979899

69.

70.下列叙述中错误的是()。

A.一种数据的逻辑结构可以有多种存储结构

B.数据的存储结构与数据的处理效率无关

C.数据的存储结构与数据的处理效率密切相关

D.数据的存储结构在计算机中所占的空间不一定是连续的

71.

72.在16位编译系统上,若有定义“inta[]={10,20,30},*p=&a;”,当执行“P++;”后,下列说法错误的是()。

A.P向高地址移了一个字节B.P向高地址移了一个存储单元C.P向高地址移了两个字节D.P与a+1等价

73.

74.利用E-R模型进行数据库的概念设计,可以分成3步:首先设计局部E-R模型,然后把各个局部E-R模型综合成一个全局的模型,最后对全局E-R模型进行(),得到最终的E-R模型。

A.简化B.结构化C.最小化D.优化

75.已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是()

A.堆排序B.直接插入排序C.快速排序D.直接选择排序

76.

77.假定已建立以下链表结构,且指针p和q已指向如图所示的结点:

78.若有以下的定义:‘intt[3][2];”,能正确表示t数组元素地址的表达式是()。

A.&t[3][2]B.t[3]C.t[l]D.t[2][2]

79.数据库管理系统中负责数据模式定义的语言是()。A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

80.

五、程序改错题(1题)81.下列给定程序中函数proc的功能是:取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。例如,当s中的数为l23456789时,t中的数为2468。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。

则函数值为59。

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

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

试题程序:

参考答案

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

2.D循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。

3.B

4.B

5.D解析:返回指针的函数定义为:返回值类型,函数名(\u3000\u3000),而指向函数的指针定义为:返回值类型(*变量名)(\u3000\u3000)。本题中函数fun返回一个无类型的指针。

6.C本题中由循环条件可知遇到“0或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符个数。

7.B题目中的选项都以转义字符“\\”开头,“\\ddd”表示3位八进制数代表的一个ASCII字符,“\\xhh”表示2位十六进制数代表的一个ASCII字符。选项A中“089”是不合法的八进制数,错误;选项C、D中“\\0X”或“\\0x”不合法,错误;选项B表示八进制数012代表的ASCII字符,正确。本题答案为B选项。

8.B

9.D本题主要考查while循环语句和switchcase语句的使用方法。其执行步骤为:k=5时,跳出switch语句,然后k自减1;当k=4时,跳出switch语句,然后k自减1;当k=3时,n=13+k=0+3=3,跳出switch语句,然后k自减1;当k=2时n=n+k=3+2=5,跳出switch语句,然后k自减l;当k=1时,case1:n=n+k一5+1=6,没有break继续执行CaSe3;n=n+k=6+1=7,跳出switch语句,然后k自减1;当k=0时,退出循环,所以输出结果为7。

10.BA选项去掉花括号后,赋值正确;C选项和D选项应在定义时赋初值,因为数组名相当于常量,不能重新赋值。故本题答案为B选项。

11.B函数fun的功能是在a所指的具有n个元素的数组中查找最大值并返回。通过for循环比较,s始终指向最大值的那个元素。取指针的值,使用*P,因此比较使用*P和*s,又因为找最大值,当*s<*p时,修改指针s的指向。故本题答案为B选项。

12.A

13.D本题中del(char*s)函数实现的功能是:逐个读入S数组中的字符,如果遇到数字,则将数字存在s中,遇到非数字字符则跳过。所以最后输出的应该是字符串S中所有的数字的个数。

14.C

15.B解析:C语言中注释可以放在任何位置,选项A错误;C语言中的变量只要在使用之前定义即可,位置可以是使用前的任何位置,故选项B正确;C语言中两侧数据类型可以不一致,系统可进行强制类型转换,选项C错误;C语言数值常量中不允许存在空格,选项D错误。

16.D解析:在需求分析阶段中,根据可行性研究阶段所提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求,即要明确系统必须做什么的问题。本题的正确答案为D。

17.A

18.D初始时定义一个大小为3个一维整型数组,第一个for语句是对数组赋初值,每个值都为0。后面是一个for语句的嵌套调用,外层的循环变量i的取值为[0,2],内层循环变量的取值范围为[0,2]。最初外层的循环变量i=0,内层的循环变量j取值从0到2,计算n[j]=n[0]+1,得到n[0]=1,n[1]=1,n[2]=1。外层for语句的循环变量为1时,内层的循环变量j取值从0到2,计算n[j]=n[1]+1,得到n[0]=2,n[1]=2

温馨提示

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

评论

0/150

提交评论