2022-2023年四川省巴中市全国计算机等级考试C语言程序设计_第1页
2022-2023年四川省巴中市全国计算机等级考试C语言程序设计_第2页
2022-2023年四川省巴中市全国计算机等级考试C语言程序设计_第3页
2022-2023年四川省巴中市全国计算机等级考试C语言程序设计_第4页
2022-2023年四川省巴中市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年四川省巴中市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设变量P是指针变量,语句P=NULL;是给指针变量赋NULL值,它等价于()。A.A.p="";

B.p="0";

C.p=0;

D.p="";

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

A.局部变量说明为static存储类,其生存期将得到延长

B.全局变量说明为static存储类,其作用域将被扩大

C.任何存储类的变量在未赋初值时,其值都是不确定的

D.形参可以使用的存储类说明符与局部变量完全相同

3.

4.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}

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

5.有以下程序:#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf("%5.of\n",a);}doublef(doublex){returnx*x+1;}程序运行后的输出结果是()。A.503B.401C.500D.1404

6.有以下程序:#include<stdio.h>voidsub(doublea,double*pb);intmain(){doublex,y;scanf(“%lf%lf”,&x,&y);sub(x,&y);printf(“x=%fy=%f\n”,x,y);}voidsub(doublea,double*pb){a=a-*pb;*pb=*pb-a;}程序运行时输入10.23.5并按<Enter>键,则输出结果为()。

A.x=10.200000y=-3.200000

B.x=6.700000y=-13.700000

C.x=7.000000y=-3.500000

D.x=13.400000y=-7.000000

7.有以下程序main(){union{charch[2];intd;}s;s.d=0x4321;printf("%x,%x\n",s.ch[0],s.ch[1]);}在16位编译系统上,程序执行后的输出结果是______。A.21,43B.43,21C.43,00D.21,00

8.有以下程序:#include<stdio.h>main(){inta=2,b=2,C=2;print{("%d\n",a/b&c);}程序运行后的输出结果是()。A.0B.1C.2D.3

9.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序运行后的输出结果是()。

A.8.000000B.9.000000C.1.500000D.10.500000

10.有以下程序段intj;floaty;charname[50]:scanf("%2d%f%s",&i,&.y,name):当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A.55566.0B.566.0C.7777.0D.566777.0

11.堆是一种有用的数据结构。下列关键码序列()是一个堆。

A.94,31,53,23,16,72

B.94,53,31,72,16,23

C.16,53,23,94,31,72

D.16,31,23,94,53,72

12.设栈S的初始状态为空,栈的容量为5,若入栈元素的顺序是e1、e2、e3、e4、e5,则出栈元素的顺序不可能是______。

A.e1、e2、e3、e4、e5

B.e5、e4、e3、e2、e1

C.e2、e4、e3、e5、e1

D.e3、e4、e1、e2、e5

13.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式输出数组右上半三角

1234

678

1112

16

则在程序下划线处应填入的是()。

A.i-1B.iC.i+1D.4一i

14.设二叉排序树中有n个结点,则二叉排序树的平均查找长度为()。A.O(1)

B.O(log2n)

C.O(n)

D.(n2)

15.以下叙述中错误的是(

)。A.函数形参的值也可以传回给对应的实参

B.函数调用可以作为一个独立的语句存在

C.若函数有返回值,必须通过r;mm语句返回

D.C程序必须由一个或一个以上的函数组成

16.假定已建立以下链表结构,且指针p和q已指向如图所示的节点。则下列选项中可将q所指节点从链表中删除并释放该节点的语句组是()。

A.p->next=q->next;free(q);

B.p=q->next;free(q);

C.p=q;free(q);

D.(*p).next=(*q).next;free(p);

17.

18.下列选项中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

19.二叉树的后序排列DBEFCA,中序排列DBAECF,那么对其做先序线索化二叉树,节点E的线索化指向节点()

A.BCB.ACC.DFD.CF

20.表达式a+=a-=a=9的值是()。

A.9B.-9C.18D.0

二、2.填空题(20题)21.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

22.在计算机领域中,通常用英文单词“Byte'’表示【】。

23.C语言中用______表示逻辑值为“真”,用数字“0”表示逻辑值为“假”。

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

#include<stdio.h>

main()

{inta=2,b=1,c=2;

if(a<b)

if(b<0)c=0;

elsec++;

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

}

25.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

26.若x和a均是血型变量,则计算完x=(a=4,6*2)后的x值为______。

27.若有定义intm=5,y=2,则执行表达式y+=y-=m*=y后,y的值为【】。

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

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

main()

{

inti,n[]={0,0,0,0,0};

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

n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

30.在一棵二叉树上第6层的结点个数最多是【】。

31.深度为5的满二叉树有()个叶子节点。

32.实现算法所需的存储单元多少和算法的工作量大小分别为算法的【】。

33.若有如下程序:

main()

{inta[][2]={1,2,6,9,11},(*t)[2];

t=a;

printf("%d,%d\n",*(t[1]+1),(*t)[1]);

}

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

34.下面程序运行后的输出结果是()。

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6},*k[3],i=1;

while(i<4)

