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.设x和y均为bool量,则x&&y为真的条件是()。

A.它们均为真B.其中一个为真C.它们均为假D.其中一个

3.数据的存储结构是指()。

A.数据所占的存储空间

B.数据的逻辑结构在计算机中的存放形式

C.数据在计算机中的顺序存储方式

D.存储在计算机外存中的数据

4.在单链表中,增加头结点的目的是()。

A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性的链式存储实现

5.

6.若输入“abcdef”、“abdef”,以下程序的输出结果为()。#include<stdio.h>#lnclude<string.h>main(){intn;chars1[20],s2[20],p1,*p2;scanf("%s",s1);scanf("%s",s2);P1=s1;p2=s2;n=strcmp(p1,p2);printf("%d\n",n);}

A.-1B.0C.abcdefD.abdef

7.

8.

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

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

10.下列运算符中优先级最低的算符是()。

A.||B.!=C.<;=D.十

11.有以下程序:#include<stdio.h>#defineN8voidfun(int*x,inti){*x=*(x+i);)main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;i<N/2;i++){printf(“%d”,a[i]);}printf(“\n”);}程序运行后的输出结果是()。A.1313B.2234C.3234D.1234

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

13.

14.有以下程序段chareh;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

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

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

16.在"inta[][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是()。

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

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

A.在C程序中,APH和aph是两个不同的变量

B.C程序中的变量,代表内存中的一个存储单元,它的值可以根据需要随时修改

C.在C程序中,无论是整数还是实数,都能准确无误地表示

D.在C程序中,一个正整数可以用十进制、八进制和十六进制的形式来表示

18.若以“a+”方式打开一个已存在的文件,以下叙述正确的是()。

A.文件打开时,原有文件内容不被删除,可以进行添加和读操作

B.文件打开时,原有文件内容不被删除,位置指针移到文件开头,可以进行重写和读操作

C.文件打开时,原有文件内容不被删除,位置指针移到文件中间,可以进行重写和读操作

D.文件打开时,原有文件内容被删除,只可进行写操作

19.采用折半查找法查找长度为n的线性表时,每个元素的平均查找长度为()。

A.O(n2)B.O(nlog2n)C.O(n)D.O(log2n)

20.对于"int*pa[5];"的描述中,正确的是()。

A.pa是一个指向数组的指针,所指向的数组是5个int型元素

B.pa是一个指向某数组中第5个元素的指针,该元素是int型变量

C.pa[5]表示某个元素的第5个元素的值

D.pa是一个具有5个元素的指针数组,每个元素是一个int型指针

二、2.填空题(20题)21.软件工程研究的内容主要包括:【】技术和软件工程管理。

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

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

}

23.若有定义floatb[15],*p=b;,且数组b的首地址为200H,则p+13所指向的数组元素的地址为______。

24.以下函数creat用来建立一个带头结点的单向链表,新产生的结点是插在链表头的

末尾。单向链表的头指针作为函数值返回。请填空。

#include<stdio.h>

structlist

{chardata;

structlist*next;

};

structlist*creat;

{structlist*h,*p,*q;

charch;

h=(【】)malloc(sizeof(structlist));

p=q=h;

ch=getchar();

while(ch!='?')

{p=(【】)mallco(sizeof(structlist));

p->data=ch;

q->next=p;

q=p;

ch=getchar();

}

p->next='\0';

【】;

}

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

structdate

{intday;

intmouth;

intyear,

union{intshare1;

floatshare2;

}share;

}a;

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

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

27.以下程序的运行结果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

28.表示条件;10<x<100或x<0的C语言表达式是【】。

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

30.若定义#definePI3.14159,则执行完下列程序后输出结果是______。

#definePI3.14159;printf("PI=%f",PI);

31.以下程序运行时若从键盘输入:102030<回车>。输出结果是()。

#include<stdio.h>

main()

{inti=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",i,j,k);

}

32.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

34.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。

intfun(intn)

{

intm=0,f=1,i;

for(i=1:i<=n;i++)

{

m+=i*f;

f=______;

}

returnm;

}

main()

{printf(“m=%d\n”,______)};

35.软磁盘最外边的磁道数是【】号磁道。

36.下述函数用于统计一行字符中的单词个数,单词之间用空格分隔。

wordnum(str)

charstr[];

