2021-2022年广东省梅州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021-2022年广东省梅州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021-2022年广东省梅州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021-2022年广东省梅州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021-2022年广东省梅州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年广东省梅州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]==1;printf("\n%d",x.i);}

A.266B.11C.265D.138

2.已知一个大小为n的整型数组,现求该数组的全部连续子数组的元素之和的最大值,最优算法的时间复杂度是()如:a[4]={2,-1,3,-4},它的全部连续子数组为{2,-1,3,-4,[2,-1],[-1,3],[3,-4],[2,-1,3],[-1,3,-4],[2,-1,3,-4]},它们的元素之和为{2,-1,3,-4,1,2,-1,4,-2,0},其中的最大值为4。

A.O(logN)B.O(N)C.O(N*logN)D.O(N^2)

3.设已包含头文件<string.h>,下列程序段的运行结果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));

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

4.下列程序的输出结果是()#include<stdio.h>main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}printf(“%d”,a);}A.19B.18C.6D.8

5.在排序方法中,元素比较次数与元素的初始排列无关的是()

A.Shell排序B.归并排序C.直接插入排序D.选择排序

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

B.串中不同字母的个数

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

D.串中所含字符的个数

7.

8.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcpy()C.strcat()D.strcmp()

9.有如下程序段:inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=P[5];则b的值是()。

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

10.有两个关系R和T如下:

则由关系R得到关系T的操作是()。A.选择B.投影C.交D.并

11.无向图中一个顶点的度是指图中与该顶点相邻接的顶点数。若无向图G中的顶点数为n,边数为e,则所有顶点的度数之和为()

A.n*eB.n+eC.2nD.2e

12.有以下程序:

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

A.45B.20C.25D.36

13.

14.软件需求分析一般应确定的是用户对软件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

15.算法的时间复杂度是指()A.执行算法程序所需要的时间B.算法程序的长度C.算法程序中的指令条数D.算法执行过程中所需要的基本运算次数

16.插入和删除只能在一端进行线性表,称为()。

A.队列B.循环队列C.栈D.循环栈

17.有以下程序main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是______。A.2,3,3B.2,3,2C.2,3,1D.2,2,1

18.有以下程序:#include<stdio.h>main(){inta=7;while(a--);print[("%d\n",a);}程序运行后的输出结果是()。A.-1B.0C.1D.7

19.图的BFS生成树的树高比DFS生成树的树高()

A.小或相等B.小C.大或相等D.大

20.对线性表进行折半查找最方便的存储结构是()。

A.顺序表B.有序顺序表C.链表D.有序链表

二、2.填空题(20题)21.以下程序运行后的输出结果是【】。

main()

{inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{case0:m++;n++;break;

case1:n++;break;

default:k++;n++;

}

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

}

22.有以下程序

main()

{intn=0,m+1,X=2;

if(!n)X-=l;

if(m)X-=2;

if(X)X-=3;

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

}

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

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

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

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

【】t[20]

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*p=m,*q=m+4;

inti=0;

while(p!=q)

{p->k=++i;p++

q->k=i++;q--;

}

q->k=i;

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

printf("%d",m[i].k);

ptintf("\n");

}

25.有以下程序:

#include<string.h>

main(intargc,char*argv[])

{inti,len=0;

for(i=1;i<argc;i+=2)len+=strlen(argv[i]);

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

}

经编译连接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行:

exabcdefgh3k44

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

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

#defineP(A)printf("%d",A)

main()

{intj,a[]={1,2,3,4,5,6,7),i=5;

for(j=3;j>1;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

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

main()

{intp[7]{11,13,14,15,16,17,18};

inti=0,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

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

}

28.若从键盘输入58,则以下程序输出的结果是【】。

main()

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);}

29.冒泡排序算法在最好的情况下的元素交换次数为【】。

30.数据库恢复是将数据库从______状态恢复到某一已知的正确状态。

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

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':printf("good");break;

case'c':printf("morning");

case'd':printf("class");

}

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

#include<stdio.h>

fun()

{inta=0;

a+=3;

printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<=4;cc++)

fun();

printf("\n");

}

34.没有chara,b;,,若要通过a&b运算屏蔽掉a中的其他位,只保留第2位和第8位(右起为第1位),则b的二进制是【】。

35.由计算机、操作系统、DBMS、数据库、应用程序及用户组成的一个整体叫做【】。

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

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

37.模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块。其中【】的作用是模拟被测试模块的下层模块。

38.如果一个工人可管理多个设施,而一个设施只被一个工人管理,则实体“工人”与实体“设备”之间存在______联系。

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

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

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

PRINT(a+i);

printf("\n");

}

40.有以下程序:

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i+1;

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

}

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

三、1.选择题(20题)41.下列叙述中正确的是()。

