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

下载本文档

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

文档简介

2022-2023年山东省临沂市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.若进栈序列为1,2,3,4,进栈过程中可以出栈,则下列不可能的一个出栈序列是______。

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

3.下列程序段中完全正确的是()。A.int*p;scanf(“%d”,&p);

B.int*p;scanf(“%d”,p);

C.intk,*p=&k;scanf(“%d”,p);

D.intk,*p;*p=&k;scanf(“%d”,p);

4.设有定义“doublea[10],*s=a;”,以下能够代表数组元素a[3]的是()。

A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3

5.下列描述错误的是()。

A.继承分为多重继承和单继承

B.对象之间的通信靠传递消息来实现

C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

D.类是具有共同属性、共同方法的对象的集合

6.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为________。

A.24B.48C.72D.53

7.以下选项中合法的C语言常量是()。

A.2.0KbB.”C++’C.”\2.0D.1.01

8.

9.下面程序段的运行结果是

charstr[]="ABC",*p=str;

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

A.67B.0C.字符′C′的地址D.字符′C′

10.下列条件语句中,输出结果与其他语句不同的是()。

A.if(a!=0)printf(“%d\n”,x);elseprintf(“%d\n”,y);

B.if(a==0)printf(“%d\n”,y);elseprintf(“%d\n”,x);

C.if(a==0)printf(“%d\n”,x);elseprintf(“%d\n”,y);

D.if(a)printf(“%d\n”,x);elseprintf(“%d\n”,y);

11.设有定义:

inta=1,b=2,C=3;

以下语句中执行效果与其他三个不同的是()。