{k[i-1]=&a[2*i-1];

printf("%d",*k[i-1]);

i++;

}

}

35.下列程序的输出结果是【】。

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=4,b=3,c=5,d=6;

t(a,b,c,d);

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

}

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

37.对于长度为n的线性表,若进行顺序查找,时间复杂性为【】;若进行二分查找,则时间复杂性为【】。

38.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统一管理与控制。

39.以下scanf函数调用语句中对结构体变量成员的引用不正确的是{charname[20];}pup[5],*p;

40.一个项目具有一个项目主管,一个项目主管叫‘管理多个项目,则实体“主管”与实体“”的联系属于______。

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

A.用E—R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系

B.用E—R图只能表示实体集之间一对一的联系

C.用E—R图只能表示实体集之间一对多的联系

D.用E—R图表示的概念数据模型只能转换为关系数据模型

42.软件开发的结构化生命周期方法将软件生命周期划分成()

A.定义、开发、运行维护

B.设计阶段、编程阶段、测试阶段

C.总体设计、详细设计、编程调试

D.需求分析、功能定义、系统设计

43.语句int(*ptr)()的含义是()。

A.ptr是一个返回值是int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向血型数据的指针

44.结构化程序设计主要强调的是______。

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

45.在C语言中,函数返回值的类型最终取决于()。

A.函数定义时在函数首部所说明的函数类型

B.return语句中表达式值的类型

C.调用函数时主调函数所传递的实参类型

D.函数定义时形参的类型

46.在数据库系统的内部结构体系中,索引属于()。

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

47.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()

A.逻辑设计B.需求分析C.详细设计D.物理设计

48.下列程序的运行结果为______。#defineMSDOS#ifdefMSDOS#defineINTEGERSIZE32#else#defineINTEGERSIZE16#endifmain(){printf("integer_size=%d\n",INTEGER_SIZE);}

A.integersize=32

B.integer_size=16

C.integersize=32,integer_size=16

D.错误

49.设有以下语句:typedefstructS{intg;charh;}T;则下面叙述中正确的是()。

A.可以用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是stnictS类型的变量

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

①成熟的原型化人员

②快速的成型工具

③需求了解的准确性

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

51.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序运行后的输出结果是______。

A.22111B.21021C.122D.12

52.定义int*swap()指的是______。

A.一个返回整型值的函swap()

B.—个返回指向整型值指针的swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

53.要正确定义并初始化一个数组a,它含有5个元素,则正确的语句是______。

A.inta[5]=(0,0,0,0,0);

B.inta[5]={};

C.inta[]={0,0,0,0,0};

D.inta[]={5*0};

54.以下不合法的用户标识符是______。A.j2KEYB.DoubleC.4dD._8_

55.以下叙述中错误的是A.算法正确的程序最终一定会结束

B.算法正确的程序可以有零个输出

C.算法正确的程序可以有零个输入

D.算法正确的程序对于相同的输入一定有相同的结果

56.以下定义语句中正确的是()。

A.chara='A'b='B';

B.floata=b=l0.0;

C.inta=l0,*b=&a;

D.float*a,b=&a;

57.下列程序的输出结果是______。main(){intm=5;if(m++>5)printf("%d\n",m);elseprintf("%d\n",m--);}

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

58.对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为______。

A.n-1B.nC.n+1D.2n

59.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是______。main(){unsignedinta=32,b=66;printf("%c\n",a|b);}

A.66B.98C.bD.B

60.下列程序执行的输出结果是()。#include<stdio.h>main(){chara[2][4];strcpy(a,"are");strcpy(a[1],"you");a[0][3]='&';printf("%s\n",a);}

A.are&youB.youC.areD.&

四、选择题(20题)61.(58)在数据流图(DFD)中,带有名字的箭头表示______。

A.制程序的执行顺序

B.模块之间的调用关系

C.数据的流向

D.程序的组成成分

62.若有定义语句:doublex,y,*px,*PY;执行了laX=&x;lay=&y;之后,正确的输入语句是()。A.scanf(”%If%le”,px,lay);

B.seanf(”%f%f¨&x,y);

