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

下载本文档

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

文档简介

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

一、单选题(20题)1.已知10个元素(54,28,16,34,,73,62,95,60,26,43),按照依次插入的方法生成一棵二叉排序树,查找值为62的结点所需比较次数为()

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

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

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

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

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

3.有以下程序:#include<stdio.h>main(){charv[4][10];inti;for(i=0;i<4;i++)scanf(“%s”,v[i]);printf(“%c,%s,%s,%c”,**v,*(v+1),v[3]+3,*(v[2]+1));}程序运行时输入welcomeyoutobeijing并按<Enter>键,则输出结果是()。

A.w,youjing,o

B.welcome,you,jing,to

C.w,you,eeijing,u

D.w,xelcome,eeijing,u

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

A.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

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

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

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

5.

6.和顺序栈相比,链栈有一个比较明显的优势是()。

A.通常不会出现栈满的情况B.通常不会出现栈空的情况C.插入操作更容易实现D.删除操作更容易实现

7.算法的空间复杂度是指()。

A.算法在执行过程中所需要的计算机存储空间

B.算法所处理的数据量

C.算法程序中的语句或指令条数

D.算法在执行过程中所需要的临时工作单元数

8.下列对于线性链表的描述中正确的是()。

A.存储空间不一定连续,且各元素的存储顺序是任意的

B.存储空间不一定连续,且前件元素一定存储在后件元素的前面

C.存储空间必须连续,且前件元素一定存储在后件元素的前面

D.存储空间必须连续,且各元素的存储顺序是任意的

9.若串S1="ABCDEFG",S2="9898",S3="###",S4="012345",执行其结果为()。A.ABC###G0123B.ABCD###2345C.ABC###G1234D.ABCD###1234

10.若变量已正确定义,有以下程序段“i=0;do{printf(“%d,”,i);}while(i++);printf(“%d\n”,i);”,程序段的运行结果是()。A.0,1B.0,0C.1,1D.程序进入无限循环

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

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

12.

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

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

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

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

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

14.以下叙述中错误的是A.gets函数用于从终端读入字符串

B.getchar函数用于从磁盘文件读入字符

C.fputs函数用于把字符串输出到文件

D.fwrite函数用于以二进制形式输出数据到文件

15.以下叙述中正确的是_____。A.用C程序实现的算法必须要有输入和输出操作

B.用C程序实现的算法可以没有输出但必须要输入

C.用C程序实现的算法可以没有输入但必须要有输出

D.用C程序实现的算法可以既没有输入也没有输出

16.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A.10B.8C.6D.4

17.下述函数功能是______。intfun(char*x){char*y=x;while(*y++);returny-x-1;}

A.求字符串的长度B.求字符串存放的位置C.比较两个字符串的大小D.将字符串x连接到字符串y后面

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

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

19.设”inta=12;”,则执行完语句”a+=a*a;”后,a的值是()。

A.12B.144C.156D.288

20.设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩.,则表SC的关键字(键或码)为()

A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩

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

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若运行时输入:1234<回车>,程序的输出结果是【】。

22.设有宏定义:

#defineWIDTH80

#defineLENGTHWIDTH+40

则执行赋值语句“v=LENGTH*20;"(v为int型变量)后,v的值是【】。

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

main()

{intm=011,n=11;

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

}

24.以下程序通过函数指针p调用函数fun,请在填空栏内写出定义变量p的语句。

voidfun(int*x,int*y)

{……}

main()

{inta=10,b=20;

【】:

p=fun;p(&a,&b);

……

}

25.软件危机出现于60年代末,为了解决软件危机,人们提出了【】的原理来设计软件,这就是软件工程诞生的基础。

26.若输入thistestterminal,以下程序的输出结果为:terminaltestthis。请填空。

#defineMAXLINE20

【】

{inti;

char*pstr[3],str[3][MAXLINE];

for(i=0;i<3;++)pstr[i]=str[i];

for(i=0;i<3;i++)scanf("%s",pstr[1]);

sort(pstr);

for(i=0;i<3;i++)prntf("%s",pstr[i]);

}

sort(【】)

char*pstr[3];

