2021-2022年辽宁省大连市全国计算机等级考试C语言程序设计_第1页
2021-2022年辽宁省大连市全国计算机等级考试C语言程序设计_第2页
2021-2022年辽宁省大连市全国计算机等级考试C语言程序设计_第3页
2021-2022年辽宁省大连市全国计算机等级考试C语言程序设计_第4页
2021-2022年辽宁省大连市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年辽宁省大连市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在m叉树中,都为0的结点称为()。

A.兄弟B.树叶C.树根D.分支结点

2.以下与数学表达式“0<x<5且x≠2”不等价的C语言逻辑表达式是()。

A.(0<x<5)&&(x!=2)

B.0<x&&x<5&&x!=2

C.x>0&&x<5&&x!=2

D.(x>0&&x<2)||(x>2&&x<5)

3.若x、y、z、m均为int型变量,则执行下面语句后m的值是()m=1;x=2;y=3;m=(m<x)?m:x;m=(m<y)?m:y;m=(m<y)?m:z;

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

4.数据结构通常是研究数据的及它们之间的联系______。A.存储和逻辑结构B.存储和抽象C.理想和抽象D.理想与逻辑

5.合法的常量是()。A.‘program’B.–e8C.03xD.0xfl

6.栈这种数据结构一般应用在()。

A.递归调用B.子程序调用C.表达式求值D.A,B,C

7.有以下程序:#include<stdio.h>voidf1(char*a,charb){charc;c=*a;*a=b;b=c;}voidf2(chara,charb){charc;c=a;a=b;b=c;}voidf3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chart1,t2;t1=‘A’;t2=‘B’;f3(&t1,&t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f2(t1,t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f1(&t1,t2);putchar(t1);putchar(t2);printf(“\n”);}程序运行后的输出结果是()。

A.ABBABBB.BAABBBC.BABABAD.BABAAB

8.

读取二进制文件的函数调用形式为:fread(buffersize,count,fp);,其中buffer代表的是()。

A.一个文件指针,指向待读取的文件

B.一个整型变量,代表待读取的数据的字节数

C.一个内存块的首地址,代表读人数据存放的地址

D.一个内存块的字节数

9.若已知一个栈的进栈序列是1,2,3,,n,其输出序列为p1,p2,p3,?,pn,若p1=n,则pi为()。

A.iB.n-iC.n-i+1D.不确定

10.下面程序的运行结果是

#include<stdio.h>

main()

{inta=28,b;

chars[10],*p;

p=s;

do{b=a%16;

if(b<10)*p=b+48;

else*p=b+55;

p++;a=a/5;}while(a>0);

*p=′\0′;puts(s);}

A.10B.C2C.C51D.\0

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

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

main()

{inta,b,d=25;

a=d/10%9;

b=a&&(-1);

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

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

13.若有语句“typedefstructS{intg;charh;}T;”,则下列叙述中正确的是()。

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

14.

15.判断有向图是否存在回路,利用()方法最佳。

A.求关键路径B.求最短路径C.拓扑排序D.广度优先遍历

16.

17.

18.设有定义:floata=2,b=4,h=3;以下c语言表达式中与代数式(a+B)h计算结果不相符的是()。A.(a+B)*h/2B.(1/2)*(a+B)*hC.(a+B)*h*1/2D.h/2*(a+B)

19.用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。

A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都要修改D.队头,队尾指针都可能要修改

20.有以下函数:

此函数的功能是()。A.比较p和q所指字符串的大小

B.计算p和q所指字符串的长度差

C.将q所指字符串连接到P所指字符串后面

D.将q所指字符串复制到p所指字符串中

二、2.填空题(20题)21.下述函数用于统计一行字符中的单词个数,单词之间用空格分隔。

wordnum(str)

charstr[];

{inti,num=0,word=0;

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

if(【】==)word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

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

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

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

23.诊断和改正程序中错误的工作通常称为【】。

24.数据库系统中实现各种数据管理功能的核心软件称为【】。

25.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

26.关系代数是关系操作语言的一种传统表示方式,它以集合代数为基础,它的运算对象和运算结果均为()。

27.以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表带头结点)。请在下划线内填入正确内容。

structlink

{chardata;

structlink*next;};

structlink*p,*first;

intc=0;

p=first;

while(【】)

{c++;

p=【】;}

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

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

}

main()

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

s=f(aa,5);printf("%d\n",s);

}

29.有以下程序段,且变量已正确定义和赋值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

printf("s=%f\n\n",s);

请填空,使下面程序段的功能与之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

printf("s=%f\n\n",s);

30.下面程序的功能是【】。

doublesub(doublex,inty)

{intn;doublez;

for(n=1,z=x;n<y;n++)z=z*x;

returnz;}

main()

{doublea=2.0,b=4.0,c;

c=sub(a,b);printf("%f",c);}

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

32.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2

ch1=getchar();ch2=getchar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

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

}

程序运行时输入:12<回车>,执行后的输出结果是【】。

33.在数据库理论中,数据物理结构的改变,如存储设备的更换、物理存储的更换、存取方式等都不影响数据库的逻辑结构,从而不引起应用程序的变化,称为【】。