C.seanf(”%f%f",x,y);

D.Scanf(”%If%If"·,x,y):

63.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

64.设有如下定义

char*s[2]={"abcd","ABCD"};

则下列说法错误的是

A.s数组元素的值分别是″abcd″和″ABCD″两个字符串的首地址

B.s是指针数组名,它含有两个元素,分别指向字符型一维数组

C.s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素

D.s数组的两个元素中分别存放了字符′a′和′A′的地址

65.

有以下程序,其中函数f的功能是将多个字符串按字典顺序排序()。

#include<string.h>

voidf(char*p[],intn)

{char*t;inti,j;

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

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

if(strcmp(p[i],p[j]>0){t=p[i];p[i]=p[j];p[j]

=t;}

}

main

{char*P[5]={"abe","aabdfg","abbd","dcd-

be","cd"};

f(p,5);

printf("%d\n",strlen(p[1]));

}

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

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

66.

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

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

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

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

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

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

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

A.a=2,b=lB.a=2,b=2C.a=1,b=lD.a=1.b=0

70.

71.有下列函数定义:intfun(doublea,doubleb){returna*b;}若下列选项中所用变量都已经正确定义并赋值,错误的函数调用是()。A.if(fun(x,y)){……}

B.z=fun(fun(x,y),fun(x,y));

C.z=fun(fun(X,y)x,y);

D.fun(x,y);

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

A.软件测试应该由程序开发者来完成

B.程序经调试后一般不需要测试

C.软件维护只包括对程序代码的维护

D.以上三种说法都不对

73.

有下列程序:

#include<stdio.h>

main

{intx=0;

inty=0;

while(x<7&&++v)

{y--;

x++;}

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

}

程序的输出结果是()。

A.0,7B.7,7C.0,6D.1,6

74.设有intx=11;则表达式(x++*1/3)的值是()。

A.3B.4C.11D.12

75.下列语句中,正确地执行当i等于5时执行一些语句的条件语句是()。

A.if(i==5)B.ifi=5thenC.ifi=5D.ifi==5then

76.有以下程序

#include"stdio.h"

main()

{structdate

{intyear,month,day;}today;

printf("%d\n",sizeof(structdate));

}

程序的运行结果是

A.6B.8

C.12D.10

77.有以下程序:

fun(intx)

{intP;

if(x==0||x==l)return(3);

p=x-fun(x-2);

returnp;

}

main

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

程序执行后的输出结果是()。A.A.7B.3C.2D.0

78.用数组名作为函数调用的实参,则传递给形参的是()。

A.数组中所有元素的值B.数组的第一个数据C.数组的首地址D.数组元素的个数

79.

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

main

{charw[][10]={"ABCD","EFGH","IJKL","

MNOP"),K;

for(k=1;k<3;k++)printf("%s\n",w[k]);

A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

80.

五、程序改错题(1题)81.写出下列程序的运行结果。

fun(inta,intb)

{if(a>b)return(a);

Elsereturn(b);}

main

{intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);printf(“%d\n”,r);}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,函数fun()的功能是将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指字符串中剩余的字符形成的新字符串存放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的ASCⅡ值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCⅡ值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是“BDH2345”。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序::

参考答案

1.C在C语言中null等价于数字0。

2.A解析:局部变量在执行到它所在的程序块时产生,执行完时被摧毁,而静态局部变量的生存期将一直延长到程序运行结束,故选项A正确;全局变量的只有一种静态存储类别,故全局变量说明为static存储类,和没有说明为static存储类其生存期都是一直延长到程序运行结束,故选项B不正确:未赋初值的局部变量的初值是随机的,故选项C不正确;形参只能是一般局部变量,不能使用任何存储类说明符,故选项D不正确。所以,4个选项中选项A符合题意。

3.B

4.D解析:本题考查带参数的宏调用。a/=SQR(k+m)/SQR(k+m)进行宏替换后得:a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)=10/(2+2+0+2+1)=10/7/1。

5.A此题是一个简单的函数调用,当i=0并且i<30,执行i+=10,并且调用函数f,所以当i=0时,结果为1,当i=10时,结果为101,当i=20时,结果为401,所以a=1+101+401=503。

6.Asub函数接收两个参数:double类型变量a,double指针变量pb。首先将a与pb指向的变量值相减,结果存放在a中;然后再将pb指向的变量值与a的新值相减,结果存放在pb指向的内存空间中。sub函数不会修改实参x的值,但会修改实参y的值。当输入10.23.5时,实参x的值为10.2,y的值为3.5,执行sub函数后,x的值不变,y的值变成-3.2。故本题答案为A选项。

7.A结构体和共用体;在“联合”中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度。应该说明的是,这里所谓的共享不是指把多个成员同时装入一个联合变量内,而是指该联合变量可被赋予任一成员值,但每次只能赋一种值,赋入新值则冲去旧值

8.A根据C语言运算符的优先级与结合性,先计算a/b,结果为l,再将a/b的结果与C做按位与运算,即l与2做按位与运算,其结果为0。

9.Cmain函数定义两个double类型的变量a、b,分别赋初值为2.5、9.0。另外定义两个double类型的指针变量pa、pb,其中pa指向a,pb指向b。然后将b-a、pa、pb传给函数fun,此时x的值为6.5,y指向a,z指向b。“*y=*y-1.0;”是将变量a的值减去1.0赋给a,a的值为1.5;“*z=*z+x;”是将变量b的值加上6.5赋给b,b的值为15.5。fun函数执行完毕后,输出a的值为1.5。故本题答案为C选项。

10.B变量J只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被保存到浮点型变量Y中。

11.D

12.D解析:栈是仅在表头和表尾进行插入和删除元素操作的线性表,其特点是“先进后出”。本题中,进栈的过程中可以出栈。选项D中,如果第一个出栈的元素为e3,由于入栈顺序是e1、e2、e3,那么e3出栈后,栈中元素必定有e1和e2,因为e1先入栈,故e1应在e2后出栈,所以选项D是不可能的出栈顺序。

13.B

\n本题中要求输出右上半角的数,对角线上的数的下标相同,所以j=i。

\n

14.B

15.A函数参数传递是个不可逆的过程,形参不会把值传回实参,所以A)选项(24)[答案]A)[解析]c的值为a乘以b的值,为3。所以答案选择A)。

16.A其方法是将要删除节点的上一个节点的next指向要删除节点的下一个节点,然后释放将要删除的节点,所以选项A正确。故本题答案为A选项。

17.A

18.B水平制表符中,'\t'表示的是横向跳若干格;选项B中,'\039'错误,'\039'是八进制形式表的字符,最大数为7,但其中出现'9',','是字符逗号;选项D中,'\n'表示的是换行。

19.D

20.D解析:+=、-=、=等符号优先级相同结合性是由右至左,所以选D。

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

22.字节字节

23.非0非0解析:逻辑运算中,非0表示逻辑“真”,用。表示逻辑“假”。

24.22解析:分析程序,a=2,b=-1,c=2时,if语句的表达式a<b不成立,不再柱下判断,直接退出if语句,执行后面的输出语句,程序结束。在这个程序中a、b、c的值没做任何改变。

25.88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。

26.1212解析:x=(表达式1,表达式2,…)的形式,结果为最后一个表达式的值:x=(a=4,6*2)=2*6=12。

27.-16-16解析:将赋值运算符右侧的“表达式”的值赋给左侧的变量,并且赋值运算符按照“自右而左”的结合顺序,本题表达式应先算m的值为10,再运算y的值为8,最后计算y=y+(-8)=-8+(-8)=-16。

28.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。

29.1371513715解析:本题中,定义了一个整型数组n并初始化,在for循环语句中,再对数组中各元素重新赋值。循环执行第一次时,n[1]=n[0]*2+1=0+1=1,pnntf函数输出1,然后i的值加1,比较i<4成立,继续执行循环体语句,相应输出3、7、15,直至i<=4不成立,退出循环。所以最后输出为1、3、7、15。

30.3232解析:根据二叉树的性质,在二叉树的第k层上,最多有2的k-1次方个结点。所以,第6层的结点数最多为32。

31.1616解析:在满二叉树中,每一层上的节点数都达到最大值,在第k层上有2[k-1]个节点,且深度为m的满二叉树有2[m]-1个节点,深度为5的满二叉树叶子节点数为2[5-1]=16。

32.空间复杂度和时间复杂度空间复杂度和时间复杂度解析:算法的复杂性是指对一个在有限步骤内终止算法和所需存储空间大小的估计。算法所需存储空间大小是算法的空间复杂性,算法的计算量是算法的时间复杂性。

33.929,2解析:本题开始定义了一个int型二维数组a,并赋以5个初值,系统使数组的最高维为3,并让a[0][0]=1,a[0][1]=2,a[1][0]=6,a[1][1]=9,a[2][0]=11,a[2][1]因为初值不够而初始化为0。然后定义一个行指针t指向数组a的首地址,因为表达式t[1]表示指向元素a[1][0]的int型指针,t[1]+1表示指向a[1][1]的int型指针,故*(t[1]+1)返回的是a[1][1]的值9。而*t表示指向元素a[0][0]的int型指针,故(*t)[1]返回的是a[0][1]的值2。所以正确答案应该为9,2。

34.246

35.5656解析:本题中a,b,c,d是实参,x,y,cp,dp是形参。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参中元仍保留并维持原值。因此,程序的输出结果是56。

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

37.O(n)O(log2n)

38.共享性共享性解析:数据库技术的主要特点有以下几个方面:数据的集成性,数据的高共享性与低冗余性,数据的独立性,数据统一管理与控制。

39.D

40.一对多一对多解析:由于一个项目主管可以管理多个项目,而一个项目只能有一个项目主管,“项目主管”这个实体与“项目”这个实体的管理关系嘱于一对多。

41.A\n两个实体之间的联系实际上是实体集问的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。

\n

42.A解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护3个阶段。

43.C解析:本题考查的是指向函数的指针.函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。

44.B解析:采用结构化编程方法的好处主要在于:一是便于控制、降低程序的复杂性,因此便于编写程序。二是程序清晰易读,可理解性好。因此,结构化程序设计主要强调的是程序的易读性,而不是程序的规模、程序的执行效率和程序的可移植性。

45.A解析:在C语言中,应当在定义函数时指定函数值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换,即函数类型决定返回值的类型。

46.BB)【解析】内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。