{inti,num=0,word=0;

for(i=0;str[i]!=【】;i++)

if(【】==)word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

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

#include"stdio.h"

FILE*fp;

main()

{charch;

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

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

fclose(fp);

}

38.下列程序段的运行结果是______。

charstr口="ABCD",*p=str;

printf("%d\n",*(p+3));

39.需求分析的最终结果是产生【】。

40.下述程序的输出结果是【】。

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

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

三、1.选择题(20题)41.若以“叶”方式打开一个己存在的文件,则下列叙述正确的是()。

A.文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可以进行添加或读操作

B.文件打开时,原有文件内容不被删除,只能进行读操作

C.文件打开时,原有文件内容被删除,只能进行写操作

D.以上3种说法都不正确

42.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}8+=a++;printf(“%d\n”,s);}程序运行后的输出结果是

A.8B.10C.7D.11

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

A.在数据库设计的过程中,需求分析阶段必须考虑具体的计算机系统

B.在数据库设计的过程中,概念结构设计与具体的数据库管理系统有关

C.在数据库设计的过程中,逻辑结构设计与具体的数据库管理系统有关

D.在数据库设计的过程中,物理结构设计依赖于具体的计算机系统

44.下面程序的输出结果是______。main(){inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;printf("%d\n",p[3]);}

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

45.下列程序的输出结果是______。main(){inti=3;switch(i){case1:case2:printf("%d",i);case3:case4:break;default:printf("OK");}}

A.0B.3C.OKD.没有任何输出

46.在软件测试设计中,软件测试的主要目的是()。

A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.为发现软件错误而执行程序

47.当用户要求输入的字符串中含有空格时,应使用的输入函数是()。

A.scanfB.getcharC.getsD.getc

48.以下不正确的定义语句是

A.doublex[5]={2.0,4.0,6.0,8.0,10.0};

B.inty[5]={0,1,3,5,7,9};

C.charc1[]={'1','2','3','4','5'};

D.charc2[]={'\x10','\xa','\x8'};

49.下面程序的文件名为t.exe,在DOS下输入的命令行参数为:ttomeetme<回车>

则程序输出的结果是

#include"stdio.h"

main(argc,argv)

intargc;char*argv[];

{inti;

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

A.3B.4C.2D.以上答案都不正确

50.数据库设计包括两个方面的设计内容,它们是()

A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计

51.在计算机系统中,可执行程序是______。

A.源代码B.汇编语言代码C.机器语言代码D.ASCⅡ码

52.下述关于C语言文件的操作的结论中,正确的是______。

A.对文件操作必须先关闭文件

B.对文件操作必须先打开文件

C.对文件操作顺序无要求

D.对文件操作前必须先测文件是否存在,然后再打开文件

53.下述关于数据库系统的叙述中,正确的是()。

A.数据库系统减少了数据冗余

B.数据库系统避免了一切冗余

C.数据库系统中数据的一致性是指数据类型一致

D.数据库系统比文件系统能管理更多的数据

54.下面程序的输出结果是()main(){inti,x=023;printf("%d\n",--x);}

A.17B.18C.23D.24

55.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

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

A.1B.2C.4D.死循环

56.下列程序执行后的输出结果是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.随机数

57.有以下程序段

intj;floaty;charname[50];

scanf("%2d%f%s",&j,&y,name);

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

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

58.若有定义语句:inta[2][3],*p[3],则以下语句中正确的是A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a;

59.运行以下程序后,如果从键盘上输入6514<回车>,则输出结果为______。main(){intm,n;printf("Enterm,n:");scanf("%d%d",&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf("m=%d\n",m);}

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

60.交换两个变量的值,不允许用临时变量,应该使用下列()位运算符。A.A.&B.^C.||D.~四、选择题(20题)61.

62.有以下程序

main()

{

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

for(p=a;p<a+10;p++)

printf("%d,",*p);

}

程序运行后的输出结果是

A.1,2,3,4,5,6,7,8,9,0,B.2,3,4,5,6,7,8,9,10,1,

C.0,1,2,3,4,5,6,7,8,9,D.1,1,1,1,1,1,1,1,1,1,

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

A.用户定义的函数中可以没有return语句

B.用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值

C.用户定义的函数中若没有reillnl语句,则应当定义函数为void类型

D.函数的retU/Tl语句中可以没有表达式

64.以下能正确定义一维数组的选项是()。

A.inta[5]=(0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

65.已知longi=32768;执行语句printf(“%d”,i);屏幕显示()。

A.-1B.-32768C.1D.32768

66.

67.

68.以三级模式为框架形成的3种数据库中,真实存在于计算机外存的数据库是()。

A.概念数据库B.用户数据库C.物理数据库D.逻辑数据库

69.有三个关系R、S和t如下:由关系R和s通过运算得到关系T,则所使用的运算为()。

A.笛卡儿积B.交C.并D.自然连接

70.对如下二叉树进行后序遍历的结果为()。

A.A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

71.

72.

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

A)C语言是高级语言

B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C)C语言产生的目标程序后缀名为OBJ

D)C语言中的函数不可以单独进行编译