34.性结构中,第一个结点没有前驱结点,其余每个结点有且只有【】个前驱结点;最后一个结点没有后继结点,其余每个结点有且只有【】个后继结点。

35.算法的执行过程中,所需要的存储空间称为算法的【】。

36.注释一般分为序言性注释和______注释。

37.若有如下程序:

#include"stdio.h"

main()

{chars[30];

Strcpy(&S[0],"adc");

Strcpy(&S[1],"def");

strcpy(&S[2],"gh");;

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

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

38.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:

abcl23edf456gh,执行程序后输出:123456。请填空。

#include<stdio.h>

#include<ctype,h>

main()

{chars[80],d[80];inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(【】){d[j]=s[i];j++;}

d[j]='\0';

puts(d);

}

39.实体联系模型是一种常用的高级概念数据模型,而______是实体联系模型中的核心。

40.下面程序的运行结果是【】。

#defineN10

#defines(x)x*x

#definef(x)(x*x)

mam()

{

intil,i2;

i1=1000/s(N);i2=1000/f(N);

printf("%d%d\n",il,i2);

}

三、1.选择题(20题)41.下面程序的输出结果是main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}

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

42.以下选项中不属于C语言的类型的是

A.signedshortint

B.unsignedlongint

C.unslgnedint

D.longshort

43.有下列二叉树,对此二叉树前序遍历的结果为()。

A.ACBEDGFHB.ABDGCEHFC.HGFEDCBAD.ABCDEFGH

44.应用数据库的主要目的是A.A.解决数据保密问题

B.解决数据完整性问题

C.解决数据共享问题

D.解决数据量大的问题

45.有以下程序:main(){union{unsignedintn;unsignedcharc;}u1;u1.c='A';printf("%c\n",u1.n);}执行后输出结果是()。

A.产生语法错B.随机值C.AD.65

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

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

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

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

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

47.如果需要打开一个已经存在的非空文件"Demo"进行修改,下面选项中正确的是

A.fp=fopen("Demo","r");

B.fp=fopen("Demo","ab+");

C.fp=fopen("Demo","w+");

D.fp=fopen("Demo","r+");

48.C语言中()

A.不能使用do-while语句构成的循环

B.do-while语句构成的循环必须用break语句才能退出

C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环

49.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}运行该程序的输出结果是______。

A.34B.42C.43D.33

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

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

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

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

D.以上3种说法都不对

51.在关系数据库中,用来表示实体之间联系的是

A.树结构B.网结构C.线性表D.二维表

52.结构化程序由三种基本结构组成,三种基本结构组成的算法A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务

53.假定x和y为double型,则表达式x=2,y=x+3/2的值是

A.3.5B.3C.2D.3

54.有以下程序:#include<stdio.h>structSTU{charname[10];intnum;intScore;};main(){structSTUs[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045,537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]=&s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->Score>p[j]->Score){t=p[i];p[i]=p[j];p[j]=t;}printf("%d%d\n",s[1].Score,p[1]->Score);}执行后的输出结果是()。

A.550550B.680680C.580550D.580680

55.有如下程序:main(){intx=23;do{printf("%d",x--);}while(!x);}程序运行后的输出结果是()。

A.321B.23C.不输出任何内容D.陷入死循环

56.下列程序段中,不能正确赋值的是

A.char*p,ch;p=&ch;scanf("%c,&p")

B.char*p;p=(char*)malloc(1)scanf("%c",p);

C.char*p*p=getchar();

D.char*p,ch;p=&ch;*p=getchar();

57.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是______。

A.if(a>b)&&(b>c))k=1;elsek=();

B.if((a>b)||(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

58.下列程序的输出结果是_____。main(){inti;for(i='A';i<'I';i++)printf("%c",i+32);printf("\n");}

A.编译不通过,无输出B.acegC.acegiD.abcdefghi

59.有以下程序:#include<stdio.h>main(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;}printf("%d,",--x);}}程序的运行结果是()。

A.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,4,2

60.有以下程序:main(){inta=15,b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0;m++;break;}}printf("%d\n",m);}程序运行后的输出结果是()。

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

四、选择题(20题)61.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间

62.若有定义语句:intm[]={1,2,3,4,5},i=4;,则下面对m数组元素的引用中错误的是

A.m[++i]B.m[1*2]

C.m[m[0]]D.m[m[--i]]

63.两个或两个以上模块之间联系的紧密程度称为()。

A.耦合性B.内聚性C.复杂性D.数据传输特性

64.以下不构成无限循环的语句或语句组是()。

65.

66.软件设计中划分模块的一个准则是()。

A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦台

67.

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

char*point(char*pt):

main

{charb[4]={a,c,s,f),*pt=b;

pt=point(pt);

printf("%c\n",*pt);

}

point(char*p)

{p+=3;

returnp;

}

A.sB.cC.fD.a

68.有以下程序:

若运行时输入:246<;回车>;,则输出结果为()。

A.204B.200C.240D.246