47.BB)【解析】软件开发阶段包括需求分析、总体设计、详细设计、编码和测试_五个阶段。其中需求分析阶段常用的工具是数据流图和数据字典。

48.A

49.B解析:本题使用typedef关键字将整个结构体的定义部分stmctS{intg;charh;}声明为别名T。此时T是一个结构体类型,可以直接使用T声明该结构体变量,而S只是一个结构体名,必须结合struct关键字才能声明变量。故本题的正确答案为B。

50.B

51.C解析:程序中for循环了三次,第一次i=0,执行switch语句中case0:分支,直到遇到default语句,退出switch,这里共执行了三个输出语句分别输出0,0,0,第二次循环i=1,switch语句中没有匹配的分支,故只执行default语句输出1,退出switch语句;第三次循环i=2,从switch语句中的case2:开始执行,共执行了两个输出语句输出2、2。最后输出的结果为000122。

52.B解析:一个函数可以带回一个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。

53.C解析:A项是错误的,赋值时用的是花括号而不是圆括号。B项错在不能初始化时在花括号内为空。D项错在不可以用表达式对数组一一赋值。C项虽然没有直接定义数组的大小,但是初始化时只赋了5个元素的值,系统会自动定义数组的大小为5,这种形式是正确的。

54.C解析:C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第—个字符必须是字母或下划线。大写字母和小写字母被认为是两个不同的字符,用户在定义标识符时应做到“见名知意”,且不允许使用关键字作标识符。