A.if(a>B.C=a,a=b,b=C;

B.if(a>B.{C=a,a=b,b=C;}

C.if(a>B.C=a;a=b;b=c;

D.if(a>B.{C=a;a=b;b=c;}

12.有下列程序:main{inti,j,x=0;for(i=0,i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++:}x++:}printf("x=%d\n",x);}程序执行后的输出结果是()。A.x=4B.x=8C.x=6D.x=12

13.有以下定义语句,编译时会出现编译错误的是()。

A.chara=’\x2d’;B.chara=。\n。;C.chara=…a;D.chara=”aa”:

14.下面关于编译预处理的命令行中,正确的是()。

A.#defineintINT

B.##defineeps0.001

C.##DEFINETRUE

D.#defineE2.88

15.若希望下列的程序运行后输出25,程序空白处的正确选项是()。

main()

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

primf("%d,j-40);

}

A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

16.在计算机中,算法是指()

A.加工方法B.解题方案的准确而完整的描述C.排序方法D.查询方法

17.

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

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

19.在软件测试设计中,软件测试的主要目的是

A.实验性运行软件B.证明软件正确C.找出软件中全部错误D.尽可能多地发现软件中的错误

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

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

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

22.下面程序的运行结果是()。#include<stdio.h>main(){inta,b,c,n;a=2;b=0;c=1;n=1;while(n<=3){c=c*a;b=_b+c;++n;}printf("b=%d",B);}

23.在索引查找或分块查找中,首先查找【】,然后再查找相应的【】,整个索引查找的平均查找长度等于查找索引表的平均查找长度与查找相应子表的平均查找长度之和。

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

main()

{inta=2,b=7,c=5;

switch(a>0)

{

case1:

switch(b<0)

{case1:printf("@");break;

case2:pnntf("!");break;

}

case0:

switch(c==5)

{case0:pnntf("*");break;

case1:printf("#");break;

case2:printf("$");break;

}

default:printf("&");

}

printf("\n");

}

25.若有以下程序:

main()

{chara;

a='H'-'A'+'0';

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

}

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

26.有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b,则不能把结点b连接到结点a之后的语句是【】。

structnode

{chardata;

structnode*next;}a,b

27.若有如下程序:

main()

{ints=8,a=3,b=5,c=6;

if(a>b)s=a;a=b;b=s;

if(a>c){s=a;a=c;b=s);

if(b>c)s=b;b=c;c=s;

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

}

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

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

structdate

{unsignedintday;

unsignedintmouth;

unsignedintyear;

union{intshare1;

floatshare2;

}share;

}a;

29.以下程序的运行结果为【】。

#defineFORMAT"%u,%u"

main()

{inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

printf("\n");

printf(FORMAT,**a,*a[0]);

printf(FORMAT,*(a[0]+1),*&a[0][1]);

printf(FORMAT,a[1][0],*(*(a+1)+0));

}

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

#include<stdio,h>

main()

charc1,c2;

for(el='0',c2='9';e1<c2;c1++,c2--)printf("%c%c",c1,c2);

printf("\n");

}

31.若有如下程序:

sub(int*y)

{while(--(*y));

printf("%d",(*y)--);}

main()

{intx=10;

sub(&x);

}

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

32.某二叉树中度为2的节点有18个,则该二叉树中有()个叶子节点。

33.以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。

main()

{intx[10],a[9],i;

for(i=0;i<10;i++)scanf("%d",&x[i]);

for([11];i<10;i++)

a[i-1]=x[i]+[12];.

for(i=0;i<9;i++)printf("%d",a[i]);

printf("");

}

34.常用的黑箱测试有等价类划分法、【】和错误推测法3种。

35.设一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为【】。

36.算法的基本特征是可行性、确定性、【】和拥有足够的情报。

37.若有以下程序段:

intc1=1,c2=2,c3;

c3=1.0/c2*c1;

则执行后,c3中的值是【】。

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

#include<stdio,h>

voidswap(y)

{intt;

t=x;x=y;y=t:printf("%d%d",x,y);

}

main()

{ihta=3,b=4:

swap(a,b);prinff("%d%d",a,b);

}

39.在面向对象方法中,类之间共享属性和操作的机制称为______。

40.数据结构分为逻辑结构与存储结构,线性链表属于【】。

三、1.选择题(20题)41.有定义语句:intx,y;,若要通过scanf("%d,%d",&x,&y);语句使变量x得到数值11,变量y得到数值12,下面4组输入形式中错误的是______。

A.1112<回车>B.11,12<回车>C.11,12<回车>D.11,<回车>12<回车>

42.以下数组定义中错误的是A.intx[][3]={0};

B.intx[2][3]={{l,2},{3,4},{5,6}};

C.intx[][3]={{l,2,3},{4,5,6}};

D.intx[2][3]={l,2,3,4,5,6};

43.下列选项可以正确表示字符型常量的是

A.'\r'B.aC.\897D.296

44.以下叙述中正确的是______。A.预处理命令行必须位于源文件的开头

B.在源文件的一行上可以有多条预处理命令

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

D.宏替换不占用程序的运行时间

45.设有以下定义的语句,则*(*(p+2)+1)的值为______。inta[3][2]={10,20,30,40,50,60},(*p)[2];p=a;

A.10B.30C.60D.40

46.有以下程序:#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

47.结构化程序设计方法的3种基本控制结构中不包括

A.循环结构B.递归结构C.顺序结构D.选择结构

48.有以下程序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

49.在C语言中,如果下面的变量都是int类型,则输出的结果是______。sum=pad=5;pad=sum++;pad++;++pad;printf("%d\n",pad);

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

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

A.数据的逻辑结构与存储结构必定是一一对应的

B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构

C.程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构

D.以上3种说法都不对

51.有以下程序:#include<stdio.h>main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;prinff("%d\n";*p+*q);}程序运行后的输出结果是()。

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

52.若—个外部变量的定义形式为staticintx;,那么,其中static的作用应该是______。

A.将变量存储在静态存储区B.使变量x可以由系统自动初始化C.使x只能在本文件内引用D.使x的值可以永久保留

53.在16位IBM-PC机上使用C语言,若有如下定义structdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是

A.1B.2C.7D.11

54.一个算法应该具有“确定性”等五个特性,下面对另外四个特性的描述中错误的是()。

A.有零个或多个输入B.有零个或多个输出C.有穷性D.可行性

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

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

56.有以下函数intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}以下关于aaa函数的功能的叙述正确的是A.求字符串s的长度B.比较两个串的大小C.将串s复制到串tD.求字符串s所占字节数

57.在一个C程序中

A.main函数必须出现在所有函数之前

B.main函数可以在任何地方出现

C.main函数必须出现在所有函数之后

D.main函数必须出现在固定位置

58.若有以下说明和定义fun(int*C){…}main(){int(*A)()=fun,*b(),w[10],c;┇}在必要的赋值之后,对fun函数的正确调用语句是()

A.a=a(w);B.(*a)(&c);C.b=*b(w);D.fun(b);

59.

执行下列程序中的输出语句后,a的值是()。

main

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A.17B.37C.6D.13

60.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则

A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次

四、选择题(20题)61.有以下程序:

#include<stdio.h>,

main()

{intS;

scanf("%d",&s);

while(s>O)

{switch(s)

{casel:printf("%d",s+5);

case2:printf("%d",s+4);break;

case3:printf("%d",s+3);

default:("%d",s+1);break;

}

scanf("%d",&s);

}

}

运行时,若输入123450<回车>,由输出结果是()。

A.6566456B.66656C.66666D.6666656

62.以下选项中,不能作为合法常量的是()。

A.1.234e05B.1.234e+5C.1.234e0.5D.1.234e0

63.有以下程序

64.下面不属于需求分析阶段任务的是()。

A.确定软件系统的功能需求B.确定软件系统的性能需求C.需求规格说明书评审D.制定软件集成测试计划

65.下列选项中,不属于模块间耦合的是()。A.数据耦合B.标记耦合C.异构耦合D.公共耦合

66.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()

A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程

67.以下叙述中正确的是(.。

A.调用printf函数时,必须要有输出项

B.使用putChar函数时,必须在之前包含头文件stdio.h

C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D.调用getChar函数读入字符时,可以从键盘上输入字符所对应的ASCIl码

68.以下函数按每行8个输出数组中的数据:

下划线处应填入的语句是()。

A.

B.

C.

D.

69.有以下程序程序运行后的输出结果是()。

A.143B.197C.33D.28

70.

71.在C语言程序中可用做用户标识符的是()。

A.void123BBNB.aa_abccasC.as+b3-123IfD.6fDoSIG

72.以下叙述中正确的是()。

A.在C语言程序中,main函数必须放在其他函数的最前面

B.每个后缀为C的C语言源程序都可以单独进行编译

C.在C语言程序中,只有main函数才可单独进行编译

D.每个后缀为.C的C语言源程序都应该包含一个main函数

73.(72)n个顶点的强连通图的边数至少有______。

A.n-1

B.n(n-1)

C.n

D.n+1

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

A.678910

B.13579

C.12345

D.62345

75.下列C语言用户标识符中,不属于合法标识符的是

A.ad_intB.bb_7C._dd7D.int

76.

77.

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

main

{

doubled=3.2;intx,y;

x=1.2;y=(x+3.8)/5.0;

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

}

A.3B.3.2C.0D.3.07

79.运行下列程序,若从键盘输入字符“a”,则输出结果是()。

charc;

c=getchar;

if(c>=a&&c<=g)c=c+4:

elseif(c>=9&&c<=2)c=c-21:

elseprintf("inputerror!\n");

putchar(c);

A.fB.tC.eD.d

80.有以下程序段以下关于程序段执行情况的叙述,正确的是()。

A.当产生的随机数n为0时结束程序运行

B.当产生的随机数n为4时结束循环操作

C.当产生的随机数n为1和2时不做任何操作

D.for循环语句固定执行8次

五、程序改错题(1题)81.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数proc()的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.编写函数proc(),它的功能是求m以内(不包括m)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。

例如,m为100时,函数值应为s=7.416198。

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

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

试题程序:

参考答案

1.B

2.C解析:栈是一种后进先出表,选项C中,先出栈的是3,说明此时栈内必然有1,2,由于1先于2进浅,所以1不可能在2之前出栈,故选项C这种出栈序列是不可能的。

3.CA选项中,没有对指针进行初始化,属于无效指针,并且在“scanf(“%d”,&p);”中无须再进行取地址操作;B选项中,没有对指针进行初始化,属于无效指针;D选项中,语句“*p=&k;”书写错误,应为“P=&k;”。故本题答案为C选项。

4.B题中,首先定义了double型的数组a,并将数组首地址赋给指针s。“(*s)”表示“a[1]”,“s[3]”不是指针变量,不能使用间址运算符“*”,故选项A、C不能表示“a[3]”;选项D的“*s+3”等于“a[0]+3”。故本题答案为B选项。

5.C解析:对象的封装性是指从外面看只能看到对象的外部特性;而对象的内部,其处理能力的实行和内部状态对外是不可见的,是隐蔽的。

6.D

7.DC语言中,常量有整型常量、实型常量、字符常量和字符串常量等。整型常量和实型常量又称为数值型常量。其中整型常量只能用数字表示,不带小数点。实型常量必须用带小数点的数表示,所以选项A错误,选项D正确;字符型常量是用单引号标注的单个字符,字符串常量是用双引号标注的若干个字符,选项B、C错误。故本题答案为D选项。

8.D

9.B解析:考查指向字符串的指针变量。在该题中,指针变量p指向的应该是该字符串中的首地址,p+3指向的是字符串结束标志'\\0'的地址,因而*(p+3)的值为0。

10.CA、B、D选项的含义均为:a的值如果为0,输出y的值,否则输出x的值。而C选项的含义是:a的值为0时输出x的值,不为0时输出y的值,与其他选项正好相反。故本题答案为C选项。

11.C由于a小于b,所以所有选项中的条件都为假,c选项中实际执行了a=b;b=c;两个操作。而A、B、D选项由于条件不成立,所以什么也没有做,所以选择c选项。

12.B在第1次外层for循环中,首先x++得到x=1。进入到内层for循环,只有循环j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量x的值自加两次,当退出内层for循环时,x=3,然后执行x++,得到x=4。在进入执行第2次外层for循环中,首先x++得到x=5。进入到内层for循环,只有循环变量j的值为奇数时,变量x的值才自加1,所以在内层for循环执行过程中,变量X的值自加1两次,当退出内层for循环时,x=7,然后执行x++,得到x=8,所以打印输出变量x的值为8。

13.DD选项中将字符串常量…aa赋给字符变量a是错误的。

14.D选项A中,int是关键字,不能作为用户标识符;选项B中,两个“#”错误;选项C中两个“#”错误,另外DEFINE大写也是错误的。故本题答案为D选项。

15.D解析:要想使程序输出是25,则j-40=25,j=65,而j初值是50,所以填入for循环中的语句,使引用的数组元素累加为65-50=15即可。

16.B在计算机中,算法被定义为对一个问题求解步骤的一种描述,是求解问题的方法,它是指令的有限序列,其中每条指令表示一个或者多个操作。算法具有有穷性、确定性、可行性、输入和输出五大特点。

在本题中,选项A、C、D的说法明显偏离了算法的定义,因此正确答案选B。

17.A

18.C解析:对字符型一维数组在定义时初始化,既可以使用初始化列表,也可以使用字符串常量。不过由于字符串常量会自动在结尾添加\'\\0\',字符做结束标志,所以用字符串常量的初始化列表项个数是字符串的长度加1。因此题目中的chara[]='xyz';等价于chara[]={\'x\',\'y\',\'z\',\'\\0\');,所以a数组长度大于b数组长度,应该选C。

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

20.B

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

22.BB解析:分析程序可知,n的初始值为1,因此。while(n<=3)循环3次。第1次:c=c*a=2;b=b+C=2;n=2。第2次:c=c*a=4;b=b+c=6;n=3。第3次:c=c*a=8;b=b+e=14。当n=4时,判断条件不满足,退出循环。

23.索引表块索引表\r\n块

24.#&#&解析:首先看最外面的switch,其表达式为a>0,结果为真(即1),从case1:标号处开始执行。这里又是一个switch语句,其表达式为b<00,结果为假(即0),由于没有case0:或default:标号,所以直接跳过此switch语句。因为没有遇到break;语句,所以继续执行进入内部第2个switch语句,其表达式为c==5,结果为真,从case1:标号处开始执行,输出一个#,遇到break;语句,跳出该内部switch语句,最后执行default:标号后的输出语句输出一个&后,整个外部switch语句执行完毕。程序最后输出的换行符不会显示,所以本题应该填#&。

25.77解析:本题考查英文字母ASCII码值的概念。字符参与运算的值是其对应的ASCII码,字符H的ASCII码为72,A的ASCII码为65,0的ASCII码为48,所以a=72-65+48=55,ASCII码值为55的字符是7。

26.a.next=aba.next=ab解析:选项A)中,指针变量q保存的就是变量b的地址,选项B)中的p是指针变量,应该是p->next=&b;在选项D)中,用*运算符取出结构体变量,并且保存的就是b的地址。