69.在面向对象方法中,不属于“对象’’基本特点的是()。A.一致性B.分类性C.多态性D.标识唯一性

70.(17)软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及()

A.阶段性报告

B.需求评审

C.总结

D.都不正确

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

A.数据模型

B.数据库管理系统

C.软件工具

D.数据库

72.

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

unionmyun

{struct

{intx,y,z;)u;

intk:

}a;

main

{a.u.x=4;a.u.y=5;a.u.z=6;

k=0;

printf(%d\n",a.u.x);

}

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

73.下列词语中,不属于面向对象方法的是

A.对象、消息B.继承、多态C.类、封装D.过程调用

74.以下关于结构化程序设计的叙述中正确的是()。A.在C语言中,程序的模块化是利用函数实现的

B.结构化程序使用sotoi吾句会很便捷

C.一个结构化程序必须同时由顺序、分支、循环三种结构组成

D.由三种基本结构构成的程序只能解决小规模的问题

75.

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

main()

{inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;

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

for(j=0;j<=i;j++)s+=a[i][j];

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

}

A.18

B.19

C.20

D.21

77.有以下定义:

78.C语言中char类型数据占字节数为()。

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

79.

80.有以下程序:#include〈stdio.h〉voidfun(int*s){staticintj=0;do{s[j]=s[j]+s[j+1];}while(++j<2);}main(){inti.a[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=0;i<5;i++)pfintf(“%d”,a[i]);printf(“\n”);}程序运行后的输出结果是()。A.12345B.23445C.34756D.35745

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

main

{intn;

For(n=3;n<=10;n++)

{if(n%6==0)break;Printf(“%d”,n);}}

六、程序设计题(1题)82.下列程序定义了MM的二维数组,并在主函数中自动赋值。请编写函数proc(inta[][M]),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如,a数组中的值为:

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

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

试题程序:

参考答案

1.B

2.A在C语言里不能直接表达“0<x<5”,需要分步骤来实现,即使用“x>0&&x<5”来描述。在C语言里,“0<x<5”属于一个逻辑运算表达式,可以理解为“(0<x)<5”,因此选项A错误。故本题答案为A选项。

3.A解析:?:运算符首先执行?之前的表达式,如果表达式的值为真,则返回?和:之间的表达式的值,否则返回:之后的表达式的值。本题中m比x和y都要小,所以,3个表达式都没有改变m的值,故应该选择A。

4.A

5.D

6.D

7.B函数f1(*a,b),*a为地址传递,b为值传递,将b值传给*a,则f1(&t1,t2)调用后输出t1、t2为BB。f2(a,b)为值传递,传入的只是a、b的值,不实现交换,则f2(t1,t2)调用后输出t1、t2为AB。f3(*a,*b)为地址传递,可以实现a、b值的交换,则f3(&t1,&t2)调用后输出t1、t2为BA。因此结果为BAABBB。故本题答案为B选项。

8.Cfread函数中的参数buffer是内存块的首地址,输入的数据存入此内存块中。

9.C

10.C解析:考查用字符指针处理字符串的方法。语句'p=s;'是使指针p指向字符数组s。*p则引用了p所指位置的数组元素。通过指针来引用一维数组元素。

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

12.B解析:算术运行符“/”、“%”的优先级处于同一级,并且两者的结合性都是从左到右。所以算术表达式运算过程为:a=25/10%9=2%9=2:当逻辑运算符“&&”两边的值都是非零时,逻辑表达式的值才为真(即为1)。所以b=2&&(-1)=1。

13.BT为结构体类型名,可以用来定义结构体变量。故本题答案为B选项。

14.C

15.C

16.B

17.D

18.B解析:选项B中由于1和2都是整型,其1/2的运算结果为0,故整个表达式的值为0,所以它的结果和题目中要求的代数式的讨算结果不相符,所以,4个选项中选项B符合题意。

19.D

20.A函数fun接收两个整型指针变量作为参数,通过while循环,比较p和q对应位上的各个字符,如果字符相同,继续向后比较;否则循环结束,返回第1次对应不同字符的ASCII差值。所以函数fun是对p和q指向的字符串进行比较,其大小是按第1个对应位置上不同字符的ASCII值来比较的。本题答案为A选项。

21.\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累加得到字符串中的单词个数。

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

23.程序调试程序调试解析:程序调试的任务是诊断和改正程序中的错误。程序调试与软件测试不同,软件测试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于调试工具找出软件错误的具体位置。软件测试贯穿整个软件生命期,而调试主要在开发阶段。

24.数据库管理系统数据库管理系统(DBMS)

25.n/2性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。

26.关系关系

27.p!=NULLp->nextp!=NULL\r\np->next解析:结构体变量构成链表需要每个节点中都有一个指向下一个结点的指针,就像本题中的next指针一样。注意:掌握可以对链表进行的操作。

28.1515解析:通过递归调用f函数实现了数组各元素之和,即a[4]+a[2]+a[1]+a[0]=15。

29.k<=nk++k<=n,k++解析:本题要求将一个for循环改成while循环。首先要保证循环条件相同,在for循环中,每次执行循环之后,循环控制变量k都会加1,而while循环则没有,故需在循环体中增加改变k数值的语句'k++;'\ue009。

30.本程序的功能是求a的b次方本程序的功能是求a的b次方

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

32.1212解析:本题中n1='1'-'0'=1,n2=1×10+('2'-'0')=10+2=12。

33.物理独立性物理独立性解析:数据的物理结构改变,不影响数据库的逻辑结构,从而不引起应用程序的变化,这种性质叫做物理独立性。

34.11

35.空间复杂度空间复杂度解析:算法执行时所需要的存储空间,称为算法的空间复杂度。

36.功能性功能性解析:注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,给出程序的整体说明;功能性注释一般嵌在源程序体之中,主要描述其后的语句或程序做什么,

37.adghadgh解析:函数strcpy是字符串复制函数。第一次将'adc'复制到以&s[0]为起始地址的存储空间中,第二次将'def'复制到以&s[1]为起始地址的存储空间中,“dc”将被覆盖,变为“adef”,第三次将“gh”复制到以&s[2]为起始地址的存储空间中,“ef”将被覆盖,变为“adgh”。

38.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:字符数组的初始化,字符串的输入和输出的应用。C语言没有字符串变量,字符串不是存放在一个变量中而是存放在一个字符型数组中,因此为了存放字符串,常常在程序中定义字符型数组;字符串存放在字符数组中,但字符数组与字符串可以不等长,C语言规定以“\\0”字符作为字符串结束标志。

本题中,chars[80],d[80];定义了两个字符型数组,可以放入80个字符。gets函数是c语言提供的一个专门用于读字符串的函数,它读入全部字符(包括空格),直到遇到回车为止。本题中,读入字符串s后,开始比较s中的每个字符是否为数字字符,因为字符数据在内存中以相应的ASCII码存放,所以只需比较相应的ASCII码值是否在48('0'的ASCII代码)与57('9'的ASCII代码)之间,或者直接与'0','9'进行比较,如果是数字字符则将此字符存入d数组中,不是则继续进行下一字符的比较,直至s结束(即'0'的出现)。将“'\\0'”字符作为字符串d结束标志,最后调用puts函数输出d。所以在空格处应填入比较语句s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或&&48<=s[i]或57>=s[i]。

39.实体联系图或E-R图实体联系图或E-R图解析:实体联系图(B-R图)是实体联系模型中的核心。由于E-R图描述的是数据流图中数据存储及其之间的关系,因此它是数据库观念设计的最常用的工具。

40.100010100010解析:首先将程序中的宏替换掉,两处的宏替换后分别为i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后输出的i1和i2的值分别为1000和10。

41.A解析:在C语言中,数组元素是从0开始的。指针变量p指向数组的首地址,(p+2)就会指向数组中的第3个元素。题目中要求输出的是元素的值。

42.D解析:本题考核的知识点是c语言中的数据类型。在选项中很明显选项A为无符号短整型,选项B为无符号长整型,选项C为无符号整型,而选项D的类型在C语言中不存在。所以,4个选项中D为所选。

43.B解析:对二叉树的前序遍历是指:先访问根结点,然后访问左子树,最后访问右子树,并且,在访问左、右子树时,先访问根结点,再依次访问其左,右子树。

44.C数据库是对数据进行操作和管理的,可以看成是长期存储在计算机内的、大量的、有结构的和可共享的数据集合。数据库可以被直观地理解为存放数据的仓库,数据库可以对大量数据进行管理和应用。一个应用数据库的主要目的就是要实现数据的共享,能使应用数据库的数据被大量用户使用。

45.C解析:在定义共用体的同时,定义了—个共用体型变量u1,共占两个字节,有两个成员n和c,两个成员的首地址是相同的。因此给u1.c赋一个“A”,其实就是给无符号整型成员u1.n的低字节赋一个“A”,输出u1.n的时候是以字符型的形式输出,只输出它的低地址的一个字节,因此为“A”。所以,C选项为所选。

46.C

47.D解析:此题考查文件打开方式对文件操作的影响。由于打开文件进行修改,可见选项A)是错误的,因为此种方式打开时,只能读,不能写,当然无法修改;选项B)是以追加方式'ab+'打开文件读写,以这种方式打开时,新写入的数据只能追加在文件原有内容之后,但可以对以前的数据读出。换言之,'ab+'或'a+'方式打文件后,对于写操作,文件指针只能定位在文件的原有内容之后,但对于读操作,文件指针可以定位在全文件范围内,可见,按此种方式打开文件不能实现文件内容的修改;选项C)以'w+'方式打开文件,此时,原文件中已存在的内容都被清除,但新写入文件的数据可以被再次读出或再次写入,故也不能实现对文件的修改。只有以'r+'方式打开文件时,才允许将文件原来数据读出,也允许在某些位置上再写入,从而实现对文件的修改。