55.B(45)B)解析:算法应该具有下列五个特性:

①有穷性:一个算法必须在执行有穷步之后结束。

②确定性:算法中的每一步,必须有确切的含义,在他人理解时不会产生二义性。

③动态性:算法中描述的每一步操作都可以通过已有的基本操作执行有限次实现。

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

⑤输出:一个算法应该有一个或多个输出。这里所说的输出是指与输入有某种特定关系的量。

56.C解析:C语言中可以同时定义多个变量,但变量之间必须用“,”隔开,显然,选项A中少了一个逗号“,”,故选项A不正确;选项B中定义变量时用了连续的赋值语句,这在定义变量是不正确的,故选项B不正确:选项D定义了一个float型指针a,然后定义了一个float型变量b,并。让这个变量的初值为指针变量a的地址,显然这是错误的,除非b是指向float型指针变量的指针。故选项D不正确,所以选项C符合题意。

57.B

58.C解析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。

59.C解析:位运算符“|”的作用是按位或,即两个二进制数的相应位中只要有一个为1,该位的结果值为1。最后以字符型输出,98对应的字符“b”。

60.A解析:strcpy(a,'are')中数组名a代表数组首地址的地址常量,该操作把are复制到a中,a[0][3]=\'&\',且strcpy(a[1],'you')把you复制到a[1]中,故输出a为“are&you”。

61.C

62.A因为X,Y都是double型数据,所以输入时的格式字符应为%If,所以B与C错误。D选项中scanf(”%lf%%’,x,Y);应为sc“(”%If%If"’,,&)r);。

63.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。

64.C本题主要考查指针数组。指针数组的特点是指针数组中的每一个元素都是一个指针。在本题中,定义了一个大小为2的字符型指针数组,并进行了初始化操作。下面分别分析四个选项对指针数据s的描述。

由于s中的两个元素是两个指针,可以指向字符串,也可以指向一维数组,因此说其是″abcd″和″ABCD″两个字符串的首地址是正确的;同理,说其两个元素分别指向字符型一维数组也是正确的。

由于指针数组s的两个元素分别指向″abcd″和″ABCD″两个字符串的首地址,那么它们的当前值是字符′a′和′A′的地址,而非一维字符数组中的元素值。

综上所述,可以知道本题的答案是C。

65.B

\n函数voidf的功能是将字符指针数组*p[]中的每个字符串按照从小到大的顺序排序。在主函数main中,调用f(P,5)后,字符指针数组*p[5]中的字符串按照字典顺序从小到大排列为如下形式,即*p[5]={'aab-dfg','abbd','abc','cd','dcdbe'),因此P[1]='abdb',strlen(p[1])=4。

\n

66.C

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

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

69.Acase常量表达式只是起语句标号作用,并不是该处进行条件判断。在执行switch语句时,根据switch的表达式,找到与之匹配的case语句,就从该case-子句执行下去,不再进行判断。直到碰到break竞语句结束为止。因此执行内层switch(y)时只执行了a++,此时a的值为l。然后执行外层case2语句的a++;b++.a为2,b为l。所以结果为A)。

70.C

71.C本题考查函数在函数调用时参数的传递形式,形参与实参参数个数类型要一致。

72.D程序调试是由程序开发者完成诊断和改正程序中的错误的过程;软件测试是由专门的测试人员完成,是发现错误而执行程序的过程;软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。

73.A

\n本题考查while循环。在while循环中,y自加每次循环都加l,在循环体内y--每次减1,所以总的y值不变,当x自加到7时,不满足循环条件,循环结束。

\n

74.A解析:当自加运算符做后缀表达式的时候,表达式的值不变,只有变量的值增加1,所以表达式(x++*1/3)相当于(11*1/3),值为3。

75.A

76.A本题考查结构体类型所占用的内存字节数。结构体占用的内存字节数为各个成员变量所占内存字节数的总和。题目中给出了一个结构体date,里面包括3个整型的成员变量,在TurboC中,每个整型变量占用2个字节的内存,这3个整型变量总共占用6个字节的内存。sizeof函数是返回对象所占内存的大小。要注意,对于不同的编译器,同样类型的变量所占的内存字节数不同,C语言的默认编译器为TurboC。

77.C在函数fun(intx)中,有个if语句判断,如果参数x等于0或1时,返回值,否则进入下面的p=x-fun(x-2)递归函数。当在主函势中调用fun(7)时,其过程为:“fun(7)=7-fun(5)=7-(5一fun(3))=7-(5-(3-fun(1)))=7-(5-(3—3))=7-5=2”,所以最后的输出结果为2。