A.程序执行的效率与数据的存储结构密切相关

B.程序执行的效率只取决于程序的控制结构

C.程序执行的效率只取决于所处理的数据量

D.以上三种说法都不对

42.设变量已正确定义,则以下能正确计算f=n!的程序段是______。A.f=0;for(i=1;i<n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

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

A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示

44.如果要限制一个变量只能为本文件所使用,必须通过______来实现。

A.外部变量说明B.静态内部变量说明C.静态外部变量说明D.局部变量说明

45.若有以下的说明,对初值中整数2的正确引用方式是

staticstruct

{charch;

inti;

doublex;

}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};

A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i

46.已有定义:chara[]="xyz",b[]={'x','y','z'};,下列叙述中正确的是()。

A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.上述三种说法都不对

47.有以下程序#include<stdio.h>voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;i<n-1;j++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]:a[j];a[j]=t;}}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},ifun(c+4

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

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

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

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

48.已定义以下函数;intfun(int*p){return*p;}fun函数返回值是()。

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

49.下面程序main(){intx=100,a=10,b=20,ok1=5,ok2=0;if(a<b)if(b!=15)if(!ok1)x=1:elseif(ok2)x=10;x=-1;printf("%d\n",x);}的输出是______。

A.-1B.0C.1D.不确定的值

50.以下程序段的输出结果是______。char*p="abodefgh";p+=3;printf("%d\n",strlen(strcpy(p,"12345")));

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

51.若有"doublea;",则正确的输入语句是()。

A.scanf("%1f",a);

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

C.scanf("%1f",&a)

D.scanf("%1e",&a);

52.下列叙述中,不属于结构化分析方法的是()。A.A.面向数据流的结构化分析方法

B.面向数据结构的Jackson方法

C.面向数据结构的结构化数据系统开发方法

D.面向对象的分析方法

53.在位运算中,操作数每左移两位,其结果相当于()。

A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4

54.当a的值为0时,在下列选项中能正确将a的值赋给变量x、y的是()。

A.(x=a)&&(y=a)B.x=a=yC.(y=a)||(x=a)D.a=x=y

55.以下程序的输出结果是main(){intc=35;printf("%d\n",c&c);}

A.0B.70C.35D.1

56.树最适合用来表示()。

A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据

57.若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是

A.EOFB.-1C.1D.NULL

58.下列工具中为需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

59.若变量已正确定义,下列正确的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

60.有以下程序:#include<stdio,h>main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下叙述中正确的是()。

A.程序输出大写字母MB.程序输出小写字母mC.格式说明符不足,编译出错D.程序运行时产生出错信息

四、选择题(20题)61.

62.

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

voidfun(int*X,inty)

{printf("%d%d",*x,*y);*x=3;*y=1;}

main

{intx=1,y=2;

fun(&y,&x);

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

}

A.2143B.1212C.1234D.2112

63.以下程序的输出结果是()。main{inta=3:printf("%d\n",(a+a-=a*a));}A.-6B.12C.0D.-12

64.C源程序中不能表示的数制是()。

A.十六进制B.八进制C.十进制D.二进制

65.在数据库管理系统DBMS中,用来定义内模式和外模式等一些数据库管理系统中其他结构的语言为

A.CB.BasicC.DDLD.DML

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

A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

D.线性表的链式存储结构所需要的存储空间与顺序存储结构没有任何关系

67.下列定义变量的语句中正确的是()。

A)int_int;B)double3int_;

C)charfor;D)floatUS&;

68.

69.下列程序段的输出结果是()。

A.passwarnB.passerrorC.goodpasswarnD.pass

70.有以下程序程序的运行结果是()。

A.CDEFB.ABEFC.ABCDD.CDAB

71.若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是()。

A.sqrt(fabs(pow(n,x)+exp(x)))

B.sqrt(fabs(pow(n,x)+pow(x,e)))