48.D

49.D解析:逗号表达式(++x,y++)的值应该是y++的值,由于y++是先引用后自增,所以y++的值是3。

50.D解析:程序设计的过程应是先画出流程图,然后根据流程图编制出程序,所以选项A错误。程序中的注释是为了提高程序的可读性,注释必须在编制程序的同时加入,所以,选项B和选项C错误。综上所述,本题的正确答案为选项D。

51.D解析:在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。即关系模型是用表格数据来表示实体本身及其相互之间的联系。本题的正确答案是D。

52.A解析:C程序由顺序结构、选择结构和循环结构三种基本的结构组成,这三种结构可以组成任何复杂的C程序,即可以完成任何复杂的任务。

53.D解析:本题需要掌握的知识点是:逗号表达式的求解步骤,另外,注意一下两个整数相除的结果仍为整数。了解了知识点后,本题就可以逐步求解了:

x=2

y=x+3/2

y=2.000000+1

y=3.000000

54.C解析:本题是按成员变量Score的值进行由小到大的排序,程序执行后p[5]中各元素分别为:{{'Penghua',20045,537},{'SunDan',20044,550},{'LiSiGuo',20042,580},{'WangYin',20043,680},{'YangSan',20041,703}},所以P[1]->Score=550,s[1].Score=580。