78.C数组名是一个指针常量,它的值就是数组的地址,也就是数组首元素地址。

79.D

\n当k=1时,循环成立,输出w[l]的数组即EFGH,接着执行k++后k为2;当k=2时,循环成立,输出w[2]的数组即IJKL,接着执行k++后,k为3;当k=3时,循环不成立,退出。

\n

80.C

81.

82.1voidfun(char*s,chart[])2{3inti,j=0;4for(i=0;i<strlen(s);i++)5if(!((i%2)==0&&(s[i]%2)))6t[j++]=s[i];7t[j]=0;8}按题目要求,将字符串S中符合要求的字符存放到字符数组t中。我们使用for循环语句来解决这个问题。在赋值之前,先对字符串s的元素下标和ASCⅡ值进行判断,将满足要求的元素赋给数组t,将数组t的最后一个字符赋值为'\\0',即ASCⅡ值为0。2022-2023年四川省巴中市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设变量P是指针变量,语句P=NULL;是给指针变量赋NULL值,它等价于()。A.A.p="";

B.p="0";

C.p=0;

D.p="";

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

A.局部变量说明为static存储类,其生存期将得到延长

B.全局变量说明为static存储类,其作用域将被扩大

C.任何存储类的变量在未赋初值时,其值都是不确定的

D.形参可以使用的存储类说明符与局部变量完全相同

3.

4.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}

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

5.有以下程序:#include<stdio.h>doublef(doublex);main(){doublea=0;inti;for(i=0;i<30;i+=10)a+=f((double)i);printf("%5.of\n",a);}doublef(doublex){returnx*x+1;}程序运行后的输出结果是()。A.503B.401C.500D.1404

6.有以下程序:#include<stdio.h>voidsub(doublea,double*pb);intmain(){doublex,y;scanf(“%lf%lf”,&x,&y);sub(x,&y);printf(“x=%fy=%f\n”,x,y);}voidsub(doublea,double*pb){a=a-*pb;*pb=*pb-a;}程序运行时输入10.23.5并按<Enter>键,则输出结果为()。

A.x=10.200000y=-3.200000

B.x=6.700000y=-13.700000

C.x=7.000000y=-3.500000

D.x=13.400000y=-7.000000

7.有以下程序main(){union{charch[2];intd;}s;s.d=0x4321;printf("%x,%x\n",s.ch[0],s.ch[1]);}在16位编译系统上,程序执行后的输出结果是______。A.21,43B.43,21C.43,00D.21,00

8.有以下程序:#include<stdio.h>main(){inta=2,b=2,C=2;print{("%d\n",a/b&c);}程序运行后的输出结果是()。A.0B.1C.2D.3

9.有以下程序:#include<stdio.h>voidfun(doublex,double*y,double*z){*y=*y-1.0;*z=*z+x;}main(){doublea=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb);printf(“%f\n”,a);}程序运行后的输出结果是()。

A.8.000000B.9.000000C.1.500000D.10.500000

10.有以下程序段intj;floaty;charname[50]:scanf("%2d%f%s",&i,&.y,name):当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A.55566.0B.566.0C.7777.0D.566777.0

11.堆是一种有用的数据结构。下列关键码序列()是一个堆。

A.94,31,53,23,16,72

B.94,53,31,72,16,23

C.16,53,23,94,31,72

D.16,31,23,94,53,72

12.设栈S的初始状态为空,栈的容量为5,若入栈元素的顺序是e1、e2、e3、e4、e5,则出栈元素的顺序不可能是______。

A.e1、e2、e3、e4、e5

B.e5、e4、e3、e2、e1

C.e2、e4、e3、e5、e1

D.e3、e4、e1、e2、e5

13.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

{for(j=0;j<i;j++)printf("%4c",);

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式输出数组右上半三角

1234

678

1112

16

则在程序下划线处应填入的是()。

A.i-1B.iC.i+1D.4一i

14.设二叉排序树中有n个结点,则二叉排序树的平均查找长度为()。A.O(1)

B.O(log2n)

C.O(n)

D.(n2)

15.以下叙述中错误的是(

)。A.函数形参的值也可以传回给对应的实参

B.函数调用可以作为一个独立的语句存在

C.若函数有返回值,必须通过r;mm语句返回

D.C程序必须由一个或一个以上的函数组成

16.假定已建立以下链表结构,且指针p和q已指向如图所示的节点。则下列选项中可将q所指节点从链表中删除并释放该节点的语句组是()。

A.p->next=q->next;free(q);

B.p=q->next;free(q);

C.p=q;free(q);

D.(*p).next=(*q).next;free(p);

17.

18.下列选项中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

19.二叉树的后序排列DBEFCA,中序排列DBAECF,那么对其做先序线索化二叉树,节点E的线索化指向节点()

A.BCB.ACC.DFD.CF

20.表达式a+=a-=a=9的值是()。

A.9B.-9C.18D.0

二、2.填空题(20题)21.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。

22.在计算机领域中,通常用英文单词“Byte'’表示【】。

23.C语言中用______表示逻辑值为“真”,用数字“0”表示逻辑值为“假”。

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

#include<stdio.h>

main()

{inta=2,b=1,c=2;

if(a<b)

if(b<0)c=0;

elsec++;

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

}

25.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。

26.若x和a均是血型变量,则计算完x=(a=4,6*2)后的x值为______。

27.若有定义intm=5,y=2,则执行表达式y+=y-=m*=y后,y的值为【】。

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

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

main()

{

inti,n[]={0,0,0,0,0};

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

n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

30.在一棵二叉树上第6层的结点个数最多是【】。

31.深度为5的满二叉树有()个叶子节点。

32.实现算法所需的存储单元多少和算法的工作量大小分别为算法的【】。

33.若有如下程序:

main()

{inta[][2]={1,2,6,9,11},(*t)[2];

t=a;

printf("%d,%d\n",*(t[1]+1),(*t)[1]);

}

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

34.下面程序运行后的输出结果是()。

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6},*k[3],i=1;

while(i<4)

{k[i-1]=&a[2*i-1];

printf("%d",*k[i-1]);

i++;

}

}