74.以下关于宏的叙述中正确的是()。

A.宏替换没有数据类型限制

B.宏定义必须位于源程序中所有语句之前

C.宏名必须用大写字母表示

D.宏调用比函数调用耗费时间

75.设有数组定义:chararray[]="China";则数组array所占的空间为()。

A.4个字节

B.5个字节

C.6个字节

D.7个字节

A.EFGHIJABCD

B.bcdefghij

C.abdefCghij

D.不确定的值

76.(8)数据库系统的核心是()

A.数据模型

B.数据库管理系统

C.软件工具

D.数据库

77.有以下程序:

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

A.9B.8C.7D.10

78.以下选项中值为1的表达式是()。

A.

B.

C.

D.

79.下面的变量说明中__________是正确的。

A.char:a,b,c;

B.chara;b;c;

C.chara,b,c;

D.chara,b,c

80.

设有下列程序段:

charstr[]="HelloWorld":

char*plr;

ptr=str:

执行上面的程序段后,*(ptr+10)的值为()。

A.\0B.0C.不确定的值D.0的地址

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

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

六、程序设计题(1题)82.下列程序定义了M×M的二维数组,并在主函数中赋值。请编写函数proc(),函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如,若a数组中的值为:21098则返回主程序后,s的值为3.750000。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C

2.A

3.B解析:数据的存储结构,又称为数据的物理结构,是数据的逻辑结构在计算机中的存放形式,数据的存储结构有顺序结构、链式结构、散列结构和索引结构等。

4.A根据单位链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。

5.B

6.A

7.B

8.C

9.D本题考查while循环。第一次循环,y=y-1,y=2,循环条件成立,x=1,x++后值为1,x自加变成2,进入循环,a=a+1=1,判断if语句条件是否成立,y<x不成立,接着执行下一次循环。第二次循环,x=2,y-1=1.循环条件成立,进入循环,a=a+1=2,判断if语句的控制条件是否成立,y<x成立,执行break语句。退出循环。结果为D。

10.AC语言中规定运算符的优先顺序:一元算术运算符一>二元算术运算符一>关系运算符一>逻辑运算符一>赋值运算符,A项中为逻辑运算符,B项和c项都为关系运算符,D项为一元运算符。因此最低的是A项。

11.C本题考查了宏定义与局部变量的区别,宏定义的作用范围为整个程序,而变量的作用范围只在定义它的函数体的部分,因此,主函数中定义的i与fun中的i互不相干。

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

13.D

14.D解析:输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。

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

16.C

17.C

18.AC语言中,文件打开方式“a+”表示打开一个文本文件,从文件开始位置读,在文件尾部添加数据,如果指定的文件不存在,系统将使用调用fopen时指定的文件名创建一个新的文件;如果指定的文件存在,那么文件原有内容将被保存,新的数据追加到原有文件之后。故本题答案为A选项。

19.D

20.D

21.软件开发

22.k-1k\r\n-1解析:程序山使用了整型变量i、j、k,使用前应先声明,因此第1个空应填变量k。i和j作为下标的值,i被赋初值为0,j应为下标的最大值,下标的最大值为数组的长度减1。

23.252H252H解析:要解答本题,首先要明白在对指针进行加,减运算时,数字“1”不是十进制数的“1”,而是指“1”个存储单元长度。1个存储单元长度占存储空间的多少,应该视具体情况而定,如果存储单元的基类型是血型,则移动1个存储单元的长度就是位移2个字节;如果存储单元基类型是float型,则移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址为:200H+(13*4)H=252H。

24.strcurlist*strucrlist*return(h)

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

26.3131解析:在函数调用时,形参值和改变,不会改变实参的值。

27.a=2b=1a=2,b=1解析:本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2:分支,最后a和b的值分别为2和1。

28.(x>10&&x<100)||x<0

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

30.PI=3.14159PI=3.14159解析:本题先定义了一个宏名PI,以后在程序中出现PI都用3.14159替代,但是C语言规定:双引号中的宏名是不进行替换的。