55.B解析:本题中使用do-while循环,每执行一次循环体输出x的值后将x减1。当x=23,执行循环体输出x为23,X=X-1=23-1=22,判断循环条件是否成立,因为x=22,!x的值为0,终止循环,因此只输出23。

56.C解析:本题考查了字符的输入函数getchar和利用scanf函数输入一个字符。用scanf输入字符时,格式说明字符应该为%c。本题选项C)因为指针p没有赋初值,所以是一个不定值,不能直接将getchar读入的字符赋给指针p所指向的字符,所以选项C错误。

57.A解析:“a>b?(b>c?1:0):0”的求解顺序是:先判断a>b是否为真,如果为真,则执行b>c?1:0,如果b>c为真,则(b>c?1:0)的值为1,从而整个表达式返回1,否则整个表达式返回0;如果a<=b,则表达式返回0。因此功能等价的语句应为if((a>B)&&(b>C))k=1;elsek=0;。

58.B

59.D解析:本题考查for循环语句。x=8,for循环条件为真,8%3=2,不等于0,则if条件表达式为真,执行第一个输出语句,先输出x的值8,然后将x的值减1,此时x=7。然后执行continue语句结束本次循环。执行x--表示式,得x=6,for循环条件为真.6%3=0,则if条件表达式为假,执行第二个输出语句,先将x的值减1得x=5,然后输出x的值5。执行x--表示式,得x=4,for循环条件为真,4%3=1,不等于0,则if条件表达式为真,执行第一个输出语句,先输出x的值4,然后将x的值减1,此时x=3。然后执行continue语句结束本次循环。执行x--表示式,得x=2,for循环条件为真,2%3=2,不等于0,则if条件表达式为真,执行第一个输出语句,先输出x的值2,然后将x的值减1,此时x=1。执行x--表示式,得x=0,for循环条件为假,循环结束。

60.A解析:在switch语句中break语句的作用是退出分支语句,若没有break语句则一直向下执行。本题中首先计算switch后面括号里的表达式a%3,即15%3为0:执行case0:后面的语句“m++;”,m自加1,即m为1;遇到break语句;然后跳出switch语句,所以最后输出的m值为1。所以选项A正确。

61.D【解析】算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。

62.A本题考查一维数组的引用。一维数组表示为数组名[下标],下标可以是整型常量或整型表达式,题目中给出的四个选项,在格式上都是正确的。A选项中,首先进行++i运算,运算的结果为5,而该数组初始化后有效取值范围为m[0]~m[4],m[5]不存在,引用错误。B选项引用的是m[2]中的数值3。C选项先计算m[0]中的数据,得到1,随后计算m[1]中的数值,可得2。D选项先计算m[--i],得到m[3]中的数据4,随后计算m[4]中的数值,可得5。

63.A解析:耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。

[知识拓展]模块的独立程序是评价设计好坏的一个重要标准,衡量软件的模块独立性有两个定性的度量标准。其中内聚性是指一个模块内部各个元素间彼此结合的紧密程度的度最,内聚性是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量,耦合性从整体的角度来度量模块间的联系。

64.A选项A中d0后面的语句只执行了-次匣结束了循环;B选项中条件while(1)永远成立,所以是死循F;C选项中n的值为10,而循环体为空语句,所以while(n)永远为真,进入死循环;D选项中for语句第二个表达式为空,所1以没有判别条件,进入死循环。

65.B

66.B一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。

67.C

\n本题考查函数的调用及参数传递,当执行函数point时,刚开始指针P指向“a”,经过+3,指针p指向“f”,所以最后的输出结果是f。

\n

68.A本题中输入的3个数据2,4,6分别赋值给了x[0[0],x[1][0],x[2][0]。x[o][1]仍为初始时的0,所以打印输出时的结果为A选项。

69.A在面向对象方法中,对象的基本特点包括:标识唯一性、分类性、多态性、封装性、模块独立性好。一致性不属于对象的基本特点,因此本题答案为A)。

70.B

71.B数据库管理系统是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,因此数据库管理系统是数据库系统的核心。

