2021-2022年湖南省岳阳市全国计算机等级考试C语言程序设计真题二卷(含答案)_第1页
2021-2022年湖南省岳阳市全国计算机等级考试C语言程序设计真题二卷(含答案)_第2页
2021-2022年湖南省岳阳市全国计算机等级考试C语言程序设计真题二卷(含答案)_第3页
2021-2022年湖南省岳阳市全国计算机等级考试C语言程序设计真题二卷(含答案)_第4页
2021-2022年湖南省岳阳市全国计算机等级考试C语言程序设计真题二卷(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年湖南省岳阳市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.

2.某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A.10B.8C.6D.4

3.以下程序的输出结果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147

4.有以下程序#include<stdio.h>main(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII码值为65。程序运行后的输出结果是A.5670B.656667C.567D.ABC

5.若有说明语句:double*p,a;则通过scanf语句正确给输入项读人数据的程序段是()。

A.*p=&a;scanf("%1f”,p);

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

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);

6.若要说明一个类型名STP,使得定义语句STPs;等价于Char*s;,以下选项中正确的是()。

A.typedefChar*s;

B.typedefChar*STP;

C.typedefSTP*Char;

D.typedef*CharSTP;

7.若已包括头文件<string.h>且已有定义chars1[18],s2={"ABCDE"}和inti,现要将字符串"ABCDE"赋给s1,下列语句错误的是()。

A.strcpy(s1,s2)

B.strcpy(s1,"ABCDE");

C.s1="ABCDE";

D.for(i=0;i<6;i++)s1[i]=s2[i];

8.软件生命周期是指()。A.软件产品从提出、实现、使用维护到停止使用退役的过程

B.软件从需求分析、设计、实现到测试完成的过程

C.软件的开发过程

D.软件的运行维护过程

9.若函数中有定义语句:inta;,则()。

A.系统将自动给a赋初值0B.这时a中的值是和随机数C.系统将自动给a赋初值-1D.这a中无任何值

10.

11.在下列几种排序方法中,空间复杂度最高的是()

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

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

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

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

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

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

13.以下关于注释的叙述中错误的是()。

A.注释的边界符号“/”和“*”之间不允许加入空格

B.C语言允许注释出现在程序中任意合适的地方

C.注释的内容仅用于阅读,对程序的运行不起作用

D.注释的边界符号“/*”和“*/”必须成对出现且可以嵌套

14.有以下程序:#include<stdio.h>main(){inti,data;scanf(“%d”,&data);for(i=0;i<8;i++){if(i<=data)continue;printf(“%d,”,i);}}程序运行时输入5并按〈Enter〉键,则程序输出结果为()。

A.5,6,7,B.0,1,2,3,4,C.6,7,D.6,7,8,

15.有以下程序:#include<stdio.h>intfun{staticintx=1;x+=1;returnX;}main{inti,S=1;for(i=1;i<=S;i++)s+=fun;printf("%d\n",s);}程序运行后的输出结果是()。A.11B.21C.6D.120

16.下列程序段的时间复杂度为()。A.O(n)B.O(log2n)C.O(n3)D.O(n2)

17.在学生管理的关系数据库中,存取一个学生信息的数据单位是()。

A.文件B.数据库C.字段D.记录

18.若某链表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用()存储方式最节省运算时间。

A.单链表B.双链表C.单循环链表D.带头结点的双循环链表

19.下面程序的运行结果是()。

A.gaeB.gaC.LanguageD.有语法错

20.若一棵二叉树具有10个出度为2的结点,则在该二叉树中,出度为0的结点个数是()

A.9B.11C.12D.不确定

二、2.填空题(20题)21.性表的顺序存储中,元素之间的逻辑关系是通过【】决定的;性表的链接存储中,元素之间的逻辑关系是通过【】决定的。

22.下列程序执行输出的结果是______。

#include<stdio.h>

f(intA)

{intb=0;

staticc=7;

a=c++;b++;

return(a);

}

main()

{inta=2,i,k;

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

k=f(a++);

printf("%dh",k);

}

23.在关系运算中,【】运算是对两个具有公共属性的关系所进行的运算。

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

structNODE

{inthum;structNODE*next;

};

main()

{structNODEs[3]={{1,'\0'},{2,'\0'},{3,'\0'}},*p,*q,*r;

intsum=0;

s[0].next=s+1;s[1].next=s+2;s[2].next=s;

p=S;q=p->next;r=q->next;

sum+=q=>next->num;sum+=r->next->next->num;

25.以下程序的功能是找出三个字符串中的最大串。

【】

#include<stdio.h>

main()

{inti;

charstring[20],str[3][20];

(i=0;i<3;i++)gets(【】);

if(strcmp(str,str[0],str[1]>0)strcpy(string,str[0]);

elsestrcpy(string,str[1]);

if(strcmp(str[2],string)>【】)srtcpy(string,str[2]);

printf("Thelargeststringis\n%s\n",string);

}

26.x、y、x均为int型变量,描述"x、y和z中至少有两个为正数"的表达式是______。

27.下面程序的功能是将字符串a下标值为偶数的元素由小到大排序,其他元素不变,请填空。

#include<stdio.h>

main()

{chara[]="labchmfye",t;

inti,j;

for(i=0;i<7;i+=2)

for(j=i+2;j<9;【】)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;j++;}

puts(a);

printf("\n");

}

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

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

printf(“%d%d\n”,*p,*q);

}

29.在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块),其中【】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。