C.sqrt(abs(n^x+e^x)

D.sqrt(fabs(pow(x,n)+exp(x)))

72.有下列程序:

main

{inti,s=0,t[]={1,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序执行后的输出结果是()。A.A.45B.20C.25D.36

73.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是()。A.A.把软件划分成模块B.确定模块之间的调用关系C.确定各个模块的功能D.设计每个模块的伪代码

74.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。

A.外模式B.内模式C.概念模式D.逻辑模式

75.有以下程序:

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

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

76.

77.下列叙述中正确的是()。A.栈是“先进先出”的线性表

B.队列是“先进后出”的线性表

C.循环队列是非线性结构的线性表

D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

78.

79.设有如下三个关系表:

80.

五、程序改错题(1题)81.给定程序MODll.C中,函数fun的功能是:在有n名学生,2门课成绩的结构体数组std中,计算出第l门课程的平均分,作为函数值返回。例如,主函数中给出了4名学生的数据,则程序运行的结果为:第l门课程的平均分是:76.125000请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),它的功能是求小于形参n同时能被3与7整除的所有自然数之和的平方根,并将其作为函数值返回。例如,若n为1000时,程序输出应为s=153.909064。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.A解析:由于本题定义的是共用体,所以成员表列中的整型变景x与字符数组c共占用同—个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。

2.B

3.A解析:头文件<string.h>是字符串处理函数对应的头文件,要想调用C语言的库函数时,都要在程序中嵌入该函数对应的头文件,否则无法使用库函数。

strcpy(s1,s2)把s2中的字符串复制到s1中,所以结果就为s2的长度。

4.A本题考查switch语句。当i=1时,执行case1,因为没有遇到break语句,所以依次往下运行,a=a+2=2,a=a+3=5;当i=2时,执行case2,因为没有遇到break语句,所以依次往下运行,a=a+2=7,a=a+3=10;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a=a+2=13,a=a+3=16;当i=4时,执行default,a=a+3=19,结束循环。

5.D

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

7.D

8.C将两个字符串连接起来组成一个字符串,选用strcat函数来连接。

9.C解析:p=&a[3]将指针指向数组a的第4个元素,p[5]则是数组a的第9个元素,而a[8]=9,所以b=9。

10.A

11.D

12.C统计1~9九个数中的奇数和,此题重点考察指向数组的指针。c语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是l+3+5+7+9=25。1

13.D

14.DD。【解析】软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,使用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。

15.D解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算工具以及程序员的水平无关。

选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误。因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。

选项C错误,因为根据一个算法所编制出的程序程序中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。

所以,本题的正确答案为D。

16.C

17.C解析:x++:表示在使用x之后,使x的值加1;y++:表示在使用y之后,使y的值加1;++y:表示在使用y之前,使\u3000y的值加1。此题中执行z=x++,是将x的值先赋给z,所以z=1,接下来x自行加1,其结果为2:执行y++后,y=2,执行++后,y=3;故答案选C。

18.A此题考查a--和--a之间的区别,当while(a--)为真循环执行,a--是执行再减1,所以答案选择A。

19.A

20.B

21.130130解析:本题主函数中用了一个for循环,循环了3次:当i=9时,i/10=0,执行switch语句中case0分支,m和n的值各增1,变为1和1,然后遇到break语句,退出switch语句;当i=10和11时,i/10都等于1,执行switch语句中的case1分支,两次使n增1,变为3,退出switch语句。故该空格处应该填130。

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

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

结构体类型的定义:

struct结构体类型名

{

成员项表;

};

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

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

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

24.1343113431解析:程序首先定义了一个结构体NODE,在主函数中声明了一个该结构体的数组m[5]和两个结构体指针p和q,并分别初始化p指向m(指向数组的第—个元素):q指向m+4(指向数组的最后一个元素)。接下来定义并初始化一个整型变量i为0。然后用一个while循环,在p和q不相等的时候执行循环体:让p所指结构体的成员k等于++i的值,然后让p指向下一个结构体;让q所指结构体的成员k等于i++的值,然后让q指向前一个结构体。i从0开始交替调用++i和i++,两个表达式的值依次分别为1和1、3和3……。所以当p==q循环结束时,实际循环了两次,p和q都指向m数组的中间位置m[2],i自增了4次,所以q->k=i;就是让m[2]k=4。所以程序最后输出为:13431。

25.66解析:本题中命令行输入5个符号串,所以argc=5,argv[0]指向符号串'ex',argv[1]指向符号串'abcd',argv[2]指向符号串'efg',argv[3]指向符号串'h3',argv[4]指向符号串'k44',for循环的作用是计算strlen(argv[1]),strlen(argv[3])=4+2=6。

26.5555解析:分析程序执行过程,第一次循环时,j=3,i=5。因为switch(3),所以执行case3,调用P(a[--i])=P(a[4])=P(5),输出5;第二次循环时,j=2,i=4,因为switch(2),所以执行case2,调用P(a[i++])-P(a[4])=P(5),输出5,之后i自加等于5。

27.2424解析:本题主函数中首先定义了一个长度为7的数组,然后用一个while循环引用数组的元素,当i大于7或者p[i]为偶数时,循环结束。显然当i=2时,p[2]=14为偶数时,循环结束,此时j的值为j=p[0]+p[1]=24。

28.585858585858解析:本题考查对if语句的掌握,当输入58以后,程序中的3个if语句都成立,所以分别输出58。

29.0

30.错误。错误。解析:数据库恢复是将数据库中的数据从错误状态中恢复到某种逻辑一致的状态。如果数据库中包含成功事务提交的结果,则称数据库处于一致性状态。

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

32.morningclassmorningclass解析:本题考查了两个知识点:①“++,--”运算后缀形式是先使用变量原来的值,使用完后再使其增1或减1;②在switch语句中,当n='c'时,执行“case'c'”,输出morning;因为此句中没有break语句,因此接着执行“case'd':”,输出class,最终输出结果为morningclass。

33.33333333解析:本题考查for循环,for(cc=1;cc<=4;cc++)表示循环4次,a+=3表示每次a的值增加3,但是子函数中没有将变量a定义为static类型,所以每次调用完子函数之后,变量a所做的改变都不能保存,这样在下一次调用子函数时,a的初值仍是0,所以不管调用多少次,子函数输出始终是3。

34.1000001010000010解析:运算“&”的规则是只有当两个相应的二进制位都为1时,该位的结果才为1。要保留第2、8位,只要将其与二进制数10000010相与。

35.数据库系统数据库系统

36.99解析:本题要输出的结果是字符串'IBM\\n012\\1\\\\'的长度,'IBM'是3个字符,\'\\n\'是1个字符,'012'又是3个字符,最后的\'\\1\'和\'\\\\\'都是1个字符。所以最终字符串的长度应该是3+1+3+1+1=9。故本题应该填9。

37.承接模块承接模块解析:进行模块测试时,应为每个被测试的模块另外设计两类模块:驱动模块和承接模块。其中驱动模块的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果;承接模块的作用是模拟被测试模块的下层模块。

38.一对多(或1:N)一对多(或1:N)

39.1234theend1,2,3,4,theend解析:本题考查带参数的宏的定义。第1次循环,i=1时,调用PRINT(1),P(1)输出1;第2次循环,i=2时,调用PRINT(2),P(2)输出2:第3次循环,i=3时,调用PRINT(3),P(3)输出3:第4次循环,i=4时,调用PRINT(4),P(4)输出4,theend。

40.66解析:本题定义了二维数组a和指针变量p,p指向数组的首地址,for循环语句的功能是给数组元素赋值,结果为a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[2][0]=7、a[2][1]=8、a[2][2]=9,故printf函数的输出结果为6。

41.A本题考查程序效率。程序效率是指程序运行速度和程序占用的存储空间。影响程序效率的因素是多方面的,包括程序的设计、使用的算法、数据的存储结构等。在确定数据逻辑结构的基础上,选择一种合适的存储结构,可以使得数据操作所花费的时间少,占用的存储空间少,即提高程序的效率。因此,本题选项A的说法是正确的。

42.D解析:n!=n*(n-1)*……*2*1,由于选项A中f的初值为0,所以循环n次后,f值依然为0,故选项A错误:选项B中循环的终止条件是“i<n”,即只执行i-1次循环,得到的f值为(n-1)*……*2*1的值,故选项B错误;选项C中,当n>1时,由于初值“i=n”是符合条件“i>1”的,且增量为+1,故循环中永远不会出现不满足条件“i>1”的值,所以出现死循环。

43.D数据的逻辑结构是指数据元素之间的逻辑关系的数据结构。数据的存储结构则是数据的逻辑结构在计算机中的物理实现,有时也称作数据的物理结构。两者的区别是数据的逻辑结构只涉及到数据之间抽象的数学关系。存储结构则涉及到如何在计算机中通过对数据的物理存储进行组织来表达数据元素之间的逻辑关系。比如在线性表的顺序存储中是利用物理存储空间上的连续性来表达线性表中数据的前后件关系;在线性表的链式存储中是通过指针域构成的逻辑链条来表达数据的前后件关系。一般的,一种数据的逻辑结构对应的物理实现,即数据的存储结构不止一种。因此选项D正确。

44.C

45.B解析:考查结构体数组对结构体成员的引用。结构体数组中对结构体成员的引用要先引用到数组元素,然后像对待普通的结构体变量一样来对待结构体数组元素。

46.A解析:字符数组a[]中用字符串常量“xyz”进行初始化,字符数组a[]的长度为字符的个数,所以其值为3,并不包括字符串结束标记'\\0';字符串数组b[]用3个字符'x'、'y'、'z'来初始化,所以其字符串的长度等于3。

47.D解析:在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

48.B解析:题目中fun()函数的返回表达式是*p,所以选项C、D不为所选,而应该是形参p所指内容的值,因为p为int型指针,所以该值是一个整数。故应该选择B。

49.A解析:第一个判断值为真,过渡到下一个判断,第二个判断为真,过渡到第三个判断……,如此循环,在打印输出语句的前一行,程序给变量x赋了值,为-1,所以,无论前期如何变化,最后的x值依然为-1。

50.C解析:本题主要考查strcpy()函数,char*strcpy(char*s1,char*s2)是把指针s2指向的串复制到指针s1指向的存储空间。

51.D解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。本题中定义变量a为双精度型变量,双精度变量的格式符为“1e”;变量的地址用取地址符“&”加变量名表示,如变量a的地址为“&a”。

52.D解析:常见的需求分析方法有结构化分析方法和面向对象的分析方法两类。其中结构化分析方法又包括面向数据流的结构化分析方法(SA-Structuredanalysis),面向数据结构的Jackson方法(JSD-Jacksonsystemdevelopmentmethod)和面向数据结构的结构化数据系统开发方法(DSSD-Datastructuredsystemdevelopmentmethod)。

53.D解析:本题主要考查左移、右移对数据值的影响,左移n位相当于乘以2的n次幂,右移n位相当于除以2的n次幂。

54.C解析:选项A先执行x=a,x的值为0,不再执行y=a,因此y未被赋值。选项B是将y的值赋给a和x,而未能实现将a的值赋给变量x、y。选项C先执行y=a,将a的值赋给y;再执行x=a,将a的值赋给x。选项D同B。所以选项C符合题意。

55.C解析:本题考查按位与“&”。因为1&1=1,0&0=0,所以任何数与自身按位与,结果仍为此数,不发生变化。

56.C树最适合用来表示元素之间具有分支层次关系的数据,故本题选C。

57.C解析:EOF是指向文本文件的结束标志,NULL是打开文件错误时的返回值。feof(fp)用来判断文件是否在文件末尾,文本文件和二进制文件均可以使用此函数,如果遇到文件结束就返回1,否则返回0。

58.D解析:需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。

59.D解析:本题考查两个知识点:①C语言用'\\n'这个字符常量表示换行;②函数getchar()的作用是从终端输入一个字符,当遇到换行时结束输入。

60.B解析:本题输出的是逗号表达式的值,即a2的值m。

61.A

62.C

\n当执行fun函数时,因为参数传递时是地址传递,因此形参值的改变会影响实参中的数,在执行fun函数时先输出12,接着把*X赋3,*y赋4,此时带回主函数中,输出的值为34。

\n

63.D本题可以写成:a+a+(a-(a*a)),所以*的优先级最高,其次是-=的,+的优先级最低,因此先求a-=a*a=9,表达式变为a+a+-=9,a即a=a-9=-6,再次变为a+(-6)=-12,故选择D选项。

64.D在C语言中整型常量可以用十进制、八进制和十六进制等形式表示,但不包括二进制,所以选择D。

65.CC语言是一种计算机程序设计语言,常用的C语言IDE(集成开发环境)有MicrosoftVisualC++、BorlandC++、WatcomC++、BorlandC++Builder、GNUDJGPPC++、Lccwin32CCompiler3.1、HighC、TurboC、C-Free、win-tc等。

Basic是一种计算机高级设计语言,常见的有QuickBasic和VisualBasic。

DDL(DataDescriptionLanguage)是数据库模式定义语言的缩写,是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式定义包含该数据库中所有实体的描述定义,包括结构定义、操作方法定义等。DDL描述的模式必须由计算机软件进行编译,转换为便于计算机存储、查询和操纵的格式。

DML(DataManipulationLanguage)是数据操纵语言的缩写,用户通过它可以实现对数据库的基本操作,如对表中数据的查询、插入、删除和修改。

66.B线性链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存僻:空间,因此一般要多于顺序存储结构,选项B)正确。

67.A用户标识符不能为关键字,只能由数字,字母和下划线组成,而且第一个必须为字母或下划线。

68.C

69.A本题的考查点是switch语句。当用户键人字符时,会进入一个多分支选择语句,根据n的值,来确定下一步执行的选择语句;最后的结果应当为passwarn。本题需要注意的是,当case语句没有跟随break语句时,不会跳出switch,而是继续执行下一个case语句,直至遇到break语句。

70.A调用funl函数将全局变量a和b赋值为‘c’和‘D’,然后输出全局变量a和b.最后调用缸rt2输出局部变量a和b的值‘E’和‘F’。答案选择A)。