72.D因为a是结构体变量,最后一次输入的值为结构体中的值,即a中的任何一个值都为0。

73.D面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。面向对象方法从对象出发,发展出对象、类、消息、继承等概念。

74.A使用900t0语句会使程序混乱,所以B)错误;一个结构化程序没有必要同时由顺序、分支、循环三种结构组成,所以c)错误;使用三种基本结构构成的程序可以解决任何复杂的问题。所以D)错误。

75.B

76.A\n循环的作用是求行下标从l到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][o]+a[2][1]+a[2][2]=3+4+5+6+0一18。

\n

77.Ac语言中不存在<>运算符,B)错误;%两边必须都是整数(C)错误;x+y不能出现在赋值号的左边,D)错误。

78.CChar类型数据占1个字节。

79.C

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

81.

82.

【解析】要使数组左下半三角元素中的值全部置成0,先要找出数组的下半三角元素,再将其值全部赋值为0。二维数组中下半三角元素的特点为,其列下标小于其行下标。根据这个特点,将二维数组的下半三角元素都赋值为0。

2021-2022年辽宁省大连市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在m叉树中,都为0的结点称为()。

A.兄弟B.树叶C.树根D.分支结点

2.以下与数学表达式“0<x<5且x≠2”不等价的C语言逻辑表达式是()。

A.(0<x<5)&&(x!=2)

B.0<x&&x<5&&x!=2

C.x>0&&x<5&&x!=2

D.(x>0&&x<2)||(x>2&&x<5)

3.若x、y、z、m均为int型变量,则执行下面语句后m的值是()m=1;x=2;y=3;m=(m<x)?m:x;m=(m<y)?m:y;m=(m<y)?m:z;

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

4.数据结构通常是研究数据的及它们之间的联系______。A.存储和逻辑结构B.存储和抽象C.理想和抽象D.理想与逻辑

5.合法的常量是()。A.‘program’B.–e8C.03xD.0xfl

6.栈这种数据结构一般应用在()。

A.递归调用B.子程序调用C.表达式求值D.A,B,C

7.有以下程序:#include<stdio.h>voidf1(char*a,charb){charc;c=*a;*a=b;b=c;}voidf2(chara,charb){charc;c=a;a=b;b=c;}voidf3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}main(){chart1,t2;t1=‘A’;t2=‘B’;f3(&t1,&t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f2(t1,t2);putchar(t1);putchar(t2);t1=‘A’;t2=‘B’;f1(&t1,t2);putchar(t1);putchar(t2);printf(“\n”);}程序运行后的输出结果是()。

A.ABBABBB.BAABBBC.BABABAD.BABAAB

8.

读取二进制文件的函数调用形式为:fread(buffersize,count,fp);,其中buffer代表的是()。

A.一个文件指针,指向待读取的文件

B.一个整型变量,代表待读取的数据的字节数

C.一个内存块的首地址,代表读人数据存放的地址

D.一个内存块的字节数

9.若已知一个栈的进栈序列是1,2,3,,n,其输出序列为p1,p2,p3,?,pn,若p1=n,则pi为()。

A.iB.n-iC.n-i+1D.不确定

10.下面程序的运行结果是

#include<stdio.h>

main()

{inta=28,b;

chars[10],*p;

p=s;

do{b=a%16;

if(b<10)*p=b+48;

else*p=b+55;

p++;a=a/5;}while(a>0);

*p=′\0′;puts(s);}

A.10B.C2C.C51D.\0

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

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

main()

{inta,b,d=25;

a=d/10%9;

b=a&&(-1);

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

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

13.若有语句“typedefstructS{intg;charh;}T;”,则下列叙述中正确的是()。

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

14.

15.判断有向图是否存在回路,利用()方法最佳。

A.求关键路径B.求最短路径C.拓扑排序D.广度优先遍历

16.

17.

18.设有定义:floata=2,b=4,h=3;以下c语言表达式中与代数式(a+B)h计算结果不相符的是()。A.(a+B)*h/2B.(1/2)*(a+B)*hC.(a+B)*h*1/2D.h/2*(a+B)

19.用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队尾结点,则在进行删除操作时()。

A.仅修改队头指针B.仅修改队尾指针C.队头、队尾指针都要修改D.队头,队尾指针都可能要修改

20.有以下函数:

此函数的功能是()。A.比较p和q所指字符串的大小

B.计算p和q所指字符串的长度差

C.将q所指字符串连接到P所指字符串后面

D.将q所指字符串复制到p所指字符串中

二、2.填空题(20题)21.下述函数用于统计一行字符中的单词个数,单词之间用空格分隔。

wordnum(str)

charstr[];

{inti,num=0,word=0;

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

if(【】==)word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

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

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

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

23.诊断和改正程序中错误的工作通常称为【】。

24.数据库系统中实现各种数据管理功能的核心软件称为【】。

25.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

26.关系代数是关系操作语言的一种传统表示方式,它以集合代数为基础,它的运算对象和运算结果均为()。

27.以下程序段的功能是统计链表中结点的个数,其中first为指向第一个结点的指针(链表带头结点)。请在下划线内填入正确内容。

structlink

{chardata;

structlink*next;};

structlink*p,*first;

intc=0;

p=first;

while(【】)

{c++;

p=【】;}

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

intf(inta[],intn)

{if(n>=1)returnf(a,n-1)+a[n-1];

elsereturn0;

}

main()

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

s=f(aa,5);printf("%d\n",s);

}

29.有以下程序段,且变量已正确定义和赋值

for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));