{inti,j;

char*p;

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

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

if(strcmp(*(pstr+i,*(pstr+j)>0

{p=*(pstr+i);

*(pstr+i=【】;

*(pstr+j)=p;

}

27.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

28.用以下程序把从键盘输入的字符存放到一个文件中,用字符#作为结束符,请按题意要求填空完善程序。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[10];

printf("Inputthenameoffile\n");

gets(fname);

if(fp=fopen(【】))==NULL)

{printf("can'topen\n");

【】;

}

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

fputc(【】);

fclose(fp);

}

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

inti=9;

printf("%o\n",i);

30.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【】。

31.如果调用fopen函数不成功,则函数返回【】;如果调用fclose函数不成功,则函数返回【】。

32.栈中允许进行插入和删除的一端叫做______。

33.一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体"项目主管"与实体"项目"的联系属于【】的联系。

34.数据库系统的主要特点为数据集成性、数据的高______和低冗余性、数据独立性和数据统一管理和控制。

35.设有以下定义和语句:

inta[3][2]={1,2,3,4,5},*p[3];

p[0]=a[1];

则*(p[0]+1)所代表的数组元素是【】。

36.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

37.若a是血型变量,且a的初值为4,则计算a+=a-=a*a表达式后a的值为______。

38.栈和队列通常采用的存储结构是【】。

39.有以下定义和语句,则sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

40.下列语句的输出结果是【】。

chara=3;printf("%d,%o,%x,%u\n",a,a,a,a);

三、1.选择题(20题)41.有以下程序:#defmeP3voidP(intx){return(p*x*x);}main(){pritnf("%d\n",F(3+5);}程序运行后的输出结果是()。

A.192B.29C.25D.编译出错

42.有以下程序voidfun(char*c,intd){*c=*c+1;d=d+1;printf(“%c,%c”,*c,d);}main(){chara='A',b='a';fun(&b,a);printf(“%c,%c\n”,a,b);}程序运行后的输出结果是

A.B,a,B,aB.a,B,a,BC.A,b,A,bD.b,B,A,b

43.两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是()。main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}

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

44.在16位C编译系统上,若定义longa;,则能给a赋值40000的正确语句是()

A.a=20000+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*10L;

45.以下程序有错,错误原因是main(){int*p,i;char*q,ch;p=&i;q=&ch;*p=40;*p=*q;……}

A.p和q的类型不一致,不能执行*p=*q;语句

B.*p中存放的是地址值,因此不能执行*p=40;语句

C.q没有指向具体的存储单元,所以*q没有实际意义

D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果

46.有以下程序段intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;}while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是

A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数

47.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指()

A.数据与程序独立存放

B.不同的数据被存放在不同的文件中

C.不同的数据只能被对应的应用程序所使用

D.以上三种说法都不对

48.有以下程序:#include<string.h>voidf(char*s,char*t){chark;k=*s;*s=*t;*t=k;s++;t--;if(*s)f(s,t);}main(){charstr[10]="abcdefg",*p;p=str+strlen(str)/2+1;f(p,p-2);printf("%s\n",str);}程序运行后的输出结果是()。

A.abcdcfgB.gfedcbaC.gbcdefaD.abedcfg

49.下列选项中可作为C语言合法常量的是()。

A.-80B.-80C.-80.0D.-80.0e

50.以下不能正确进行字符串赋初值的语句是

A.charstr[5]="good!";

B.charstr[]="good!";

C.char*srt="good!";

D.charstr[5]={'g','o','o','d'};

51.设有栈S和队列Q,其初始状态为空,元素a1、a2、a3、a4、a5、a6依次入栈,出栈的元素进入队列Q,若6个元素出队列的顺序是a2、a4、a3、a6、a5、a1,则栈的容量至少是______。

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

52.已定义下列函数:intfun(int*p){return*p;)fun函数返回值是()。

A.不确定的值B.一个整数C.形参p中存放的值D.形参p的地址值

53.调用gets和puts函数时,必须包含的头文件是

A.stdio.hB.stdlib.hC.defineD.以上都不对

54.有以下程序

main()

{inti,s=1;

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

if(!(i%5)&&!(i%3))s+=i;

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

程序的输出结果是

A.409B.277C.1D.91

55.软件开发的原型化方法是一种动态定义软件需求的方法,下述条件中,______是实施原型化方法所必需的。

①成熟的原型化人员

②快速的成型工具

③需求了解的准确性

A.①和③B.①和②C.②和③D.全部

56.下面程序段的输出为()。

#include"stdio.h"

main

{

printf("%d\n",12<<2);

}

A.0B.47C.48D.24

57.判断char型变量c1是否为小写字母的正确表达式为()。

A.'a'<=c1<='z'

B.(c1>=A)‖(c1<=z)

C.('a'=>c1‖('z'<=c1)

D.(c1>='a')&&(c1<='z')

58.有以下定义:#include<stdio.h>chara[10],*b=a;不能给数组a输入字符串的语句是()。

A.gets(a)B.gets(a10])C.gets(&a[0});D.gets(b);

59.C语言中,组成数据文件的成分是()。A.A.记录

B.数据行

C.数据块

D.字符(字节)序列

60.若执行下列的程序时,从键盘上输入1和2,则输出结果是()。

#include<stdio.h>

main()

{inta,b,s;

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

S=a;

if(a<B)s=b;

s=s*s;

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

}

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

四、选择题(20题)61.

62.下列叙述中正确的是()。A.数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能

B.数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件

C.数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少

D.数据库系统独立性较差,而文件系统独立性较好

63.

64.有以下程序:

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

A.有运行错误B.输出ll.10C.输出l2.10D.输出21.10

65.在执行下述程序时,若从键盘输入6和8,则结果为()。

A.36B.64C.48D.以上都不对

66.

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

#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.有语法错

67.若有定义:“inta[2][3];”,则对a数组的第i行第j列元素的正确引用为()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

68.语句“printf("akbre"\'hi\'y\\\bou\n")”;的输出结果是()。

A.akbre\'hi\'y'\\\bou

B.a\bre\'hi\\y\bou

C.re'hi'you

D.abre'hi'y\bou

69.下列程序的运行结果是()。main{intx=1,y=3,a=0;while(x++!=(y-=l)){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

70.

71.以下选项中不能用作C程序合法常量的是()。

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

A.678910

B.13579

C.12345

D.62345

73.

74.在下列选项中,哪个不是一个算法一般应该具有的基本特征()。

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

75.若i、j已定义成int型,则下列程序段中内循环体的总执行次数是()。

for(i=6;i>0;i--)

for(j=0;j<4;j++){…}A.A.20B.24C.25D.30

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

main

{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;

for(k=1;k<3;k++)printf("%s\n",w[k]);A.A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

77.#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。

A.#definef(x)5*x*x+5*x+5

B.#definef5*X*x+5*x+5

C.#definef(a)(5*a*a+5*a+5)

D.#define(5*x*x+5*x+5)f(x)

78.有以下程序

structSTU

{

charname[10];

intnum;

intScore;

};

main()

{

structSTUs[5]={{"YangSan",20041,703},

{"LiSiGuo",20042,580},

{"WangYin",20043,680},

{"SunDan",20044,550},

{"Penghua",20045,537}},*p[5],*t;

inti,j;

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

p[i]=&s[i];

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

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

if(p[i]->Score>p[j]->Score)

{

t=p[i];

p[i]=p[j];

p[j]=t;

}

printf("%d%d\n",s[1].Score,p[1]->Score);

}

程序运行后的输出结果是

A.550550B.580550

C.680680D.580680

79.定义下列结构体(联合)数组:

structst

{charname[15];

intage;

}a[10]={"ZHA0",14,"WANG",15,"LIU",16,"ZHANG",17);

执行语句printf("%d,%C",a[2].age,*(a[3].name+2))的输出结果为()。A.A.15,AB.16,HC.16,AD.17,H

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

A.使用三种基本结构构成的程序只能解决简单问题

B.结构化程序由顺序、分支、循环三种基本结构组成

C.C语言是-种结构化程序设计语言

D.结构化程序设计提倡模块化的设计方法

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。π/4≈1-1/3+1/5-1/7+…例如,程序运行后,输入0.0001,则程序输出3.1414。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.假定输入的字符串中只包含字母和*号。请编写函数proc(),它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。例如,若字符串中的内容为****a*bc*def*g。***,删除后,字符串中的内容则应当是****a*bc*def*g。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B

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

3.A题干中,定义一个二维字符数组v。然后通过for循环,输入4个字符串welcome、you、to、beijing,将其分别存放在v的4个元素中。数组v是存放4个字符串的二维数组;“**v”表示第1个字符串的第一个字符“w”;“*(v+1)”指向第2个字符串“you”;“v[3]+3”指向第4个字符串的第3个字符开始后的整个字符串“jing”;“*(v[2]+1)”表示第3个宇符串的第2个字符“o”。故本题答案为A选项。

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

5.C

6.A

7.A算法的空间复杂度是指算法在执行过程中所需要的内存空间。所以选择A项。

8.A解析:在链式存储结构中,存储数据的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,数据元素之间的逻辑关系,是由指针域来确定的。由此可见,选项A的描述正确。因此,本题的正确答案为A。

9.D

10.A第1次首先执行循环体,输出i的值为0,然后判断while的条件“i++”,因为“i++”是后缀自增运算,先使用后自增,所以判断时条件为假,跳出循环,但是仍执行了i的自增操作,i的值为1,在接下来的printf语句中进行输出。故本题答案为A选项。

11.B

12.D

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

14.B其中B选项的getchar函数用于从终端读入字符。故本题答案为B选项。

15.C解析:算法的特性中包括“有零个或多个输入”及“有一个或多个输出”这两个特性。一个算法得到的结果就是算法的输出,没有输出的算法是没有意义的,所以一千算法必须至少有一个输出。

16.C根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。

17.A解析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。

18.D程序(program)是为实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合。设计算法时要考虑到数据结构的设计,但是不仅仅是要考虑到数据结构的设计,还要考虑到其他的程序结构的问题。设计算法时不能只考虑结果的正确性和可靠性,还需要考虑到程序的时间冗余度等方面。所以答案选择D。

19.C

20.C学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C项。

21.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。

22.880

23.10111011解析:前缀自增运算时,表达式的值和变量自增之后的值相同;后缀自增运算时,表达式的值为变量自增之前的值。所以,本题程序输出的两个结果分别是m+1和n的值。而m在初始化时使用的是八进制常量011,转换为十进制为9。故输出结果是1011。

24.void(*p)();void(*p)();解析:要定义p为指向函数的指针变量,需写成void(*p)();,注意*p两侧的括弧不可以省略,表示P先与*结合,是指针变量,再与后面的()结合,表示此指针变量指向函数,这个函数无返回值(同fun()函数)。

25.软件工程学软件工程学

26.main()pstr*(pstr+j)

27.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。

28.fname"#"exit(0)chfp

29.1111解析:本题考核的知识点是printf()函数的输出格式。本题中定义了一个整型变量i并赋初值为9,然后要求以八进制输出i的值,9的八进制数的表示为11。

30.上溢上溢解析:入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+1),并当rear=m+1时置rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=1)时且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢”。

31.NULL或0EOF或-1NULL或0\r\nEOF或-1解析:如果fopen()函数调用不成功,则返回一个空指针值NULL(0);如果fclose()函数调用不成功,则返回EOF(-1)。所以本题的两个空应分别填NULL和EOF。

32.栈顶栈顶解析:栈是限定在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端叫做“栈顶”,不允许插入和删除的一端叫做“栈底”。

33.一对多(或1∶N)一对多(或1∶N)解析:两个实体集间的联系实际上是实体集间的函数关系,这种函数关系可以有3种,即一对一(1∶1)的联系、一对多(1∶N)或多对一(N∶1)的联系和多对多(N∶N)的联系。

34.共享性共享性解析:数据库系统中的数据能被不同的应用程序使用,实现了数据的高度共享,从而降低了数据的冗余,这也是数据库的主要目的。

35.a[1][1]a[1][1]解析:p是一个指针数组,p[0]指向数组a[1][0]。*(p[0]+1)代表数组a[1][1]。

36.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。

37.-24-24解析:本题考查赋值运算符a+=b等价于a=a+b;a-=a*a等价于a-a-a*a=4-4*4=-12:a+=a,即a=a+a=-24。

38.链式存储和顺序存储链式存储和顺序存储

39.10410\r\n4解析:结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元。int占2个字节,float占4个字节,共用体变量所占的内存长度等于最长的成员的长度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

40.31371f3131,37,1f,31解析:此题考查了printf函数的格式字符,题中d是以十进制形式输出,o是以八进制形式输出,x是以十六进制形式输出,u以不带符号的十进制数输出。

41.D解析:本题是一道陷阱题,考生如果没注意到F()函数被定义为void类型的话,很容易错选为选项A,其实应该选择选项D,编译出错。

42.D解析:用地址作为参数与值作为参数传递之间的不同。在C语言中,数据传递是单向传递的。“值传递”就是实参把对应的值传给相应的形参变量,然后形参和实参不再有任何联系,在被调用函数中,对形参的修改并不影响对应的实参。“地址传递”就是实参把相应的地址传给相应的形参变量,在被调用函数中对形参的修改将修改对应的实参地址对应的值。程序中定义了两个字符型变量'a'和'b',并分别赋初值为'A'和'a',然后调用函数fun(),将b的地址和:值作为实参。在函数fun()中第一个参数是传递地址,故在调用函数fun()中对参数做的修改(即将b值加1)将影响字符型变量的值(变为b),函数fun()第二个参数是传值的,故在调用函数fun()对第二个参数做的修改不影响字符型变量a(即'a'的值仍为'A'),所以在fun()函数中输出的是d为b,B,接着在主函数中,输出a,b,然后退出fun()函数,接着执行后面的语句,输出A,b。所以最后输出为b,B,A,b。

43.A解析:本题考查ifelse语句。首先scanf函数通过键盘读入x的值。当x=3时,第一个if语句,先判断条件,取x的值3和2比较,然后将x的值加1,发现条件成立,执行下列的printf语句,输出x的值4。当x=1时,第一个if语句,先判断条件,取x的值1和2比较,然后将x的值加1(x的值变为2),发现条件不成立,执行下列的else语句,先输出x的值2,再将x的值减1。

44.D

45.D解析:该程序的执行过程是:首先声明整型指针变量P和整型变量i,字符型指针变量q和字符型变量ch,将i的地址赋给指针变量p,将ch的地址赋给指针变量q,将40赋给*p,此时,q已经指向了一个具体的存储单元,但ch的值不确定,即*p没有确定的值,所以不能执行*p=*q语句。

46.D解析:本题考查的是do…while循环结构.do…while循环与while循环的区别就是,前者是先执行循环体,后判断循环变量,故至少会执行一遍循环体;后者先判断再执行,可能循环体一次也不会执行。本题首先让t=1,然后在循环体中每次自减2,所以判断循环条件的时候,t会等于-1、-3、-5……,故只有n等于任意的负奇数才有可能终止循环.选项D正确。

47.D解析:在数据库系统中,通过系统提供的映象功能,使数据具有两方面的独立性:一是物理独立性。即由于数据的存储结构与逻辑结构之间由系统提供映象,使得当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改。二是逻辑独立性。即由于数据的局部逻辑结构(它是总体逻辑结构的一个子集,由具体的应用程序所确定,并且根据具体的需要可以作一定的修改)与总体逻辑结构之间也由系统提供映象,使得当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序也可以不必修改。由此可知,选项A.B与C中的说法都是错误的。

48.B解析:本题定义的函数f()是一个递归函数。它先交换两个字符指针所指的内容,然后将第1个指针往后移动—位,第2个指针往前移动一位,如果第1个指针所指内容不是字符串结束标志,则递归调用自身。主函数中首先定义了—个字符数组sir[10]=“ahcdeft”然后定义了一个字符指针p=str+strlen(str)/2+1,即让p指向str+4(或&str[4])的位置。然后调用f(p,p-2);,这使得p所指的str[4]及其以后的2个位置str[5]、str[6]中的内容同p-2所指的str[p]及其以前的2个位置str[1]、str[0]中的内容互相交换。即让整个字符串逆序。所以本题应该选择B。

49.A

50.A解析:本题考核的知识点是字符数组和字符指针变量的初始化。选项A定义了一个字符数组str,具有5个元素,但赋初值的时候,初值个数却是6个(有一个'\\0'),故选项A错误的;选项B定义了一个字符数组str并给它赋初值,由于省去了长度定义,长度由初值个数确定,相当于str[6],选项B正确;选项C定义了一个字符型指针变量并用一个字符串给它赋初值,使该字符型指针指向了该字符串,选项C正确;选项D是对字符型数组中单个元素依次赋初值,选项D正确。所以,4个选项中A为所选。

51.C

52.B解析:由函数intfun(int*p){return*p;}的定义可知,返回值为整型指针变量p所指向的数据。

53.A解析:gets函数和puts函数是库函数,必须包含的头文件是stdio.h。

54.D解析:本题是计算50之内的自然数相加之和,题中if语句括号中的条件表达式!(i%5)&&!(i%3)表明只有能同时被5和3整除的数才符合相加的条件,1~49之间满足这个条件的只有,15、30和45,因为s的初始值为1,所以s=1+15+30+45=91。

55.B

56.C解析:考查位运算的运算原理。<<为左移运算符,运算符的左边是移位对象;右边是整型表达式,代表左移的位数,左移时,右端(低位)补0;左端(高位)移出的部分舍弃。

57.D解析:C语言规定,字符常量在程序中要用单引号括起来。判断c1是否为小写字母的充要条件c1>='a'和c1<='z',用逻辑与(&&)来表示。A选项的这种形式在C语言中没有,所以选项D)正确.

58.B解析:函数gets()的调用形式为gets(str_adr);str_adr存放字符串的起始地址。可以是字符数组名、字符指针或字符数组元素的地址。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。本题中定义一个长度为10的字符数组,和一个指针变量b,并且通过赋值让它指向数组a。选项A、选项B、选项C和选项D中只有选项B中gets函数的参数a[0]不能表示数组a的首地址,故选项B不正确。所以,4个选项中选项B符合题意。

59.D解析:C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。

60.B解析:本题考查if语句。scanf函数通过键盘读入a、b的值,a=1,b=2。第一个if语句,先判断条件,发现a<b条件成立,则s=b=2,s=s*s=4。

61.C

62.A数据管理技术的发展经历了3个阶段:

人工管理阶段、文件系统阶段和数据库系统阶段。三者各自的特点如下表所示。\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t特点\t\t\t\t\t\t\t人工管理阶段\t\t\t\t\t\t\t文件系统阶段\t\t\t\t\t\t\t数据库系统阶段\t\t\t\t\t\t\t管理者\t\t\t\t\t\t\t人\t\t\t\t\t\t\t文件系统\t\t\t\t\t\t\t数据库管理系统\t\t\t\t\t\t\t面向对象\t\t\t\t\t\t\t某个应用程序\t\t\t\t\t\t\t某个应用程序\t\t\t\t\t\t\t现实世界\t\t\t\t\t\t\t共享程度\t\t\t\t\t\t\t无共享,冗余度大\t\t\t\t\t\t\t共享性差,冗余度大\t\t\t\t\t\t\t共享性大,冗余度小\t\t\t\t\t\t\t独立性\t\t\t\t\t\t\t不独立,完全依赖于程序\t\t\t\t\t\t\t独立性差\t\t\t\t\t\t\t具有高度的物理独立性和一定的逻辑独立性\t\t\t\t\t\t\t结构化\t\t\t\t\t\t\t无结构\t\t\t\t\t\t\t记录内有结构,整体无结构\t\t\t\t\t\t\t整体结构化。用数据筷基誊述\t\t\t\t\t\t\t控制能力\t\t\t\t\t\t\t由应用程序控制\t\t\t\t\t\t\t由应用程序控制\t\t\t\t\t\t\t由DB蝰墨供数据安全性、完整性、并发控剖和恢复\t\t\t\t数据库系统可以解决数据冗余和数据独立性问题,面文件系统不能。数据库系统和文件系统的区别

温馨提示

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

评论

0/150

提交评论