30.以下程序的输出结果是_______。

main()

{char*p[]={"BOOL","OPK","H","SP:,};

for(i=3;i>0;i--,i--)printf("%c",*p[i]);

printf("\n");}

31.有以下程序

intfa(intx){returnx*x;}

intfb(intx){retumx*x*x;}

intf(int(*f1)(),int(*f2)(),intx)

{returnf2(x)-f1(x);}

main()

{inti;i=f(fa,fb,2);printf("%d\n",i);}

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

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

#include<stdio.h>

main()

{inta=0;

a+=(a=8);

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

}

33.以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,

否则返回0。请填空。

intisprime(inta)

{inti;

for(i=2;i<=a/2;i++)

if(a%i==0)【】;

【】;

}

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

main()

{inta=10;

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

}

35.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。

36.若a=10,b=20,则表达式!(a<b)的值是【】。

37.函数rewind的作用是

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

#include<conio.h>

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

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

if(i%7==0‖i%11==0)

a[j++]=i;

*n=j;}

main()

{intaa[M],n,k;

clrscr();

fun(10,aa,&n);

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

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");}

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

charstr口="ABCD",*p=str;

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

40.若有语句doublex=17;inty;,当执行y=(int)(x/5)%2;之后y的值为()。

三、1.选择题(20题)41.设intx=1,y=1;表达式(|x‖--y)的值是()。

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

42.对长度为n的线性表进行顺序查找,在最坏的情况下所需要的比较次数为______。

A.log2nB.n/2C.nD.n+l

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

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

44.以下程序的输出结果是(){intx=05;charz='a';printf("%d\n",(x&1)&&(z<'z'));}

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

45.以下程序的输出结果是()main(){charss[16]="test\0\n\"";printf("%d,%d\n",strlen(ss),sizeof(ss)):}

A.4,16B.7,7C.16,16D.4,7

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

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

47.若变量已正确定义,有以下程序段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

48.有关return语句说法不正确的是()。

A.系统默认的返回值类型为整型,故当函数的返回值为int型时,在函数定义时,返回值的类型说明可以省略

B.当函数有返回值时,凡是允许表达式出现的地方,都可以调用该函数

C.当函数没有返回值时,函数的返回值类型可以说明为void型,它表示“无类型”或“空类型”

D.函数的返回值类型必须与return语句中的表达式值的类型一致,但C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将return语句中表达式的值转换为函数的返回值类型

49.要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是()。

A.while((ch=getchar())!='N')printf("%c",ch);

B.while(ch=getchar()!='N')printf("%c",ch);

C.while(ch=getchar()=='N')printf("%c",ch);

D.while((ch=getchar())=='N')printf("%c",ch):

50.能够对计算机的硬件设备进行管理,并使应用软件能够方便、高效地使用这些设备的是()

A.数据库存系统B.操作系统C.编辑软件D.应用软件

51.结构化程序设计主要强调的是

A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性

52.以下不是网络操作系统的是()

A.Windows3.1B.WindowsNTC.NetWareD.UNIX

53.C语言程序的基本单位是______。

A.程序行B.语句C.函数D.字符

54.在下列关于二叉树的叙述中,正确的一项是

A.在二叉树中,任何一个结点的度都是2

B.二叉树的度为2

C.在二叉树中至少有一个结点的度是2

D.一棵二叉树的度可以小于2

55.下列合法的字符型常量是()。

A.'\x13'B.'\081'C.'65'D.\n

56.两次运行下列的程序,如果从键盘上分别输入3和1,则输出结果是()。main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}

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