31.1030010300解析:本题的考点是C语言的scanf的“%*d”。“%*d”是在输入流中跳过一个整数,而读入下一个整数。因此语句“scanf('%d%*d%d',&i,&j,&k);”在读入10、20、30时,将10读入到i中,将20跳过,将30读入到j中,而k没有读入数,仍是初值的0。

32.可重用性继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。

33.252137252137解析:本题中先定义了整型变量a、b和c,然后分别给赋值a为25,b为八进制的025,c为十六进制0x25。然后调用pruntf()函数将a、b和c分别用十进制输出,且中间用空格隔开,八进制025转换为十进制的值为21,十六进制的0x25转换为十进制的值为37,故最后的输出结果为252137。

34.-f或f*-1或-1*f或f*(-1)或(*1)*f。fun(10)-f或f*-1或-1*f或f*(-1)或(*1)*f。\r\nfun(10)解析:本题考核的知识点是C程序的简单应用。本题要求调用fun()函数计算m的值,故在主函数中的空格处应该填调用fun()函数的语句。fun()函数有一个形参n,为每次参加计算的值的个数,故在主函数中的空格处应该填fun(10),回到fun()函数,函数用到了一个for循环,共循环n次,当循环第i次的时候,m的值等于m=1-2+……+[(-1)的i-1次方]*1所以在fun()函数的空格处应该填使f改变符号的语句,故应填*f或f*-1或-1*f或f*(-1)或(-1)*f。

35.0

36.\0'或0或NULLstr[i]num++或num=num+1或num+=1\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或num+=1解析:观察题目要求,可以知道以下几点:

①for循环的结束条件应当是:str[i]已是字符串的最后一个字符;

②str[i]代表字符串sb中的第i+1个字符:

③整型变量num的值是要记录的单词的个数。

C语言中规定字符串的最后一个字符是一个隐含的字符串结束符“\\0”,所以在题中第一个空中应填写“\\0”;题中第二个空应填写“str[i]”,以判断当前位置的字符是否为空格;题中第二个空中应当填写“num++”,通过变量num的加1累加得到字符串中的单词个数。

37.dat""w"或"bi.dat""w+"或"bi.dat""r+"dat','w'或'bi.dat','w+'或'bi.dat','r+'解析:本题的考点是fopen()函数,此函数的格式是fopen(文件名,使用文件方式),题目的要求是将从键盘读入的文本写到文件中,因此选择的打开方式应该是'w'(只写)。或者是读写“r+”或“w+”。

38.6868解析:本题考查如何用指针引用数组元素。本题先定义了一个指向字符型数组str的指针p,指针p指向数组str的首地址,p+3将指针指向str[3],*(p+3)指的是字符“D”,输出时是以“%d,格式输出的,即输出其相应ASCII码值68。

39.需求规格说明书需求规格说明书解析:软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。需求规格说明书包括正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性等。

40.77解析:本题考查的是函数的递归调用。x=0或x=1是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。

41.A解析:本题考查文件使用方式标识符,以“叶”方式打开一个已存在的文件,则表示保留文件中原有的数据,文件的位置指针在文件末尾,此时,可以进行追加或读操作。

42.A解析:本题中定义一个全局变量a和一个局部变量a。局部变量和全局变量的不同在于,局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失,而全局变量是在函数外部任意位置上定义的变量,它的作用域从变量定义的位置开始,到整个源文件结束为止。若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽,在该函数内,起作用的将是局部变量,与同名的全局变量不发生任何关系。在程序中首先定义了变量s并赋值为0,接着在嵌套的复合语句{}中定义了变量a并赋初值为5,接着执行语句s+=a++;在这条语句中a加1,但表达式a++还是原来的值,故s=s+5,s为5,程序执行到外层,此时{}内定义的变量a不再有效,此时的变量a为{}之前定义的且初值为3,接着执行{}后面的语句s+=a++;相当于执行语句s=s+(a++);即s=5+3,最后值为8,所以最后输出的s值为8。

43.B解析:数据库设计主要分4个步骤:需求分析、概念结构设计、逻辑结构设计、物理结构设计。选项B错误,应为本题的正确答案,因为概念结构设计在需求分析的基础上对客观世界做抽象,独立于数据库的逻辑结构,也独立于具体的数据库管理系统,与具体的数据库管理系统无关。

44.B解析:指针变量p指向数组a的第5个元素,p[3]在原指向基础上移3个单位,指针变量p将指向第8个元素(下标为7的元素),值为7。