27.5685,6,8解析:首先要清楚当满足第1个if的判断条件时只执行一条语句“s=a;”,当满足第2个if的判断条件时执行一条复合语句“{s=a;a=c;b=s};”,当满足第3个if的判断条件时只执行一条语句“s=b;”。执行程序:判断a>b,由于a=3,b=5则3>5为假,不执行“s=a;”,执行“a=b;”和“b=s;”,则a=5,b=8。判断a>c,由于a=5,c=6则5>6为假,不执行“{s=a;a=c;b=s};”。判断b>c,由于b=5,c=6则5>6为假,不执行“s=b;”,执行“b=c;”和“c=s;”,则b=6,c=8。最后输出5,6,8。

28.4

29.113399

30.918273645918273645解析:程序通过for循环将字符'0'~'9'从前向后,同时从后向前依次输出,所以输出结果为:0918273645。

31.00解析:while循环的条件为即当*y非零时执行循环,-(*y)先对*y的值减1,再使用*y的值,不再执行while循环时最后*y的值为0,输出函数中的(*y)--,是先使用*y的值再对*y减1,就是先输出0。

32.19

33.对于10个数,相邻的两个数相加取和,总共要进行9次加法运算,所以空14处应填入i=1。相邻的两个数相加取和,放在数组a中,x[0]与x[1]的和存放在a[0]中,所以空15处应填入x[i-1]。\r\n\r\n

