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

下载本文档

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

文档简介

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

一、单选题(20题)1.排序方法中,将整个无序序列分割成若干小的子序列并分别进行插入排序的方法,称______。

A.希尔排序B.冒泡排序C.插入排序D.选择排序

2.以下有关宏替换的叙述不正确的是()。A.A.使用宏定义可以嵌套

B.宏定义语句不进行语法检查

C.双引号中出现的宏名不替换

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

3.设char型变量x中的值为10100111,则表达式(2+x)(-3)的值为______。

A.10101001B.10101000C.11111101D.1010101

4.下列算法中,()算法用来求图中某顶点到其他顶点所有顶点之间的最短路径。

A.DijkstraB.FloyedC.PrimD.Kruskal

5.下列函数的功能是

set(s,t)

{char*s,*t;

while((*s)&&(*t)&&(*t++==*s++));

return(*s-*t);

}A.A.求字符串的长度

B.比较两字符串的大小

C.将字符串s复制到字符串t中

D.将字符串s连接到字符串t后

6.有如下程序段

#include"stdio.h"

#include"string.h"

#defineN10

#defineM10

char*find(char(*a)[M],intn)

{char*q;inti;

q=a[0];

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

if(strcmp(a[i],q)<0)q=a[i];

returnq;}

main()

{chars[N][M]={"tomeetme","you","and","he","china"};

char*p;

intn=5;

p=find(s,n);

puts(p);}

则执行后输出的结果为A.A.heB.andC.youD.tomeetme

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

A.数据库系统是一个独立的系统,不需要操作系统的支持

B.数据库技术的根本目标是要解决数据的共享问题

C.数据库管理系统就是数据库系统

D.以上三种说法都不对

8.有三个关系R、s和T如下:

由关系R和s通过运算得到关系T,则所使用的运算为()。

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

9.

10.有以下程序:#include<stdio.h>main{intx=4,y;do{y=x;if(!y)printf(“x”);elseprintf(“y”):x--;}while(x);}程序的输出结果是()。A.xyyxB.yyyyC.yyxxD.yxyx

11.有以下程序:#include<stdio.h>voidfun(int*s){staticinti=0;do{s[J]=s[J]+s[j+I];}while(++j<2);}main(){intk.a[l0]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)pfintf("%d",a[k]);printf("\n");}程序运行后的输出结果是()。A.12345B.23445C.34756D.35745

12.有以下程序:intfun(intn){if(n==l)returnl;elsereturn(n+fun(n一1)):}main{intx;scanf("%d",&x);x=fun(x);printf("%d\n",x):}执行程序时,给变量X输入10,程序的输出结果是()。A.55B.54C.65D.45

13.

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

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

15.对初始状态为递增序列的数组按递增顺序排序,最省时间的是插入排序算法,最费时间的算法是()

A.堆排序B.快速排序C.插入排序D.归并排序

16.

17.设有如下定义structss{charname[10];intage;charsex;}std[3],*p=std;下列各输入语句中错误的是_______。

A.scanf("%d",&(*p).age);

B.scanf("%s",&);

C.scanf("%c",&std[0].sex);

D.scanf("%c",&(p->sex));

18.顺序查找不论在顺序线性表中还是在链式线性表中的时间复杂度为()。

A.O(n)B.O(n^2)C.O(n^1/2)D.O(1og2n)

19.若有说明charc[7]={'s','t','r','i','n','g'};则对元素的非法引用是()。

A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]

20.算法分析的两个主要方面是()。

A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性

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

charb[]="ABCD";

main()

{char*p=b;

for(;*p;p++)

printf("%s",p);

printf("\n");

}

22.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。

23.下列程序段是从键盘输入的字符中统计小写字母的个数,用换行符结束循环。请填空。

intn=0,c;

c=getchar();

while(c!='\n')

{if(______)

n++;

}

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

main()

{

intarr[]={30,25,20,15,10,5},*p=arr;

p++;

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

}

25.以下sum函数的功能是计算下列级数之和。请给函数中的各变量正确赋初值。

doublesum(doublex,intn)