45.D解析:在题中,i的值为3,由于“case3:”后面没有break语句,所以继续向下执行“case4:”后面的语句,由于“case4:”后面的语句为break强行退出switch语句,所以,本题没有任何输出。

46.D解析:使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试是为了发现错误而执行程序的过程。测试要以查找错误为中心,而不是为了演示软件的正确功能。

47.C解析:C语言提供了许多输入函数,其中有:getchar(输入字符)、scanf(格式输入)和gets\u3000(输入字符串)等。题目要求输入的是字符串,所以可以排除getchar,而且要求输入的字符串中包含空格,而scanf函数默认将输入的空格字符作为分割符,所以空格不会被输入,故可排除scanf。getc的作用是从文件中输入一个字符,故也不可取。gets函数可以输入一整行作为一个字符串,其中也包括空格字符,故应该选择C。

48.B解析:在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。

49.B解析:argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数组的指针。

50.A解析:模式设计和内模式设计是概念设计的两种方法。物理设计是根据特定的计算机系统,对数据的存储结构和存取方法进行设计,从而实现从逻辑结构到物理结构的转换。从系统开发的角度来看,结构特性设计和行为特性-设计是数据库应用系统所具有的两个特性。结构特性的设计,设计各级数据库模式(静态特性):行为特性的设计,改变实体及其特性,决定数据库系统的功能(动态特性)。

51.C

52.B解析:在C中对文件操作必须先打开文件,待文件操作完毕后要关闭文件。对文件以读的方式进行打开操作时,同时会执行文件的检查文件是否存在,不存在将会返回空的文件指针,如果对文件以写的方式打开时,文件不存在,将会自动创建文件,因此在C中打开文件前不必对其检查文件是否存在,故答案为B。

53.A解析:数据库是一个通用化的、综合性的数据集合,它可以为各种用户所共享,具有最小的冗余度和较高的数据与程序的独立性,而且能并发地为多个应用服务,同时具有安全性和完整性。即数据库系统减少了数据冗余,但不能避免一切冗余。所以选项A正确,选项B错误。在数据库管理阶段中,数据是结构化的,面向系统,数据冗余度小,从而节省了数据的存储空间,也减少了对数据的存取时间,提高了访问效率,避免了数据的不一致性。数据的不一致性,是指对数据的存取方式,选项C错误。数据库系统比文件系统能管理更多的数据,并非是数据库系统的特点,选项D错误。本题正确答案是A。

54.B

55.A解析:因为在while循环的循环条件中,一运算符是前缀形式,所以表达式—k的值是k自减之后的值。程序开始时,将k的值初始化为5,然后进入while循环,因为—k的值为4(非零),所以执行循环体输出k-=3的值1,此时k的值也变为1。第2次执行循环条件,—k的值为0,所以循环结束。因此最后输出的结果是1,故应该选择A。

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

57.B解析:本题考查通过scanf函数输入数据时的格式控制问题。变量j的格式控制为“%2d”,即只接收输入数据的前两位,从第三位开始直到空格之间的输入都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项B)。

58.C解析:选项A中,p为数组名,其值是不能被改变的,故非法;选项B中,p[0]的类型是int*,而a是二维数组名(类型为int[][3]),两者无法赋值,故非法:选项C中,p[0]为int型指针,&a[1][2]是int型变量的地址,可以合法赋值;选项D中,p[1]是int型指针,而&a是二维数组的地址(类型为int(*)[2][3]),两者无法赋值,故非法。所以本题应该选择C。

59.C解析:分析程序可知,该程序实现的功能是对数m,n求其最大公约数。在本题中m与n的值分别为65与14,其最大公约数为1,故其输出结果为m=1。

60.B解析:按逻辑位运算的特定作用主要有3点:①用按位与运算将特定位清0或保留特定位:②用按位或运算将特定的位置设置为1;③用按位异或运算将某个变量的特定位翻转或交换两个变量的值。

61.C

62.A在本题中,程序首先定义了一个一维数组a,并赋了初值,数组a中元素的个数为10个,另外,程序定义了一个同类型的指针变量p。然后用一个for循环用指针变量p对数组进行操作。在循环开始前,将指针变量指向数组的开始位置,即指向数组的第一个元素。

第一次循环时,指针变量p指向的是数组第一个元素,输出该元素应该为1;然后指针变量自加1,即将指针变量后移一位,使其指向数组的第二个元素,开始第二次

温馨提示

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

评论

0/150

提交评论