71.AB选项中函数pow(x,C)错误应该直接使用exp(x)函数。c选项中函数ah(n^x+e“x)错误,应该使用fabs()返回浮点数的绝对值。D选项中pow(x,n)参数顺序错误。

72.C在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。

73.D解析:概要设计是软件系统结构的总体设计,其目的就是要按照需求规格说明书,把软件按照功能划分为多个模块,然后确定每个模块要实现的功能,最后确定模块之间的调用关系。而设计每个模块的伪代码则属于详细设计。所以只有最后一个不属于概要设计范畴。

74.B数据库有三层模式结构,逻辑模式是数据的全局逻辑结构的描述,外模式也称为子模式,是局部数据的逻辑结构描述,而内模式也称为存储模式,是数据库物理存储结构和存取方法的描述。

75.Cs=f(a)表达式第一次调用f(n)函数时.f(n)函数运行结果为n=4,a=2,即s等于4;s=s+f(a)表达式第二次调用f(n)函数时,f(n)函数运行结果为n=5,所以得到s值为9。

76.D

77.D栈是先进后出的线性表。因此A)错误;队列是先进先出的线性表,因此B)错误;循环队列是线性结构的线性表,因此c)错误,故本题答案为D)。

78.B

79.B两个相同结构关系的“并”是由属于这两个关系的元组组成的集合。