{inti;doublea,b,s;

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

{a=a*x;b=b*i;s=s+a/b;}

returns;

}

26.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,当s<t时返回负值。请填空。

my_cmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}return【】;

}

27.下列软件系统结构图的宽度为[]。

28.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。

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

main()

{inta=2,b=4,e=6;

int*p1=&a,*p2=&b,*p;

*(p=&c)=*p1*(*p2);

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

}

30.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】。要求形参名为b。

main()

{double[10][22];

intn;

......

fun(s);

}

31.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。

32.与表达式a+=b等价的另一书写形式是______。

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

main()

{inta=1,b=2;

a=a+b;b=a-b;a=a-b;

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

}

34.一棵二叉树第六层(根节点为第一层)的节点数最多为______。

35.Jackson方法是一种面向【】的结构化方法。

36.以下说明语句中,【】是结构体类型名。

typedefstruct

{intn;

charch[8];

}PER;

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

intf(inta[],intn)

{

if(n>=l)

returnf(a,n-1)+a[n-1];

else

return0;

}

main{)

{

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);

printf{'%d\n",s);

}

38.若有定义inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a[1][1]得到的初值是______。

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

#defineMCNA(m)2*m

#defineMCNB(n,m)2*MCRA(n)+m

#definef(x)(x*x)

main()

{inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

40.阅读下面程序段,则执行后输出的结果是【】。

#include"stdio.h"

main()

{charfun(char,int);

chara=′A′;

intb=13;

a=fun(a,b);

putchar(a);}

charfun(chara,intb)

{chark;

k=a+b;

returnk;}

三、1.选择题(20题)41.以下能正确定义一维数组的选项是

A.inta[5]={0,1,2,3,4,5};

B.chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};

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

D.inta[5]="0123";

42.在面向对象方法中,()描述的是具有相似属性与操作的一组对象。

A.属性B.事件C.方法D.类

43.以下选项中可以作为C语言中合法整数的是______。

A.10110BB.386C.0XffaD.x2a2

44.以下程序的输出结果是______。structHAR{intx,y;structHAR*p;};main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1].p=h;printf("%d%d\n",(h[0].p->y));}

A.12B.23C.14D.32

45.有以下程序:#include<stdio.h>#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是()。

A.12B.15C.16D.20

46.有以下定义语句doublea,a;intw;longc;若各变量已正确赋值,则下列选项中正确的表达式是

A.a=a+b=b++B.w%((int)a+b)C.(c+w)%(int)aD.w=a==b

47.请读程序:#include<stdio.h>main(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c);}若运行时从键盘上输入9876543210,则上面程序的输出结果是______。

A.a=98,b=765,c=4321

B.a=10,b=432,c=8765

C.a=98,b=765.000000,c=4321.000000

D.a=98,b=765.0,c=4321.0

48.以下不是面向对象思想中的主要特征的是

A.多态B.继承C.封装D.垃圾回收

49.有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}该程序的输出结果是______。

A.12B.13C.14D.15