34.边界值分析法边界值分析法解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价类划分、边界值分析法和错误推测法3种。

35.DEBFCA

36.有穷性有穷性解析:算法有四个基本特征:可行性、确定性、有穷性和拥有足够的情报。

37.00解析:在赋值运算中。如果表达式中变量和常量的数据类型不一致就会自动进行类型转换。系统会计算1.0/c2,由于1.0是实型,所以均先转化为双精度型0.500000,再和c1转化后的双精度数相乘得0.500000。但其要赋值给整型变量c3,故要进行强制转换,c3的值为0。

38.43344334解析:程序将变量a,b的值传给函数swap的形参x,y,并在函数中对x,y的值进行交换,所以在函数swap中输出x,y的值4,3,由于c程序的函数是僧传递,实参a,b的值不会随形参x,y的改变而改变,所以在主函数中输出的a,b的值为3,4。

39.继承继承

40.存储结构

41.A解析:scanf函数中非格式字符原样输入。本题中scanf函数的格式字符为'%d,%d',包含非格式字符“,”,所以应输入“,”,故选项A错误。

42.B(16)B)解析:二维数组的初始化有以下几种形式:①分行进行初始化。②不分行的初始化。③部分数组元素初始化。④省略第一维的定义,不省略第二维的定义。选项B)等号右边分了3行,大于等号左边数组的行数2。