57.当执行下面的语句定义一维数组a并赋以初值后,此数组的元素中不正确的一个赋值结果是()staticinta[10]={0,1,2,3,4,5};

A.a[2]=1B.a[0]=0C.a[3]=3D.a[9]=0

58.下面程序main(){inta=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));printf("%d%d%d%d\n",k,a,B);}的输出是_______。

A.003B.012C.103D.112

59.设有以下说明语句:typedefstruet{intn;charch[8];}PER;则下面叙述中正确的是()。

A.PER是结构体变量名

B.PER是结构体类型名

C.typedefstruct是结构体类型

D.struct是结构体类型名

60.有以下程序

#include<stdio.h>

main()

{intc;

while((c=getchar())!=′\n)

{switch(c-′2′)

{case0:

case1:putchar(c+4);

case2:putchar(c+4);break;

case3:putchar(c+3);

case4:putchar(c+3);break;}}

printf("\n")}

从第一列开始输入以下数据<CR>代表一个回车符。

2743<CR>

程序的输出结果是

A.66877B.668966C.6677877D.6688766

四、选择题(20题)61.以下选项中,能定义S为合法的结构体变量的是()。

A.

B.

C.

D.

62.若变量已确定义,则以下语句的输出结果是()。

63.若有以下说明,则能打印出”An”的语句的是()。

A.

B.

C.

D.

64.

65.

66.有以下程序(注:字符a的ASCIl码值为97)

#include<stdio.h>

main()