printf("s=%f\n\n",s);

请填空,使下面程序段的功能与之完全相同

s=1.0;k=1;

while(【】){s=s+1.0/(k*(k+1));【】;}

printf("s=%f\n\n",s);

30.下面程序的功能是【】。

doublesub(doublex,inty)

{intn;doublez;

for(n=1,z=x;n<y;n++)z=z*x;

returnz;}

main()

{doublea=2.0,b=4.0,c;

c=sub(a,b);printf("%f",c);}

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

32.有以下程序:

#include<stdio.h>

main()

{charch1,ch2;intn1,n2

ch1=getchar();ch2=getchar();

n1=ch1-'0';n2=n1*10+(ch2-'0');

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

}

程序运行时输入:12<回车>,执行后的输出结果是【】。

33.在数据库理论中,数据物理结构的改变,如存储设备的更换、物理存储的更换、存取方式等都不影响数据库的逻辑结构,从而不引起应用程序的变化,称为【】。

34.性结构中,第一个结点没有前驱结点,其余每个结点有且只有【】个前驱结点;最后一个结点没有后继结点,其余每个结点有且只有【】个后继结点。

35.算法的执行过程中,所需要的存储空间称为算法的【】。

36.注释一般分为序言性注释和______注释。

37.若有如下程序:

#include"stdio.h"

main()

{chars[30];

Strcpy(&S[0],"adc");

Strcpy(&S[1],"def");

strcpy(&S[2],"gh");;

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

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

38.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:

abcl23edf456gh,执行程序后输出:123456。请填空。

#include<stdio.h>

#include<ctype,h>

main()

{chars[80],d[80];inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(【】){d[j]=s[i];j++;}

d[j]='\0';

puts(d);

}

39.实体联系模型是一种常用的高级概念数据模型,而______是实体联系模型中的核心。

40.下面程序的运行结果是【】。

#defineN10

#defines(x)x*x

#definef(x)(x*x)

mam()

{

intil,i2;

i1=1000/s(N);i2=1000/f(N);

printf("%d%d\n",il,i2);

}

三、1.选择题(20题)41.下面程序的输出结果是main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf("%d\n",*(p+2));}

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

42.以下选项中不属于C语言的类型的是

A.signedshortint

B.unsignedlongint

C.unslgnedint

D.longshort

43.有下列二叉树,对此二叉树前序遍历的结果为()。

A.ACBEDGFHB.ABDGCEHFC.HGFEDCBAD.ABCDEFGH

44.应用数据库的主要目的是A.A.解决数据保密问题

B.解决数据完整性问题

C.解决数据共享问题

D.解决数据量大的问题

45.有以下程序:main(){union{unsignedintn;unsignedcharc;}u1;u1.c='A';printf("%c\n",u1.n);}执行后输出结果是()。

A.产生语法错B.随机值C.AD.65

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

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

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

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

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

47.如果需要打开一个已经存在的非空文件"Demo"进行修改,下面选项中正确的是

A.fp=fopen("Demo","r");

B.fp=fopen("Demo","ab+");

C.fp=fopen("Demo","w+");

D.fp=fopen("Demo","r+");

48.C语言中()

A.不能使用do-while语句构成的循环

B.do-while语句构成的循环必须用break语句才能退出

C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环

49.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}运行该程序的输出结果是______。

A.34B.42C.43D.33

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

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

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

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

D.以上3种说法都不对

51.在关系数据库中,用来表示实体之间联系的是

A.树结构B.网结构C.线性表D.二维表

52.结构化程序由三种基本结构组成,三种基本结构组成的算法A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务

53.假定x和y为double型,则表达式x=2,y=x+3/2的值是

A.3.5B.3C.2D.3

54.有以下程序:#include<stdio.h>structSTU{charname[10];intnum;intScore;};main(){structSTUs[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045,537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]=&s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(p[i]->Score>p[j]->Score){t=p[i];p[i]=p[j];p[j]=t;}printf("%d%d\n",s[1].Score,p[1]->Score);}执行后的输出结果是()。

A.550550B.680680C.580550D.580680

55.有如下程序:main(){intx=23;do{printf("%d",x--);}while(!x);}程序运行后的输出结果是()。

A.321B.23C.不输出任何内容D.陷入死循环

56.下列程序段中,不能正确赋值的是

A.char*p,ch;p=&ch;scanf("%c,&p")

B.char*p;p=(char*)malloc(1)scanf("%c",p);

C.char*p*p=getchar();

D.char*p,ch;p=&ch;*p=getchar();

57.以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是______。

A.if(a>b)&&(b>c))k=1;elsek=();