35.下列程序的输出结果是【】。

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=4,b=3,c=5,d=6;

t(a,b,c,d);

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

}

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

37.对于长度为n的线性表,若进行顺序查找,时间复杂性为【】;若进行二分查找,则时间复杂性为【】。

38.数据库技术的主要特点为数据的集成性、数据的高【】和低冗余性、数据独立性和数据统一管理与控制。

39.以下scanf函数调用语句中对结构体变量成员的引用不正确的是{charname[20];}pup[5],*p;

40.一个项目具有一个项目主管,一个项目主管叫‘管理多个项目,则实体“主管”与实体“”的联系属于______。

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

A.用E—R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系

B.用E—R图只能表示实体集之间一对一的联系

C.用E—R图只能表示实体集之间一对多的联系

D.用E—R图表示的概念数据模型只能转换为关系数据模型

42.软件开发的结构化生命周期方法将软件生命周期划分成()

A.定义、开发、运行维护

B.设计阶段、编程阶段、测试阶段

C.总体设计、详细设计、编程调试

D.需求分析、功能定义、系统设计

43.语句int(*ptr)()的含义是()。

A.ptr是一个返回值是int的函数

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向血型数据的指针

44.结构化程序设计主要强调的是______。

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

45.在C语言中,函数返回值的类型最终取决于()。

A.函数定义时在函数首部所说明的函数类型

B.return语句中表达式值的类型

C.调用函数时主调函数所传递的实参类型

D.函数定义时形参的类型

46.在数据库系统的内部结构体系中,索引属于()。

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

47.在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()

A.逻辑设计B.需求分析C.详细设计D.物理设计

48.下列程序的运行结果为______。#defineMSDOS#ifdefMSDOS#defineINTEGERSIZE32#else#defineINTEGERSIZE16#endifmain(){printf("integer_size=%d\n",INTEGER_SIZE);}

A.integersize=32

B.integer_size=16

C.integersize=32,integer_size=16

D.错误

49.设有以下语句:typedefstructS{intg;charh;}T;则下面叙述中正确的是()。

A.可以用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是stnictS类型的变量

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

①成熟的原型化人员

②快速的成型工具

③需求了解的准确性

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

51.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序运行后的输出结果是______。

A.22111B.21021C.122D.12

52.定义int*swap()指的是______。

A.一个返回整型值的函swap()

B.—个返回指向整型值指针的swap()

C.一个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

53.要正确定义并初始化一个数组a,它含有5个元素,则正确的语句是______。

A.inta[5]=(0,0,0,0,0);

B.inta[5]={};

C.inta[]={0,0,0,0,0};

D.inta[]={5*0};

54.以下不合法的用户标识符是______。A.j2KEYB.DoubleC.4dD._8_

55.以下叙述中错误的是A.算法正确的程序最终一定会结束

B.算法正确的程序可以有零个输出

C.算法正确的程序可以有零个输入

D.算法正确的程序对于相同的输入一定有相同的结果

56.以下定义语句中正确的是()。

A.chara='A'b='B';

B.floata=b=l0.0;

C.inta=l0,*b=&a;

D.float*a,b=&a;

57.下列程序的输出结果是______。main(){intm=5;if(m++>5)printf("%d\n",m);elseprintf("%d\n",m--);}

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

58.对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为______。

A.n-1B.nC.n+1D.2n

59.已知小写字母a的ASCII码为97,大写字母A的ASCII码为65,以下程序的结果是______。main(){unsignedinta=32,b=66;printf("%c\n",a|b);}

A.66B.98C.bD.B

60.下列程序执行的输出结果是()。#include<stdio.h>main(){chara[2][4];strcpy(a,"are");strcpy(a[1],"you");a[0][3]='&';printf("%s\n",a);}

A.are&youB.youC.areD.&

四、选择题(20题)61.(58)在数据流图(DFD)中,带有名字的箭头表示______。

A.制程序的执行顺序

B.模块之间的调用关系