43.A解析:C语言中,一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号括起来作为字符常量,字符常量的范围是0~127。由于字符常量用单引号括起来,所以选项B),C)错误,选项D)超过了字符常量的表示范围。

44.D本题主要考查宏的一些基本概念。通常,预处理命令位于源文件的开头,但不一定必须位于开头,也可以写在函数与函数之间;由于预处理命令的末尾不加分号,不以分号来区分一条宏命令,所以,不能在一行上写多条预处理命令,只能写一条,否则,系统处理时就会把它当做一条命令处理;宏名一般习惯用大写字母表示,以便与变量名相区别,这只是习惯用法,并不是C语言中有这样的规定,宏的定义可用小写字母;C语言中,宏的替换是在程序编译时进行,不占用程序运行的时间,故本题答案为D。

45.C

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

47.B解析:本题考查了程序的基本结构。程序由一些基本结构组成。任何一个大型的程序都由3种基本结构组成,由这些基本结构顺序的构成了一个结构化的程序。这3种基本结构为:顺序结构、选择结构和循环结构。

48.D解析:本题考查循环和指针做函数参数,程序的功能是将a[0]和a[7]对换,a[1]和a[6]对换,a[2]和a[5]对换,a[3]和a[4]对换,最后输出。

49.A解析:注意pad++和++pad的区别。