{char*s={"abc")

do

{printf("%d",*S%10");++S;}

while(*s);

}

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

A.abcB.789C.7890D.979899

67.设有定义下列:inta=1,b=2,c=3,d=4,m=2,n=2;则表达式(m=a>b)&&(n=c>d)运算后,n的值是()。

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

68.(25)下面对对象概念描述错误的是()

A.任何对象都必须有继承性

B.对象是属性和方法的封装体

C.对象间的通讯靠消息传递

D.操作是对象的动态性属性

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

char*p1="abcd",*p2="ABCD",str[50]="xyz";

strcpy(str+2,strcat(p1+2,p2+1));

printf("%s",str);

A.xyabcABB.abcABzC.ABabczD.xycdBCD

70.若有定义:charc;doubled;程序运行时输入:12<;回车>;,能把字符1输入给变量c、数值2输入给变量d的输入语句是()。

71.有以下程序:

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

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

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

A.a:=b+1B.a=b=c+2C.int18.5%3D.a:a+7:c+b

73.以下选项中,与k=n++完全等价的表达式是A.k=n,n=n+1B.n=n+1,k=nC.k=++nD.k+=n+1

74.

75.

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

main

{inta;

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

}

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

76.以下程序段中的变量已正确定义:

程序段的输出结果是()。

A.**B.****C.*D.********

77.

78.(33)有以下程序段

inti,n;

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

{n=rand()%5;

switch(n)

{case1:

case3:printf("%d\n",n);break;

case2:

case4:printf("%d\n",n);continue;

case0:exit(0);

}

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

}

以下关于程序段执行情况的叙述,正确的是

A)for循环语句固定执行8次

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

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

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

79.

80.

有下列程序:

main

{charp[]={a,h,c},q[]="a";

printf("%d%d\n".sizeof(P),sizeof(q));

}

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

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

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从高到低的顺序找出前m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

请修改程序中的错误,使它能得出正确的结果。

注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。

试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun(),其功能是删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符串“World”,然后输入3,则调用该函数后的结果为“Word”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#defineLEN20voidfun(chara[],charb[],intn){}voidmain(){ charstr1[LEN],str2[LEN]; intn; system(“CLS”); printf(“Enterthestring:\n”); gets(str1); printf(“Enterthepositionofthestringdeleted:”); scanf(“%d”,&n);fun(str1,str2,n); printf(“Thenewstringis:%s\n”,str2);}

参考答案

1.C

2.C根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。

3.B第一个for循环的作用是让p指向每行的首地址,第二个for循环的作用是把它指向的字符串输出,故选择B选项。

4.C

5.Ddouble*p,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量p;scanf("%If",p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,scanf函数要求在输入double型数据,格式控制符必须用%1f。否则,数据不能正确输入。所以选项D正确。

6.B用关键字typedef声明一种新的类型的形式为typedef类型名标识符。本题中的类型为char*。

7.C解析:数组名s1是代表s1数组首地址的地址常量,而不是变量,因为“=”左边不能出现常量,因此sl='ABCDE'的方法是错误的。

8.A通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。

9.B本题考查变量赋值基本概念。在声明一个变量后,如果未显式的对其进行赋值,则它的值是一个随机值。

10.A

11.A

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

13.D在编写程序时可以在程序中加入注释。在添加注释时,注释内容必须放在符号“/*”和“*/”之间,“/*”和“*/”必须成对出现,“/*”与“*/”之间不可以有空格,选项A正确;注释可以用英文,可以用中文,可以出现在程序中任意合适的地方,选项B正确;注释部分只适用于阅读,对程序的运行不起作用,选项C正确;使用“/*”和“*/”的注释之间不可再嵌套“/*”和“*/”,选项D错误。故本题答案为D选项。

14.Cmain函数首先定义一个整型变量data,使用scanf函数输入一个整数赋给data。接着执行for循环,i的值为0~7。当i的值不大于data的值时,使用continue语句跳过当前循环,进入下一轮循环。若从键盘输入5,data的值为5,i取值为0~5时,都不执行printf语句。当i取值为6、7时,执行printf语句,输出6,7。故本题答案为C选项。

15.B本题考查静态变量,C语言中静态变量的生存期是从程序的开始到结束。本题中静态变量x,随着每次进入循环不断增长5次,返回的值分别为2、3、4、5、6。所以S=1+2+3+4+5+6=21,选B。

16.A

17.D解析:在关系数据表中,行称为元组,对应存储文件中的记录,列称为属性,对应存储文件中的字段,所以本题答案为D。

18.D

19.A考查用指针来引用字符数组元素的方法。指针pl+k相当于指针pl向后移动了k个字符的位置,指针p2同理。

20.B

21.相邻位置邻接指针相邻位置\r\n邻接指针

22.88解析:第1次for循环,i=0,调用函数f(2),然后将a的值加1,在f()函数中,变量c为static类型,所以c=8:第2次for循环,i=1,调用函数f(3),然后将a的值加1,调用函数f(3)时,a=c++8,所以k=8。

23.自然连接自然连接解析:在关系运算中,自然连接运算是对两个具有公共属性的关系所进行的运算。

24.解析:程序通过语句“s[0]next=s+1;s[1].next=s+2;s[2].next=s;”将结构体变量s中各结点连接成了一个循环链表,即最后一个结点的指针域指向了头结点,整个链表形成了一个环,并通过语句“p=s;q=p->next;r=q->next;”将结构体指针变量p、q、r指向了各结点。

25.#include<string.h>str[i]0

26.((x>0)&&(y>0))||((x>0)&&(z>0)||((y>0)&&(z>0))((x>0)&&(y>0))||((x>0)&&(z>0)||((y>0)&&(z>0))解析:题目要求“x、y和z中至少有两个为正数”,即x、y和z这3个数中必须有两个是正数,且这3个数中的哪两个数都有可能是正数,所以它们之间是或的关系。

27.j++a[i]>a[j]或a[j]<a[i]j++\r\na[i]>a[j]或a[j]<a[i]解析:题目要求排序的元素是下标值为偶数的元素,外循环循环4次,i的值分别为0、2、4、6,所以内循环也循环4次,i的值就应为2、4、6、8,在循环体中已经有了对j加1的操作,因此for后括号中的语句应再对j加1,保证下标为偶数。if语句的功能是如果后一个数比前一个数小则交换位置。

28.3535解析:在主函数中通过定义和赋初值使p和q分别指向了x和y,执行函数调用“swap(p,q)”,把p和q中的地址值传给了形参指针变量a和b,a和b分别指向了实参x和y。在函数swap()中交换了指针变量a和b的值,并没有交换a和b指向的实参的值,所以函数调用返回后x和y依然是原来的值。

29.驱动模块驱动模块解析:在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中,驱动模块相当于被测试模块的主程序,它接收测试数据,并传给被测试模块,输出实际测试结果。承接模块通常用于代替被测试模块调用的其他模块,其作用仅做少量的数据操作,是一个模拟子程序,不必将子模块的所有功能带入。

30.

31.44解析:在主函数中调用函数f,函数f有三个参数,形参f1与f2分别是两个指向函数的指针。在f中执行f2(x)-f1(x),实际上是执行了fb(2)-fa(2),故执行i=(fa,fb,2)后i的值为23-22=4。

32.1616解析:本题中a+=8相当于a=a+8。对表达式逐步进行求解:在a+=(a=8)中,首先a被赋值为8,语句等价于a+=8;即a=a+8;结果为a=16。

33.return0return1return0,return1解析:如果a能被i整除,则a是素数,返回值为0。如果a不能被i整除,则a不是素数,返回值为1。

34.a=14a=14解析:逗号表达式的值是以逗号分隔的最后一个表达式的值。所以题目中的语句a=(3*5,a+4);就等价于a=a+4;。故本题输出结果是a=14。

35.输出结果输出结果解析:注意:测试的基本方法和步骤。

36.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。

37.A

38.77解析:解答本题的关键是要读懂程序,要找出能被7或11整除的所有整数,注意数学中的“或”和C语言中的“或”的区别,但在此处,if条件语句中用了“‖”运算符,若要找能同时被7和11整除的所有整数则在if的条件中应使用“&&”运算符。

当然,如果m的值输入50,即表达式fun(10,aa,&n);为fun(50,aa,&n);时输入结果为:711142122283335424449。

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

40.11解析:(int)(x/5)=3,3%2=1。

41.A解析:当逻辑或运算符两边的运算对象至少有一个为1时,整个逻辑表达式的值是1;如果两边的运算对象都为0,则整个逻辑表达式的值为0。题中!x=0,--y=0,所以整个表达式的值是0。

42.C解析:顺序查找的最坏情况是所找的元素性表的最后,因此查找的比较次数是线性表的长度,即n。

43.B解析:a=b=c+2实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。注意:选项A)中包含一个不合法的运算符“:=”;选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,其中第一个是错的,因为C++语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。注意:C++语言赋值语句的运用,

44.B

45.A

46.A解析:条件表达式“a?b:c”的含义是:当a为真时,其值等于表达式b的值;当a为假时,其值等于表达式c的值。

表达式运算过程:第1个表达式:w=2<x=3为真,所以返回w的值,即m=w=2;第2个表达式:m=2<z=5为真,所以返回m的值,即m=2;第3个表达式:w=2<y=4为真,所以返回m的值,即m=2。

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

48.D函数的返回值类型一般与return语句中的表达式值的类型一致,但C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将return语句中表达式的值转换为函数的返回值类型。

49.A解析:因为while是以条件为假时结束循环,因此选项C、D不正确。“!=”的优先级比“=”高,因此“ch=getchar()!='N'”相当于“ch=(getchar!='N')”,ch并不能得到输入的字符,只能得到true或者false值。

50.B

51.D结构化程序设计由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主张“清晰第一,效率第二”,以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,为设计一些较大的软件打下了良好的基础。

由于模块相互独立,因此,在设计其中一个模块时,不会受到其他模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为可以充分利用现有的模块作为积木式的扩展。

结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;“单入口单出口”的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序。

52.A

53.C解析:C语言是一个函数语言,C语言的主体就是一个主函数,然后有库函数和用户自定义的函数来配合主函数完成一系列的任务,所以说,C语言的基本单位是函数。

54.D解析:本题考查了二叉树的基本概念。在二叉树中,叶子节点的度是1;当该二叉树为空树时,根节点的度为零;为非空树时,根节点的度为2。

55.A解析:C语言的字符常量是用单引号(\')括起来的一个字符,也可以用以一个“\\”开头的字符序列来表示字符常量。其中形式\\ddd表示1到3位8进制数所代表的字符;形式\\xhh表示1到2位16进制数所代表的字符。在本题中\'\\x13\'表示回车符,是一个字符常量;而\'\\081\'用8进制数所代表的字符形式不正确,因为8进制数所表示的字符中不会出现数字“8”;\'65\'单引号(即撇号)括起来的不是一个字符,而是一个十进制数字;'\\n'是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。

56.A解析:本题考查ifelse语句。首先scanf函数通过键盘读入x的值。当x=3时,第一个if语句,先判断条件,取x的值3和2比较,然后将x的值加1,发现条件成立,执行下列的printf语句,输出x的值4。当x=1时,第一个if语句,先判断条件,取x的值1和2比较,然后将x的值加1(x的值变为2),发现条件不成立,执行下列的else语句,先输出x的值2,再将x的值减1。

57.A

58.C解析:a++是先使用a值再将a的值加1,b-是先使用b的值再将b的值减1,所以题中的逻辑运算表达式的值应当为真,即为1,而经过运算后,a和b的值已经分别变成0和3了。

59.B解析:本题通过typedef在定义一个结构体类型的同时,把它白定义成类型名PER,故PER是结构体类型名。所以,4个选项中B为所选。

60.A解析:本题主要考查了字符输入输出函数getchar和putchar的使用。getchar函数用来从标准输入设备上读入一个字符,putchar(c)函数是将字符变量c中的字符输出到标准输出设备上,并且字符可以看作整数参与运算。

61.B本题的考查点是结构体变量的定义。定义一个结构体类型的变量,可采用三种方法:

(1)先定义结构体类型再定义变量;

(2)在定义类型的同时定义变量;

(3)直接定义结构体类型变量,.即不出现结构体名。选项B)符合第三种定义方法。

62.As=32^32值为0。

63.Cstr是指针数组,每个元素存放的是指向结构体类型数据的地址,每个元素可看作是一个指针变量,通过结构体指针变量引用结构体变量各成员的形式有两种,一是(*指针变量名).成员名;二是指针变量名->成员名,本题可以是“(*s

温馨提示

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

评论

0/150

提交评论