80.D

81.(1)doublesum改为doublesunl=0.0;(2)for(i=0;i<2;i*)改为细(i=0;i<2;i++)改为for(i_0;i82.1doublefun(intn)doublesum=0.0;inti;for(i=21;i<=n;i++)if((i%3==0)&&(i%7==0))sum+=i;returnsqrt(sum);本题考查算术运算的算法。首先利用一个for循环判断小于n且能同时被3和7整除的整数,并将满足条件的整数累加到sum。之后调用Sqrt()函数计算sum的平方根,并将其作为函数的返回值返回。2021-2022年广东省梅州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]==1;printf("\n%d",x.i);}

A.266B.11C.265D.138

2.已知一个大小为n的整型数组,现求该数组的全部连续子数组的元素之和的最大值,最优算法的时间复杂度是()如:a[4]={2,-1,3,-4},它的全部连续子数组为{2,-1,3,-4,[2,-1],[-1,3],[3,-4],[2,-1,3],[-1,3,-4],[2,-1,3,-4]},它们的元素之和为{2,-1,3,-4,1,2,-1,4,-2,0},其中的最大值为4。

A.O(logN)B.O(N)C.O(N*logN)D.O(N^2)

3.设已包含头文件<string.h>,下列程序段的运行结果是()。chars1[]={"ACDEF"};chars2[]="ABC";strcpy(s1,s2);printf("%d",strlen(s1));

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