B.if((a>b)||(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b<=c)k=1;

D.if(a>b)k=1;elseif(b>c)k=1;elsek=0;

58.下列程序的输出结果是_____。main(){inti;for(i='A';i<'I';i++)printf("%c",i+32);printf("\n");}

A.编译不通过,无输出B.acegC.acegiD.abcdefghi

59.有以下程序:#include<stdio.h>main(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;}printf("%d,",--x);}}程序的运行结果是()。

A.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,4,2

60.有以下程序:main(){inta=15,b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0;m++;break;}}printf("%d\n",m);}程序运行后的输出结果是()。

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

四、选择题(20题)61.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间

62.若有定义语句:intm[]={1,2,3,4,5},i=4;,则下面对m数组元素的引用中错误的是

A.m[++i]B.m[1*2]

C.m[m[0]]D.m[m[--i]]

63.两个或两个以上模块之间联系的紧密程度称为()。

A.耦合性B.内聚性C.复杂性D.数据传输特性

64.以下不构成无限循环的语句或语句组是()。

65.

66.软件设计中划分模块的一个准则是()。

A.低内聚低耦合B.高内聚低耦合C.低内聚高耦合D.高内聚高耦台

67.

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

char*point(char*pt):

main

{charb[4]={a,c,s,f),*pt=b;

pt=point(pt);

printf("%c\n",*pt);

}

point(char*p)

{p+=3;

returnp;

}

A.sB.cC.fD.a

68.有以下程序:

若运行时输入:246<;回车>;,则输出结果为()。

A.204B.200C.240D.246

69.在面向对象方法中,不属于“对象’’基本特点的是()。A.一致性B.分类性C.多态性D.标识唯一性

70.(17)软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及()

A.阶段性报告

B.需求评审

C.总结

D.都不正确

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

A.数据模型

B.数据库管理系统

C.软件工具

D.数据库

72.

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

unionmyun

{struct

{intx,y,z;)u;

intk:

}a;

main

{a.u.x=4;a.u.y=5;a.u.z=6;

k=0;

printf(%d\n",a.u.x);

}

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

73.下列词语中,不属于面向对象方法的是

A.对象、消息B.继承、多态C.类、封装D.过程调用

74.以下关于结构化程序设计的叙述中正确的是()。A.在C语言中,程序的模块化是利用函数实现的

B.结构化程序使用sotoi吾句会很便捷

C.一个结构化程序必须同时由顺序、分支、循环三种结构组成

D.由三种基本结构构成的程序只能解决小规模的问题

75.

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

main()

{inta[3][3]={{1,2},{3,4),{5,6}},i,j,s=0;

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

for(j=0;j<=i;j++)s+=a[i][j];

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

}

A.18

B.19

C.20

D.21

77.有以下定义:

78.C语言中char类型数据占字节数为()。

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

79.

80.有以下程序:#include〈stdio.h〉voidfun(int*s){staticintj=0;do{s[j]=s[j]+s[j+1];}while(++j<2);}main(){inti.a[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=0;i<5;i++)pfintf(“%d”,a[i]);printf(“\n”);}程序运行后的输出结果是()。A.12345B.23445C.34756D.35745

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

main

{intn;

For(n=3;n<=10;n++)

{if(n%6==0)break;Printf(“%d”,n);}}

六、程序设计题(1题)82.下列程序定义了MM的二维数组,并在主函数中自动赋值。请编写函数proc(inta[][M]),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如,a数组中的值为:

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

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

试题程序:

参考答案

1.B

2.A在C语言里不能直接表达“0<x<5”,需要分步骤来实现,即使用“x>0&&x<5”来描述。在C语言里,“0<x<5”属于一个逻辑运算表达式,可以理解为“(0<x)<5”,因此选项A错误。故本题答案为A选项。

3.A解析:?:运算符首先执行?之前的表达式,如果表达式的值为真,则返回?和:之间的表达式的值,否则返回:之后的表达式的值。本题中m比x和y都要小,所以,3个表达式都没有改变m的值,故应该选择A。

4.A

5.D

6.D

7.B函数f1(*a,b),*a为地址传递,b为值传递,将b值传给*a,则f1(&t1,t2)调用后输出t1、t2为BB。f2(a,b)为值传递,传入的只是a、b的值,不实现交换,则f2(t1,t2)调用后输出t1、t2为AB。f3(*a,*b)为地址传递,可以实现a、b值的交换,则f3(&t1,&t2)调用后输出t1、t2为BA。因此结果为BAABBB。故本题答案为B选项。

8.Cfread函数中的参数buffer是内存块的首地址,输入的数据存入此内存块中。

9.C

10.C解析:考查用字符指针处理字符串的方法。语句'p=s;'是使指针p指向字符数组s。*p则引用了p所指位置的数组元素。通过指针来引用一维数组元素。

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

12.B解析:算术运行符“/”、“%”的优先级处于同一级,并且两者的结合性都是从左到右。所以算术表达式运算过程为:a=25/10%9=2%9=2:当逻辑运算符“&&”两边的

温馨提示

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

评论

0/150

提交评论