50.请读程序片段(字符串内没有空格字符):printf("%d\n",stlen("ATS\n012\1\\”));上面程序片段的输出结果是()

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

51.以下程序的输出结果是()。#include<stdio.h>main(){inta=-1,b=1,k;if((++a<0)&&!(b--<=0))printf("%d%d\n",a,b);elseprintf("%d%d\n",b,a);}

A.-11B.01C.10D.00

52.下列程序执行后的输出结果是______。main(){intm[][3]={1,4,7,2,5,8,3,6,9};inti,k=2;for(i=0;i<3;i++){printf("%d",m[k][i]);}}

A.456B.258C.369D.789

53.下列表达式中,可以正确表示x≤0或x≥1的关系是()。

A.(x>=1)‖(x<=0)

B.x>1‖x=0

C.x>=1ORx<=0

D.x>=1&&x<=0

54.下列程序的输出结果是______。main(){inti;for(i=1;i+1;i++){if(i>4){printf("%d",i++);break;}}printf("%d",i++);}

A.55B.56C.程序错误,没有输出D.循环条件永远为真,死循环

55.若变量已正确定义,有以下程序段inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;printf("%d,%d,%d\n",a,b,c);其输出结果是

A.程序段有语法错B.3,5,3C.3,5,5D.3,5,7

56.有以下程序:main(){chars[]="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}执行后输出结果是()。

A.赋初值的字符串有错B.6,7C.5,6D.6,6

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

A.C程序中的#include和#define行均不是C语句

B.除逗号运算符外,赋值运算符的优先级最低

C.C程序中,j++;是赋值语句

D.C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算

58.下列叙述中正确的是A.break语句只能用于switch语句

B.在switch语句中必须使用default

C.break语句必须与switch语句中的case配对使用

D.在switch语句中,不一定使用break语句

59.有以下程序#include<stdio.h>main(){FILE*fp;intk,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n

A.12B.14C.1234D.123456

60.若有定义inta[9],*p=a;则p+5表示

A.数组元素a[5]的值B.数组元素a[5]的地址C.数组元素a[6]的地址D.数组元素a[0]的值加上5

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

intX=0,s=0;

while(!X!=0.s+=++X;

prinff(”%d”,S.;

则()。

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

62.以下程序的输出结果是______。#definef(x)x*xmain(){inta=6,b=2,c;c=f(a)/f(b);printf("%d\n",c);}

A.9B.6C.36D.18

63.若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。

A.0B.1C.2D.不知道a的值,不能确定

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

main()

{inta=1;

charc=’a’;

floatf=2.0;

Printf("%d\n",(!(a==0),f1=0&&c==’A’));

}

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

65.

66.若有定义floatX=1.5;inta=1,b=3,C=2;,则正确的switch语句是()。

A.

B.

C.

D.

67.以下叙述中错误的是______。A.C语言中对二进制文件的访问速度比文本文件快

B.C语言中,随机文件以二进制代码形式存储数据

C.语句FILEfp:定义了一个名为fp的文件指针

D.C语言中的文本文件以ASCII码形式存储数据

68.

69.

70.#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)

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

A.循环队列是队列的一种链式存储结构

B.循环队列是队列的一种顺序存储结构

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

D.循环队列是一种逻辑结构

72.

73.程序设计方法要求在程序设计过程中()。

A.先编制出程序,经调试使程序运行结果正确后再画出程序的流程图

B.先编制出程序,经调试使程序运行结果正确后再在程序中的适当位置处加注释

C.先画出流程图,再根据流程图编制出程序,最后经调试使程序运行结果正确后再在程序中的适当位置处加注释

D.以上三种说法都不对

74.下列不可作为C语言赋值语句的是()。

A.x=3,y=5B.a=b=6C.i--D.y=6

75.

76.若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是()。

A.X+1=yB.++X.Y=X一一C.X=X+10=X+YD.double(X)/10

77.

78.下面程序由两个源程序文件t4.h和t4.c组成,程序编译运行的结果是()。

t4.h的源程序为:

A.920B.1611C.911D.1610

79.

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

A.查询方法

B.加工方法

C.解题方案的准确而完整的描述

D.排序方法

五、程序改错题(1题)81.以下程序可把输入的十进制数以十六进制数的形式输出。请在横线上填上适当的内容并把横线删除,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.请编写函数proc(),其功能是:将str所指字符串中除了下标为奇数、同时ASCⅡ值为偶数的字符外,其余的全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为edB2A4Dsdg,其中字符A的ASCⅡ码值为奇数,因此应当删除;其中字符B的ASCⅡ码值为偶数,但在数组中的下标为偶数,因此也应当删除;而字符2的ASCⅡ码值为偶数,所在数组中的下标为奇数,因此不应当删除。依此类推,最后t所指的数组中的内容应是d24。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.A解析:希尔排序法的基本思想是:将整个无序列分割成若干小的子序列分别进行插入排序。

2.D解析:本题考查宏替换的规则。宏替换有两类:简单的字符替换和带参数的宏替换。使用宏应注意:①宏定义仅仅是符号替换,不是赋值语句,因此不做语法检查:②为了区别程序中其他的标示符,宏名的定义通常用大写字母,但不是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。

3.D解析:异或运算符(^)的运算规则是:参加运算的两个相应位同号,则结果为0(假);异号则为1(真)。取反运算符(-)的运算规则是:对一个二进制数按位取反,即将0变为1,1变为0。本题(-3)是对3(二进制形式为00000011)按位取反即11111100。表达式(2+x)(-3)的值就等价于(00000010+10100111)^11111100,结果为01010101。

4.A

5.B在本题中,从题目给出的四个选项我们就可以知道,程序是对两个字符串进行操作。下面将具体分析程序。

程序首先定义两个字符型的指针变量s和t,从后面的程序中不难看出这两个指针变量应该用来对两个字符串进行操作处理。用循环来对字符串进行处理时,循环继续的条件是指针变量s和指针变量t所指向的结果值不为0,且两结果值相等。很显然,指针变量s和指针变量t所指向的结果值不为0,说明两字符串没有结束,只有结束时才为0,而结果值相等说明两字符相等,如果不等,循环则结束,此时程序将要求返回不等元素之间的差值,从差值的正负关系我们可以判断出哪个元素更大。综上所述,程序段的作用是用来比较两字符串的大小。因此,本题正确的答案选B。

6.B在本题中,首先定义了两个宏N和M,大小都为10,然后定义了一个返回指针的函数find,该函数带有两个形参,第一个为字符型的指针数组,第二个为整型变量,在函数体中,首先定义了一个指针变量q,并将形参中指针数组的第一个元素赋值给q,然后执行for循环,在循环体中,首先执行条件判断语句,其条件为strcmp(a[i],q)<0(strcmp函数的作用是比较两字符串的大小,如果相等,则返回0值,如果参数中的第一个字符串大,则返回正值,否则返回负值),如果结果为真,说明指针数组当前元素所指向的字符串比q所指向的字符串小,此时,程序执行将当前指针数组元素赋值给p,最后返回p,通过上面的分析我们可以看出,find函数的作用是找出指针数组中各元素所指向字符串的最小字符串。

在主函数中,定义了一个二维数组s,并赋了初值,然后定义一个指针变量p,用来存放函数find的返回值。调用函数find的参数分别为s和5,结合形参看find函数,不难知道调用find函数就是找出二维数组s中各字符串中最小的字符串,那么应该为and。此时,指针变量p指向字符串“and”的首地址,然后执行puts(p),完成该字符串的输出。因此,本题正确的答案是B。

7.B解析:本题考查数据库系统的基本概念和知识。

数据库系统除了数据库管理软件之外,还心须有其他相关软件的支持。这些软件包括操作系统、编译系统、应用软件开发工具等。对于大型的多用户数据库系统和网络数据库系统,还需要多用户系统软件和网络系统软件的支持。因此,选项A的说法是错误的。

数据库可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。因此,数据库具有为各种用户所共享的特点。不同的用户可以使用同一个数据库,可以取出它们所需要的子集,而且容许子集任意重叠。数据库的根本目标是要解决数据的共享问题。因此,选项B的说法是正确的。

通常将引入数据库技术的计算机系统称为数据库系统。一个数据库系统通常由五个部分组成,包括相关计算机的硬件、数据库集合、数据库管理系统、相关软件和人员。

因此,选项C的说法是错误的。

因此,本题的正确答案是选项B。

8.D关系R与s经交运算后所得到的关系是由那些既在R内又在S内的共有元组组成的,记为RnS。

9.A

10.B本题考查do-while语句和if…else语句。do-while语句的功能是先执行循环体再判断条件,所以,先判断if语句的条件,y=-4,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将x的值减1,x=3,条件不成立,执行下面的else语句,输出Y,然后将X的值减1,x=2,满足while循环条件,继续循环。第三次循环:先判断if语句的条件,y=2,!y为逻辑0,条件不成立,执行下面的else语句,输出y,然后将X的值减1,x=l,满足while循环条件,继续循环。第四次循环:先判断if语句的条件,y=-1,!y为逻辑0,条件不成立,执行下面的else语句,输出Y,然后将x的值减1,x=0,不满足while循环条件,结束循环。所以B正确。

11.D本题考查静态变量,静态变量有储存已经操作过的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案选择D。

12.A函数intfun(intn)的功能是求1+2+…+n的值并返回。所以执行程序时,给变量x输入10后,执行语句“x=fun(x);”,X的值将变为1到10中10个整数的累加和,即55。

13.A

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

15.B

16.D

17.B解析:在C语言中,结构体变量的引用有三种等价方式:

1、结构体变量成员名;2、(*p).成员名;3、p->成员名。

因为std.name是字符数组名,本身代表地址,其前面不应该使用“&”符号,所以选项B错误。

18.A

19.C

20.A

21.ABCDBCDCDD

22.外模式外模式解析:外模式由概念模式推导而出,给出了每个用户的局部数据描述,即数据视图。

23.c>='a'&&c<='z'c>='a'&&c<='z'解析:小写字母在内存中以ASCII的形式存入,且从a到z依次递增,所以可以直接用c>='a'&&c<='z'判断是不是小写字母;c!='\\n'判断是用换行符结束循环。

24.1010解析:整型指针最初被赋的值是数组arr的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为100。

25.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1s=1或给abs赋1或1.0或1.a=1;b=1;s=1;或a=b=s=1;或a=1.b=1,s=1或给a,b,s赋1或1.0或1.解析:sum函数的功能是求表达式s的级数之和,该函数的大致思路是:在该函数中,定义了—个整型变量i用作循环计数器,定义一个变量a用来表示各个子项的分子,初始为第一个子项的分子,故为1,定义了一个变量b用来表示各个子项大分母,初始为第一个子项的分母,故为1,定义一个变量s存放累加和,初始为第一个子项的值即为1,然后给各个定义的变量初始化,然后通过一个for循环将题目中的数学表达式的各个子项求出来并累加到s中,所以说,在该题的空格处应该填写将a、b和s赋初值的语句,即为a=1;b=1;s=1:(说明:语句的顺序可任意)或a=b=s=1;(说明:变量的顺序可任意)或a=1,b=1,s=1(说明:赋值表达式的顺序可任意)给a,b,s赋1或1.0或1都可以。

26.*s-*t*s-*t解析:两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回0值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回。所以在空框处应填入*s-*t,保证在e>t时返回正值,当s<t时返回负值。

27.33解析:软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。

28.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。

29.88解析:本程序定义了3个指针变量p1、p2、p,并且将a、b的地址分别赋给p1、p2,则*p1=a=2,*p2=b=4,所以表达式*p1*(*p2)的值是8。在赋值语句的左边是*(p=&c),即使指针p指向了变量c,因而*(P)代表了c的存储单元,赋值语句“*(p=&c)=*p1*(*p2);”是把整数8赋给了变量c。

30.voidfun(doubleb[10][22])voidfun(doubleb[10][22])解析:本题答案:voidfun(doubleb[10][22])。

31.数据存储数据存储

32.a=a+ba=a+b解析:a+=b与a=a+b等价,作用是把变量a的值加b后再赋给变量a。

33.21

34.在二叉树的第k层上,最多有2k-1(k>1)个结点。

35.数据结构数据结构解析:Jackson方法是—‘种面向数据结构的结构化方法。

36.PERPER解析:本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。

37.1515解析:在函数f()中只有一条if语句,如果n不小于1,则返回f(a,n-1)+a[n-1);,否则返回0。所以f(aa,5)返回f(aa,4)+aa[4],而f(aa,4)返回f(aa,3)+aa[3]……直到f(aa,0)返回0.故f(aa,5)实际返回值是0+aa[1]+aa[2]+aa[3]+aa[4]+aa[5],所以本题最终输出15。

38.00解析:二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[0]、a[1]、a[2]、a[3],这4个一维数组都有4个元素,a[0]的元素为a[0][0]、a[0][1]、a[0][2]、a[0][3]。

39.1616解析:本题定义了两个宏MCRA(m)和MCRB(n,m),展开宏MCRB(n,m),得到:MCRB(j,MCRA(i)=2*MCRA(j)+MCRA(i)=2×2×j+2×i=4×3+2×2=12+4=16,因此printf函数的输出结果为16。

40.NN解析:函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符'A'的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。

41.B解析:选项A)中,定义的初值个数大于数组的长度;选项C)中,数组名后少了中括号;选项D)中,整型数组不能赋予字符串。

42.D解析:类(calss)描述的是具有相似属性与操作的一组对象,而一个具体对象则是其对应类的一个实例。

43.C解析:C语言中整型常量有3种表示形式:十进制、八进制和十六进制。选项A是二进制表示,错误;八进制的数字是0、1、2、3、4、5、6、7,选项B错误;十六进制整数常量用0X开头,选项D错误。

44.D解析:本题中是—个含有两个结点的循环链表。C语言中结构体的定义为:srtyct结构体类型名{成员项表;}

45.A解析:本题考查带参数的宏定义,参数只是简单的替换而不是求出其值后再替换形式参数。本题中用a++替换X,用b++替换Y,再求(a++)*(b++)的值,即3*4的值,其结果为12。

46.C解析:本题考核的知识点是C语言中一些运算符的简单应用。选项A中不是合法的赋值语句,将最右边的第一个般值表达式加括号即为a=b+(b=b++)才正确,故选项A不正确;选项B中运算符“%”的对象必须是整型,而在选项B中(int)a+b为double型,故选项B不正确;选项a,b都为,double“==”应该改为“=”,故选项D不正确.所以,4个选项中选项C符合题意。

47.C解析:scanf()把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf()遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。

48.D解析:面向对象思想中的三个主要特征是:封装性、继承性和多态性。

49.D解析:调用函数func(x,y),返回x+y,即7;再调用函数func(7,z),返回7+z,即15。

50.C

51.C解析:本题考查if语句。++a是先自增后使用,b--是先使用后自减。执行++a后,a值为0,不满足条件,所以a为0,b仍为1,接下去执行else语句,输出10。

52.C解析:根据二维数组的定义得出:m[0][0]=1,m[0][1]=4,m[0][2]=7,m[1][0]=2,m[1][1]=5,m[1][2]=8,m[2][0]=3,m[2][1]=6,m[2][2]=9,所以本题的输出是第3行的值m[2][0],m[2][1],m[2][2],即369。

53.A解析:题中要求x的取值是小于等于0或者大于等于1,这说明表达式是或的关系,所以在写成C语言表达式应是逻辑或的关系,逻辑或运算符是“‖”。

54.B解析:本程序中有个for循环,但注意到for循环的条件是“i+1”,也就是只要i+1的值为真(非零值均为真),就执行循环。当i=1的时候,i+1的值为真,判断if条件不成立,执行i++,输出i的值为5。

55.B解析:本题考查if条件语句。a=3,b=5,因此a>b条件不成立,c=a=3。此时c!=a条件不成立,不执行c=b;语句,c的值仍然为5。结果a=3,b=5,c=3。

56.C解析:本题在定义字符数组时没有定义数组长度,但用字符常量给数组赋了初值,这时初值的个数即为数组的长度,故数组长度为6(包括'\\0')。字符串的长度为有效字符的个数5。strlen(s)返回值为串中字符的个数(不计最后的'\\0'),则输出值为5。sizeof(s)计算数组所占的字节数,包含'\\0',则输出值为6。因此,C选项正确。

57.D解析:“%”是求余运算符,其两侧的数值只能为整型,不能用于实型数据的运算。

58.D解析:break语句除了能用于switch语句外,还可以用于循环语句中,因此选项A不正确。在switch语句中,可以使用default来执行所有case均失配时的分支,也可以不使用default,此时若所有case均失配则跳出switch,因此选项B不正确。在switch语句中,每个case的作用就是标出一个执行的起点,当符合某个case时,程序就从该case所标出的起点处开始执行,若没有break语句中断执行的话,程序会一直执行到switch的最后一条语句,

温馨提示

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

评论

0/150

提交评论