4.下列程序的输出结果是()#include<stdio.h>main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}printf(“%d”,a);}A.19B.18C.6D.8

5.在排序方法中,元素比较次数与元素的初始排列无关的是()

A.Shell排序B.归并排序C.直接插入排序D.选择排序

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

B.串中不同字母的个数

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

D.串中所含字符的个数

7.

8.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcpy()C.strcat()D.strcmp()

9.有如下程序段:inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=P[5];则b的值是()。

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

10.有两个关系R和T如下:

则由关系R得到关系T的操作是()。A.选择B.投影C.交D.并

11.无向图中一个顶点的度是指图中与该顶点相邻接的顶点数。若无向图G中的顶点数为n,边数为e,则所有顶点的度数之和为()

A.n*eB.n+eC.2nD.2e

12.有以下程序:

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

A.45B.20C.25D.36

13.

14.软件需求分析一般应确定的是用户对软件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

15.算法的时间复杂度是指()A.执行算法程序所需要的时间B.算法程序的长度C.算法程序中的指令条数D.算法执行过程中所需要的基本运算次数

16.插入和删除只能在一端进行线性表,称为()。

A.队列B.循环队列C.栈D.循环栈

17.有以下程序main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序运行后的输出结果是______。A.2,3,3B.2,3,2C.2,3,1D.2,2,1

18.有以下程序:#include<stdio.h>main(){inta=7;while(a--);print[("%d\n",a);}程序运行后的输出结果是()。A.-1B.0C.1D.7

19.图的BFS生成树的树高比DFS生成树的树高()

A.小或相等B.小C.大或相等D.大

20.对线性表进行折半查找最方便的存储结构是()。

A.顺序表B.有序顺序表C.链表D.有序链表

二、2.填空题(20题)21.以下程序运行后的输出结果是【】。

main()

{inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{case0:m++;n++;break;

case1:n++;break;

default:k++;n++;

}

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

}

22.有以下程序

main()

{intn=0,m+1,X=2;

if(!n)X-=l;

if(m)X-=2;

if(X)X-=3;

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

}

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

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

structSTRU

{inta,b;charc:doubled;

structSTRU*p1,*p2;

};

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

【】t[20]

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

structNODE

{intk;

structNODE*link;

};

main()

{structNODEm[5],*p=m,*p=m,*q=m+4;

inti=0;

while(p!=q)

{p->k=++i;p++

q->k=i++;q--;

}

q->k=i;

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

printf("%d",m[i].k);

ptintf("\n");

}

25.有以下程序:

#include<string.h>

main(intargc,char*argv[])

{inti,len=0;

for(i=1;i<argc;i+=2)len+=strlen(argv[i]);

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

}