50.D解析:本题考查数据结构的基本知识。数据之间的相耳关系称为逻辑结构。通常分为4类基本逻辑结构,即集合、线性结构、树形结构、图状结构或网状结构。存储结构是逻辑结构在存储器中的映象,它包含数据元素的映象和关系的映象。存储结构在计算机中有两种,即顺序存储结构和链式存储结构。顺序存储结构是把数据元素存储在一块连续地址空间的内存中;链式存储结构是使用指针把相互直接关联的节点链接起来。因此,这两种存储结构都是线性的。可见,逻辑结构和存储结构不是一一对应的。因此,选项A和选项B的说法都是错误的。无论数据的逻辑结构是线性的还是非线性的,只能选择顺序存储结构或链式存储结构来实现存储。程序设计语言中,数组是内存中一段连续的地址空间,可看作是顺序存储结构。可以用数组来实现树型逻辑结构的存储,比如二叉树。因此,选项C的说法是错误的。

51.B解析:由变量的定义可知,指针变量p初始化为&a[3],即*P的值为4;指针变量q初始化为p+2,即&a[3]+2,所以*q的值为6,*p+*q的值为10。

52.C解析:事实上,无论有无static修饰,外部变量都具有A、B和C三科特性。作为—种修饰,static仅是限制此类型外部变量的引用范围:只能在定义它的文件范围内使用。

53.D解析:结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加即可。

54.B解析:算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。算法具有五个重要特性:

①有穷性:一个算法必须总是在执行有限步之后结束,且每一步都可在有限时间内完成。

②确定性:算法中每一步骤都必须有明确的定义,不允许有模棱两可的解释,也不允许有多义性,对于相同的输入只能得出相同的输出。

③可行性:算法中描述的操作可以通过已经实现的基本运算执行有限次来实现。

④输入:一个算法有零个或多个的输入。

⑤输出:一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。

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

56.A解析:aaa()函数中,首先定义了一个字符指针t指向形参s,然后通过一个while循环让指针\u3000t不断递增,直到t指向字符串结束标志处。当t指向结束标志处时,由于后缀++运算符的原因,它还会被再递增1,所以接卜来的t--;语句让它回到结束标志处。最后返回t-s,因此s还是指向字符串第1个字符处,而t指向了字符串结尾,故返回值为字符串的长度值。

57.B解析:一个完整的C语言程序有且仅有一个主函数(main()函数)。程序总从main()函数的第一条语句开始执行,到main()函数的最后一条语句结束,其他函数都是在执行main()函数时,通过函数调用或嵌套调用而得以执行的。C语言规定,main()函数在程序中的位置是任意的,故选项A、选项C和选项D均不正确。所以,B选项为所选。

58.B

59.C解析:本题考查逗号表达式。本题的返回值是a+7,a=2*3=6,a+7=13(注意:本题问的是a的值,而不是程序的输出值)。

60.B解析:本题考查while语句的使用。本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符'!'的优先级大于不等于运算符'!='的优先级。

61.A\n根据题意,当s=1时,输出65;当s=2时,输出6;当S=3时,则输出64;当S=4时,输出5;当s=5时,输出6;当s=0时,程序直接退出。所以最后答案为6566456,A选项正确。

\n

62.CC语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项c)中,e(E)后面的指数是小数,所以不合法。

63.Afun函数将字符串数组里字符串从大到小排序,所以结果为A)。

64.D在软件开发的过程中,应该尽早的制定测试计划,其中在需求分析阶段制定系统测试计划

65.C解析:模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从弱到强,可以将其分成5级,分别是:数据耦合、同构耦合、控制耦合、公用耦合和内容耦合。选项C),没有这种耦合方式。注意:评价模块独立性的主要标准,以及对它们的定义和分类。

66.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。

67.B本题考查的是标准输入输出函数。在使用标准输入输出库函数(除了printf和scanf)前,必须要用预编译命令”#include”将头文件”stdio.h”包

温馨提示

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

最新文档

评论

0/150

提交评论