C.数据的流向

D.程序的组成成分

62.若有定义语句:doublex,y,*px,*PY;执行了laX=&x;lay=&y;之后,正确的输入语句是()。A.scanf(”%If%le”,px,lay);

B.seanf(”%f%f¨&x,y);

C.seanf(”%f%f",x,y);

D.Scanf(”%If%If"·,x,y):

63.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()

A.*p+9B.*(p+8)C.*p+=9D.p+8

64.设有如下定义

char*s[2]={"abcd","ABCD"};

则下列说法错误的是

A.s数组元素的值分别是″abcd″和″ABCD″两个字符串的首地址

B.s是指针数组名,它含有两个元素,分别指向字符型一维数组

C.s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素

D.s数组的两个元素中分别存放了字符′a′和′A′的地址

65.

有以下程序,其中函数f的功能是将多个字符串按字典顺序排序()。

#include<string.h>

voidf(char*p[],intn)

{char*t;inti,j;

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

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

if(strcmp(p[i],p[j]>0){t=p[i];p[i]=p[j];p[j]

=t;}

}

main

{char*P[5]={"abe","aabdfg","abbd","dcd-

be","cd"};

f(p,5);

printf("%d\n",strlen(p[1]));

}

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

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

66.

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

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

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

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

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

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

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

A.a=2,b=lB.a=2,b=2C.a=1,b=lD.a=1.b=0

70.

71.有下列函数定义:intfun(doublea,doubleb){returna*b;}若下列选项中所用变量都已经正确定义并赋值,错误的函数调用是()。A.if(fun(x,y)){……}

B.z=fun(fun(x,y),fun(x,y));

C.z=fun(fun(X,y)x,y);

D.fun(x,y);

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

A.软件测试应该由程序开发者来完成

B.程序经调试后一般不需要测试

C.软件维护只包括对程序代码的维护

D.以上三种说法都不对

73.

有下列程序:

#include<stdio.h>

main

{intx=0;

inty=0;

while(x<7&&++v)

{y--;

x++;}

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

}

程序的输出结果是()。

A.0,7B.7,7C.0,6D.1,6

74.设有intx=11;则表达式(x++*1/3)的值是()。

A.3B.4C.11D.12

75.下列语句中,正确地执行当i等于5时执行一些语句的条件语句是()。

A.if(i==5)B.ifi=5thenC.ifi=5D.ifi==5then

76.有以下程序

#include"stdio.h"

main()

{structdate

{intyear,month,day;}today;

printf("%d\n",sizeof(structdate));

}

程序的运行结果是

A.6B.8

C.12D.10

77.有以下程序:

fun(intx)

{intP;

if(x==0||x==l)return(3);

p=x-fun(x-2);

returnp;

}

main

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

程序执行后的输出结果是()。A.A.7B.3C.2D.0

78.用数组名作为函数调用的实参,则传递给形参的是()。

A.数组中所有元素的值B.数组的第一个数据C.数组的首地址D.数组元素的个数

79.

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

main

{charw[][10]={"ABCD","EFGH","IJKL","

MNOP"),K;

for(k=1;k<3;k++)printf("%s\n",w[k]);

A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL

80.

五、程序改错题(1题)81.写出下列程序的运行结果。

fun(inta,intb)

{if(a>b)return(a);

Elsereturn(b);}

main

{intx=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);printf(“%d\n”,r);}

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,函数fun()的功能是将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指字符串中剩余的字符形成的新字符串存放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的ASCⅡ值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCⅡ值为奇数,在数组中的下标为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是“BDH2345”。注意:部分源程序在文件prog1.c中。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序::

参考答案

1.C在C语言中null等价于数字0。

2.A解析:局部变量在执行到它所在的程序块时产生,执行完时被摧毁,而静态局部变量的生存期将一直延长到程序运行结束,故选项A正确;全局变量的只有一种静态存储类别,故全局变量说明为static存储类,和没有说明为static存储类其生存期都是一直延长到程序运行结束,故选项B不正确:未赋初值的局部变量的初值是随机的,故选项C不正确;形参只能是一般局部变量,不能使用任何存储类说明符,故选项D不正确。所以,4个选项中选项A符合题意。

3.B

4.D解析:本题考查带参数的宏调用。a/=SQR(k+m)/SQR(k+m)进行宏替换后得:a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)=10/(2+2+0+2+1)=10/7/1。

5.A此题是一个简单的函数调用,当i=0并且i<30,执行i+=10,并且调用函数f,所以当i=0时,结果为1,当i=10时,结果为101,当i=20时,结果为401,所以a=1+101+401=503。

6.Asub函数接收两个参数:double类型变量a,double指针变量pb。首先将a与pb指向的变量值相减,结果存放在a中;然后再将pb指向的变量值与a的新值相减,结果存放在pb指向的内存空间中。sub函数不会修改实参x的值,但会修改实参y的值。当输入10.23.5时,实参x的值为10.2,y的值为3.5,执行sub函数后,x的值不变,y的值变成-3.2。故本题答案为A选项。

7.A结构体和共用体

温馨提示

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

评论

0/150

提交评论