经编译连接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行:

exabcdefgh3k44

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

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

#defineP(A)printf("%d",A)

main()

{intj,a[]={1,2,3,4,5,6,7),i=5;

for(j=3;j>1;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

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

main()

{intp[7]{11,13,14,15,16,17,18};

inti=0,j=0;

while(i<7&&p[i]%2==1)j+=p[i++];

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

}

28.若从键盘输入58,则以下程序输出的结果是【】。

main()

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);}

29.冒泡排序算法在最好的情况下的元素交换次数为【】。

30.数据库恢复是将数据库从______状态恢复到某一已知的正确状态。

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

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':printf("good");break;

case'c':printf("morning");

case'd':printf("class");

}

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

#include<stdio.h>

fun()

{inta=0;

a+=3;

printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<=4;cc++)

fun();

printf("\n");

}

34.没有chara,b;,,若要通过a&b运算屏蔽掉a中的其他位,只保留第2位和第8位(右起为第1位),则b的二进制是【】。

35.由计算机、操作系统、DBMS、数据库、应用程序及用户组成的一个整体叫做【】。

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

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

37.模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块。其中【】的作用是模拟被测试模块的下层模块。

38.如果一个工人可管理多个设施,而一个设施只被一个工人管理,则实体“工人”与实体“设备”之间存在______联系。

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

#defineP(A)printf("%d,",(int)(A))

#definePRINT(A)P(A);printf("theend")

main()

{inti,a=0;

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

PRINT(a+i);

printf("\n");

}

40.有以下程序:

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i+1;

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

}

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

三、1.选择题(20题)41.下列叙述中正确的是()。

A.程序执行的效率与数据的存储结构密切相关

B.程序执行的效率只取决于程序的控制结构

C.程序执行的效率只取决于所处理的数据量

D.以上三种说法都不对

42.设变量已正确定义,则以下能正确计算f=n!的程序段是______。A.f=0;for(i=1;i<n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

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

A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示

44.如果要限制一个变量只能为本文件所使用,必须通过______来实现。

A.外部变量说明B.静态内部变量说明C.静态外部变量说明D.局部变量说明

45.若有以下的说明,对初值中整数2的正确引用方式是

staticstruct

{charch;

inti;

doublex;

}a[2][3]={{{′a′,1,3,45},{′b′,2,7,98},{′c′,31,93}}};

A.a[0][1].chB.a[0][1].iC.a[0][0].iD.a[0][2].i

46.已有定义:chara[]="xyz",b[]={'x','y','z'};,下列叙述中正确的是()。

A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.上述三种说法都不对

47.有以下程序#include<stdio.h>voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;i<n-1;j++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]:a[j];a[j]=t;}}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},ifun(c+4

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

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

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

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

48.已定义以下函数;intfun(int*p){return*p;}fun函数返回值是()。

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

49.下面程序main(){intx=100,a=10,b=20,ok1=5,ok2=0;if(a<b)if(b!=15)if(!ok1)x=1:elseif(ok2)x=10;x=-1;printf("%d\n",x);}的输出是______。

A.-1B.0C.1D.不确定的值

50.以下程序段的输出结果是______。char*p="abodefgh";p+=3;printf("%d\n",strlen(strcpy(p,"12345")));

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

51.若有"doublea;",则正确的输入语句是()。

A.scanf("%1f",a);

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

C.scanf("%1f",&a)

D.scanf("%1e",&a);

52.下列叙述中,不属于结构化分析方法的是()。A.A.面向数据流的结构化分析方法

B.面向数据结构的Jackson方法

C.面向数据结构的结构化数据系统开发方法

D.面向对象的分析方法

53.在位运算中,操作数每左移两位,其结果相当于()。

A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4

54.当a的值为0时,在下列选项中能正确将a的值赋给变量x、y的是()。

A.(x=a)&&(y=a)B.x=a=yC.(y=a)||(x=a)D.a=x=y

55.以下程序的输出结果是main(){intc=35;printf("%d\n",c&c);}

A.0B.70C.35D.1

56.树最适合用来表示()。

A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据

57.若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是

A.EOFB.-1C.1D.NULL

58.下列工具中为需求分析常用工具的是()。

A.PADB.PFDC.N-SD.DFD

59.若变量已正确定义,下列正确的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

60.有以下程序:#include<stdio,h>main(){chara1='M',a2='m';printf("%c\n",(a1,a2));}以下叙述中正确的是()。

A.程序输出大写字母MB.程序输出小写字母mC.格式说明符不足,编译出错D.程序运行时产生出错信息

四、选择题(20题)61.

62.

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

voidfun(int*X,inty)

{printf("%d%d",*x,*y);*x=3;*y=1;}

main

{intx=1,y=2;

fun(&y,&x);

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

}

A.2143B.1212C.1234D.2112

63.以下程序的输出结果是()。main{inta=3:printf("%d\n",(a+a-=a*a));}A.-6B.12C.0D.-12

64.C源程序中不能表示的数制是()。

A.十六进制B.八进制C.十进制D.二进制

65.在数据库管理系统DBMS中,用来定义内模式和外模式等一些数据库管理系统中其他结构的语言为

A.CB.BasicC.DDLD.DML

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

A.线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的

B.线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构

C.线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构

D.线性表的链式存储结构所需要的存储空间与顺序存储结构没有任何关系

67.下列定义变量的语句中正确的是()。

A)int_int;B)double3int_;

C)charfor;D)floatUS&;

68.

69.下列程序段的输出结果是()。

A.passwarnB.passerrorC.goodpasswarnD.pass

70.有以下程序程序的运行结果是()。

A.CDEFB.ABEFC.ABCDD.CDAB

71.若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是()。

A.sqrt(fabs(pow(n,x)+exp(x)))

B.sqrt(fabs(pow(n,x)+pow(x,e)))

C.sqrt(abs(n^x+e^x)

D.sqrt(fabs(pow(x,n)+exp(x)))

72.有下列程序:

main

{inti,s=0,t[]={1,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);

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

}

程序执行后的输出结果是()。A.A.45B.20C.25D.36

73.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是()。A.A.把软件划分成模块B.确定模块之间的调用关系C.确定各个模块的功能D.设计每个模块的伪代码

74.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是()。

A.外模式B.内模式C.概念模式D.逻辑模式

75.有以下程序:

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

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

76.

77.下列叙述中正确的是()。A.栈是“先进先出”的线性表

B.队列是“先进后出”的线性表

C.循环队列是非线性结构的线性表

D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构

78.

79.设有如下三个关系表:

80.

五、程序改错题(1题)81.给定程序MODll.C中,函数fun的功能是:在有n名学生,2门课成绩的结构体数组std中,计算出第l门课程的平均分,作为函数值返回。例如,主函数中给出了4名学生的数据,则程序运行的结果为:第l门课程的平均分是:76.125000请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),它的功能是求小于形参n同时能被3与7整除的所有自然数之和的平方根,并将其作为函数值返回。例如,若n为1000时,程序输出应为s=153.909064。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.A解析:由于本题定义的是共用体,所以成员表列中的整型变景x与字符数组c共占用同—个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。

2.B

3.A解析:头文件<string.h>是字符串处理函数对应的头文件,要想调用C语言的库函数时,都要在程序中嵌入该函数对应的头文件,否则无法使用库函数。

strcpy(s1,s2)把s2中的字符串复制到s1中,所以结果就为s2的长度。

4.A本题考查switch语句。当i=1时,执行case1,因为没有遇到break语句,所以依次往下运行,a=a+2=2,a=a+3=5;当i=2时,执行case2,因为没有遇到break语句,所以依次往下运行,a=a+2=7,a=a+3=10;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a=a+2=13,a=a+3=16;当i=4时,执行default,a=a+3=19,结束循环。

5.D

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

7.D

8.C将两个字符串连接起来组成一个字符串,选用strcat函数来连接。

9.C解析:p=&a[3]将指针指向数组a的第4个元素,p[5]则是数组a的第9个元素,而a[8]=9,所以b=9。

10.A

11.D

12.C统计1~9九个数中的奇数和,此题重点考察指向数组的指针。c语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是l+3+5+7+9=25。1

13.D

14.DD。【解析】软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,使用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。

15.D解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算工具以及程序员的水平无关。

选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误。因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。

选项C错误,因为根据一个算法所编制出的程序程序中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。

所以,本题的正确答案为D。

16.C

17.C解析:x++:表示在使用x之后,使x的值加1;y++:表示在使用y之后,使y的值加1;++y:表示在使用y之前,使\u3000y的值加1。此题中执行z=x++,是将x的值先赋给z,所以z=1,接下来x自行加1,其结果为2:执行y++后,y=2,执行++后,y=3;故答案选C。

18.A此题考查a--和--a之间的区别,当while(a--)为真循环执行,a--是执行再减1,所以答案选择A。

19.A

20.B

21.130130解析:本题主函数中用了一个for循环,循环了3次:当i=9时,i/10=0,执行switch语句中case0分支,m和n的值各增1,变为1和1,然后遇到break语句,退出switch语句;当i=10和11时,i/10都等于1,执行switch语句中的case1分支,两次使n增1,变为3,退出switch语句。故该空格处应该填130。

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

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

结构体类型的定义:

struct结构体类型名

{

成员项表;

};

定义结构

温馨提示

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

评论

0/150

提交评论