2021年软考程序员练习题_第1页
2021年软考程序员练习题_第2页
2021年软考程序员练习题_第3页
2021年软考程序员练习题_第4页
2021年软考程序员练习题_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

一、选题题1.二进制语言是属于()

A.面向机器语言

B.面向问题语言

C.面向过程语言

D.面向汇编语言【解析】人们研制了许许多多计算机程序设计语言,其中二进制语言直接来自计算机指令系统,与详细计算机紧密有关,因此是一种面向机器语言。面向问题语言是为了易于描述和求解某类特定领域问题而专门设计一种非过程语言。面向过程语言是一种能以便描述算法过程计算机程序设计语言。有汇编语言,但没有面向汇编语言。汇编语言也是一种面向机器语言,与机器语言比较,汇编语言用有助于记忆符号来代表二进制代码。因此解答是A。

【参照答案】A2.下列语言中不属于面向过程语言是()

A.高档语言

B.低档语言

C.C语言

D.PASCAL语言【解析】C语言和PASCAL等程序设计语言都是高档语言,它们用于描述复杂加工解决过程,因此也称它们是面向过程语言。低档语言是指机器语言和汇编语言,低档语言是面向机器语言,而不是面向问题语言。因此解答是B。

【参照答案】B3.下列字符中属于键盘符号是()

A.\

B.\n

C.\t

D.\b【解析】键盘符号是指键盘上有标记,并能在显示屏上直接以其标记字样显示字符。有许多键盘上有标记符号,它们不是用于直接显示,键入这种字符用于表达特定意义,如惯用回车符。为了能让C程序标记这种符号,程序采用转义字符方式书写这种字符。如'\n'、'\t'、'\b'都不是键盘字符,在C语言中,它们都得用转义字符来表达。只有字符\才是键盘字符。因此解答是A。但在C程序中,反斜杠字符\已特别用作转义字符引导符,它也得用转义字符表达形式书写,将它写成’\\’。

【参照答案】A4.下列字符列中,不是用来表达转义字符是()

A.\\

B.\'

C.074

D.\0【解析】转义字符有三种书写形式:反斜社字符后接上某个规定字符;反斜杠字符后接上13个八进制数字符;反斜社字符和字符X之后接上1至2个十六进制数字符。后两种分别八进制数和十六进制数直接给出字符ASCll代码值。而074是八进制整数,不是转义字.因此解答是C。

【参照答案】C5.不是C语言提供合法核心字是()

A.switch

B.begin

C.case

D.default【解析】因C语言核心字表中没有begin,它不是C语言核心字。因此解答是B。

【参照答案】B6.下列字符列中,能作为单个标记符是()l

A.?a

B.a=2

C.a.3

D.a___3【解析】在C语言中,规定标记符是这样一种字符序列,由英文字母或下线字符开始,后接任1个英文字母、下线字符和数字符构成。因此问题所列字符列只有a_3是标记符,别的都l是标记符,一种是由字符’?’开头、一种中间有字符’=’,另一种有字符’.’。因此解答是D。

【参照答案】D7.在C语言中,下列说法中错误是()

A.函数定义可以分为两个某些:函数阐明某些和函数体

B.主函数可以调用任何非主函数

C.任何非主函数可以调用其他任何非主函数

D.程序可以从任何函数开始执行【解析】每个C函数定义分两某些,函数阐明某些和函数体,因此论述A.是对的论述。C语言中,函数可以递归调用,主函数可以调用程序中任何函数,固然可以调用任何非主教其他函数,因此论述B.是一种对的论述。同样理由,论述C.也是对的。C语言规,C程序只有一种主函数,并总是从主函数开始执行,不能从非主函数开始执行。因此,说程可以从任何函数开始执行是错误。因此解答是D。

【参照答案】D8.下列字符列中,可以作为“字符串常量”是()

A.ABC

B.ABC”

C.’abc’

D.’a’【解析】C程序中,一种字符率常量是表达一种字符序列,书写时,用双引号字符先后括住这个字符序列。因此只有”ABC”是一种对的字符率常量,别的都不是。其中,ABC可作为标记符,字符列’abc’不能出当前C程序中,’a’是一种字符常量。因此解答是B。

【参照答案】B9.在以字节存储字符系统中,’\n’在内存占用字节数是()

A.1

B.2

C.3

D.4【解析】普通来说,一种字符在内存中只占1个字节,’\n’是转义字符,其意义是换行符,它作为一种字符存储,在内存也只占五个字节。因此解答是A。

【参照答案】A10.字符串”XyZ”在内存占用字节数是()

A.3

B.4

C.6

D.8【解析】字符串中每个字符占1个字节,但C程序在存储字符串时,要在最后一种有效字符背面接上1个字符串结束标记符'\0'。这样,存储字符串常量”xyZ”需要4个字节。因此解答是B。

【参照答案】B11.在如下字符列中,合法长整型常数是()

A.OL

B.4962710

C.0.

D.2.1869el0【解析】为表达不同范畴整数,整型数据分短整型、基本型和长整型,并对三种整型内部表达最高位不同理解,又分别提成无符号和带符号两种。若要明确指明一种整数是长整型,必要在整数之后接上字符’L’。因此OL是一种长整型整型常量,而4962710是基本整型数据,而对于用2个字节表达一种基本整型数据系统来说,该整数将因超过范畴而是一种错误整数;0.和2.1869el0都是double型实数。因此解答是A。

【参照答案】A12.一种char型数据,它值在内存中存储是()

A.ASCll代码值

B.BCD代码值

C.内码值

D.十进制代码值【解析】计算机存储字符,普通是存储字符某种代码值。有许各种字符编码办法,最流行是ASCII代码。在C语言中,Char型数据也用ASCII代码表达。因此解答是A。

【参照答案】A13.设变量m,n,a,b,c,d均为以执行(m=a==)||(n=c==d)后,m,n值是()

A.0,0

B.0,1

C.l,0

D.1,1【解析】计算(m=a==b)||(n=c==d)过程是先计算逻辑或左运算分量(m=a==b)值,由于赋位运算符优先级比关系运算符==优先级低,又先计算a==b。因a,b均为0后,因此比较成果值为1。将1赋给变量m,使变量m值变为1。同步这个赋值运算成果也是1,这样逻辑运算左运算分量值为1。由于逻辑或运算左运算分量值为1,按照C语言对逻辑或运算优化计算规定,不再计算逻辑或右运算分量,而直接得到逻辑或运算成果为1。由于逻辑或右运算分量不曾计算过,因此变量n值也不为变化。这样,上述表达式计算后,变量m情为1,变量n值为0。因此解答是C。

【参照答案】C14.设a为5,执行下列计算后,b值不为2是()

A.b=a/2

B.b=6-(--a)

C.b=a%2

D.b=a<3?3:2【解析】因两个整型数据相除,成果是整数,当a值为5时,计算表达式b=a/2后,使b值为2。计算表达式b=6-(--a)是先计算子表达式(--a),先让a值减1变成4,并以减1后a为子表达式成果,因此子表达式成果为4,最后使b值为2。在计算表达式b=a%2时,求余运算a%2成果为1,最后使变量b值为1。计算表达式b=a<3?3:2时,先计算条件表达式a<3?3:2,以2为成果,最后也使变量b值为人因此解答是C。

【参照答案】C15.执行语句“x=(a=3,b=a--);”后,X,a,b值依次为()

A.3,3,2

B.2,3,2

C.3,2,3

D.2,3,3【解析】计算表达式x=(a=3,b=a--)时,先计算赋值号右端圆括号内逗号表达式。远号表达式规定各子表达式顺序计算,并以最后予表达式值为整个逗号表达式成果。因此该表达式计算时,先让变量a值为3,a--值是a当时值,以该值为成果赋给变量b,并以该值为远号表达式值赋给变量x,然后a值被减少1。因此计算该表达式后,使变量x,a,b值依次为3,2,3。因此解答是C。

【参照答案】C16.设整型变量m,n,a,b,c,d均为1,执行“(m=a>b)&&(n=a>b)"后m,n值是()

A.0,0

B.0,l

C.1,0

D.1,l【解析】表达式(m=a>b)&&(n=a>b)是一种逻辑表达式,它计算过程是先计算逻辑与左分量(m=a>b,其中又是先计算a>b。因a>b不成立,成果为0,将0赋给变量m,最后逻辑与左分量成果为0。由于逻辑运算采用特别优化计算规则,当逻辑与左分量成果为0时,不再计算逻辑与右分量,而直接以0为逻辑与成果。因此,上述表达式计算使m值变为0,而n值没有变,仍旧为l。因此解答是B。

【参照答案】B17.

设有代码“inta=3;”,则执行了语句“a+=a-=a*a;”后,变量a值是()

A.3

B.0

C.9

D.-12【解析】由于赋值运算符结合性自右至左,语句“a+=a-=a*a;”执行是先计算a*a,得到值9,再计算a-=a*a,使a值为-6,接着计算a+=a,使a值为-12。因此解答是D。

【参照答案】D18.在如下一组运算符中,优先级最高运算符是()

A.<=

B.=

C.%

D.&&【解析】常规运算符优先级自高到低排列顺序是算术运算符、移位运算符、关系运算符。按位运算符、逻辑运算符、条件运算符、赋值运算符、逗号运算符。因此问题所给四个运算符按优先级自高到低排列顺序是%,<=,&&,=。因此解答是C。

【参照答案】C19.设整型变量i值为3,则计算表达式i---i后表达式值为()

A.0

B.l

C.2

D.表达式出错【解析】有些运算符只有一种字符,也有许多运算符由两个字符构成。特别是有些字符既可是单个字符运算符,又能构成双字符运算符。编译系统在辨认源程序时,普通是尽量多地读八字符,能构成多字符单词先尽量构成多字符单词。因此表达式i---i,被编译器理解为(i--)-i。此外,当表达式中某变量有后缀自增和自减运算时,先按变量原值计算表达式,然后再对变量进行自增和自减运算。同样地,当表达式中某变量有前缀自增和自减运算时,先对变量进行自增和自减运算,然后再按变量新值计算表达式。按这个商定,求表达式(i--)-i是计算i-i值为0,然后再对i作自减运算。这样,表达式(i--)-i值为0。因此解答是A。

【参照答案】A20.设整型变量a、b、c均为2,表达式a+++b+++c++成果是()

A.6

B.9

C.8

D.表达式出错【解析】与上一小题解答理由相似,表达式a+++b+++c++被系统理解成:((a++)+(b++))+c++)。表达式“变量++”值是变量本来值,因此在变量a、b.c均为2前题下,执行上述表达式,得到成果为6。因此解答是A。

【参照答案】A21.若已定义x和y为double类型,则表达式:x=l,y=x+3/2成果是()

A.l

B.2

C.2.0

D.2.5【解析】由于变量x和y都是double类型,表达式x=l,y=x+3/2是先计算x=1,由于1是整型,x是double类型,该计算先将整数1转换成double类型1.0,并将1.0赋给变量x。计算y=X+3/2是先求3/2值,因是两整数相除,成果是整型值1,然后在计算X+1时,也先将1转换成1.0,然后求得X+l值为2.0,最后将该值赋给变量y,并得到整个表达式值为2.0.因此解答是C。

【参照答案】C22.设a为整型变量,下列C表达式中,不能表达数学关系式:10<a<15是()

A.10<a<15

B.a==11||a==12||a==13||a==14

C.a>10&&a<15

D.!(a<=10)&&!(a>=15)【解析】数学关系式10<a<15表达。只能是11,12,13,14四个值之l。用C表达式表达这个条件,可写成a>10&&a<15,或!(a<=10)&&!(a>=15),或a==11||a==12||a==13||a==14等。若写成10<a<15,该算式计算顺序是先求出10<a成果0或1,然后以这个成果与15比较,与否不大于15,显然这与数学式子意义是不一致。因此解答是A。

【参照答案】A23.下列表达式中,对的C赋值表达式是()

A.a=7+b+C=a+7

B.C=7+b++=a+7

C.a=(7+b,b++,a+7)

D.a=7+b,c=a+7【解析】赋值运算符是运算符之一,赋值运算也可以出当前普通表达式中。赋值运算时,出当前赋值运算符左边表达式应当是引用一种存储对象,例如变量。不可以是一种数值计算表达式。如表达式a=7+b+c=a+7因算术运算符比赋值运算符优先级高,要把a+7成果赋给7+b+c,这是错误。同样理由,表达式a=7+b++=a+7也是错误。而表达式a=(7+b,b++,a+7)就是对的赋值表达式,它是先计算赋值号左边括号内表达式,括号表达式内是一种逗号表达式,远号表达式规定顺序逐个计算各子表达式,并以最后一种子表达式值作为远号表达式成果,最后将该成果赋给变量a。而表达式a=7+b,c=a+7则不是一种赋值表达式,而是一种逗号表达式,它由两个赋值子表达式构成。因此解答是C。

【参照答案】C24.若有如下定义:chara;intb;floatc;doubled;则表达式a*b+d-c值类型为()

A.float

B.int

C.char

D.double【解析】基本类型数据可以混合运算,但运算时,对规定运算分量类型相似运算来说,如运算分量类型不是全相似,则会有自动类型转换发生。类型自动转换规则规定类型低(简朴)向类型高(复杂)转换。各类型由高到低排列顺序是:longdouble、float、unsignedlong、long、unsignedint、int这样,若有定义:chara;intb;floatc;doubled;则表达式a*b+d-c值类型是double。一方面计算a*b,得到int类型值,接着计算a*b+d,得到double类型值,最后计算a*b+d-c,得到double类型值。因此解答是D。

【参照答案】D25.表达式“9!=7”值是()

A.true

B.非0值

C.0

D.1【解析】关系运算成果只有0和1,若关系成立,则成果为1;若关系不成立,则成果为0。因关系式9!=7成立,因此表达式成果为1。虽然1也是非0值,在供选取答案中有1,因此最确切解答是D。

【参照答案】D26.用十进制数表达表达式“12|012”运算成果是()

A.1

B.0

C.14

D.16【解析】按位运算将运算分量视作二进位位申信息,对两运算分量相应位进行运算,产生H进位位串信息成果。整数12最低8位二进位是00001100,整数012是八进制数,它最低8位二进位是00001010。这两个二进位位串信息按位或运算,得到成果是00001110,相应十进制数14,八进制数是016。因此解答是C。

【参照答案】C27.设字符型变量a=3,b=6,计算表达式C=(a^b)<<2后C二进制值是()

A.00011100

B.00000111

C.00000001

D.00010100【解析】a值为3,写成8位二进制数形式是00000011,b值为6,写成8位二进制数形式是00000110。表达式c=(a^b)<<2,先计算a与b按位加,得到成果00000101,将这成果向左移2位,得到二进位位串信息是00010100。因此解答是D。

【参照答案】D28.设a,b和c都是int型变量,且a=3,b=4,c=5,则下面表达式中值为0是()

A.’a’&&b’

B.a<=b

C.a||b+c&&b-c

D.!((a<b)&&!c||1)【解析】对于表达式’a’&&’b,两个非O运算分量逻辑与成果为1。对于表达式a<=b,由于关系式成立,成果也为此又由于变量a为非0,表达式a||b+c&&b-c成果也为1。对于表达式!((a<b)&&!c||1),先是计算(a<b)得到成果1;计算!C得到成果为0;再计算它们逻辑与,成果为0。继续与1求逻辑或,得到成果为1。最后,对1求逻辑非,得到成果为0。因此解答是A。

【参照答案】A29.设Ch是Char型变量,其值为’A’,则下面表达式值是()

ch=(ch>=’A’&&ch<=’Z’)?(ch+32):ch

A.’A’

B.’a’

C.’Z’

D.’z’【解析】由于字符型变量ch值为’A’,计算表达式ch=h>=’A’&&ch<=’Z’)?(ch+32):ch,先计算其中条件表达式,由于条件(ch>=’A&&h<=’Z’)成立,该条件表达式以ch+32=97为成果,将该值赋给变量ch,以字符表达这个值为’a’。因此解答是B。

【参照答案】B30.设有无符号短整型变量i、j、k,i值为013,j值为OX13。计算表达式“k=~i|j>>3”后,k值是()

A.06

B.0177776

C.066

D.0177766【解析】将变量i八进制数值013写成二进制形式为00001011,将变量j十六进制值oxl3写成二进制数形式为00010011。表达式k=~i|j>>3计算过程是先求~i,成果用八进制代码表达为0177764;接着计算j>>3,成果为02。对它们进行按位或运算成果为0177766。因此解答是D。

【参照答案】D31.设a=3,b=4执厅‘printf(”%d,%d’,(a,b)(b,a));”输出是()

A.3,4

B.4,3

C.3,3

D.4,4【解析】在调用格式输出函数语句中,其中每个格式符相应一种输出项,格式符d规定输出项内容以十进制整数形式输出。第一种输出项(a,b)是一种逗号表达式,该表达式值是b值,输出4。接着输出字符逗号。第二个输出项(b,a)值是a值,输出3。因此语句执行将输出4,3。

【参照答案】C32.使用“Scanf("X=%f,y=%f",&x,&y)”,要使X,y均为1.25,对的输入是()

A.1.25,1.25

B.1.251.25

C.x=1.25,y=1.25

D.X=1.25y=1.25【解析】格式输入函数格式字符串中字符可以提成三类:空格类字符、其他普通字符和格式转换阐明。其中空格类字符用来跳过一种空格类字符序列,直至下一种非空格类字符。普通字符规定输入字符与其完全相似。格式转换阐明对输入字符列按格式转换阐明进行转换,得到内部值存储到相应输入项所指定存储位置中。函数调用scanf(“x=%f,y=%f,&x,&y)以普通字符X=开头,输入时也要先输入X=。接着是一种浮点数输入格式,所有能构成一种浮点数1.25字符序列都能满足规定。接着是普通字符列“,y=”,在输入浮点数之后也要有字符列“,y=”。最后又是浮点数输入格式,同样所有能构成一种浮点数1.25字符序列都能满足规定。问题给出供选取答案中只有x=1.25,y=1.25是能满足上述规定。因此对的选取是C。

【参照答案】C33.设有inti=010,j=10;则执行“printf("%d,%d\n",++i,j--);”输出是()

A.ll,

10

B.9,10

C.010,9

D.10,9【解析】变量i和j初值分别为八进制数010和十进制数10,函数调用Printf(“%d,%d\n”,++i,j--)中,++i值是变量i增1后值,本来值是八进制数010,等于十进制数8,输出9。j--值是变量j减1之前值,输出10。格式字符申中逗号是普通字符照原样输出。因此问题给出格式输出函数调用将输出9,10。对的解答是B。

【参照答案】B34.设a,b为字符型变量,执行"scanf("a=%c,b=%c",&a,&b)"后使a为'A',b为'B',从键盘上对的输入是()

A.’A”B’

B.’A’,’B’

C.A=A,B=B

D.a=Ab=B【解析】函数调用scanf("c=%c,b=%c",&c,&b)中,普通字符必要按格式字符串规定照原样输入,c格式对紧接任何字符都输入。因此实现问题规定,输入字符列应为“a=A,b=B”。此外要特别指出,在程序中,为表达字符常量,字符先后需加单引号。但用字符格式输入字符时,在要输入字符先后不必另键人单引号。若键人单引号,则这个单引号也将作为字符被输入。对的解答是D。

【参照答案】D35.设X、y、Z、t均为int型变量,则执行如下语句后,t值为()

x=y=z=1;t=++x||++y&&++z;

A.不定值

B.2

C.l

D.0【解析】语句序列“x=y=z=l;t=++x||++y&&++z;”使变量x值为1,变量t是赋一种逻辑表达式值。在C语言中,由逻辑与和逻辑或构成逻辑表达式有特别计算规则,顺序计算各逻辑子表达式,并当一旦能得到逻辑表达式成果时,就及时结束逻辑表达式计算,不再计算后继逻辑子表达式。本题逻辑表达式是两个运算分量逻辑或,并且左运算分量++X值为非0,及时得到逻辑或运算成果为1,并将1赋给变量t,因此变量t值为1。对的解答为C。

【参照答案】C36.设x、y、z均为int型变量,则执行如下语句后,x、y,z值为()

X=1;y=0;Z=2;y++&&++Z||++X;

A.2、l、3

B.2、0、3

C.2、l、3

D.2、1、2【解析】语句序列“x=l;y=0;z=2;y++&&++z||++x;”先使变量x值为1,变量y值为0,变量Z值为2。由逻辑与和逻辑或构成逻辑表达式特别计算规则,顺序计算各逻辑子表达式,并当一旦能得到逻辑子表达式成果时,就及时结束逻辑子表达式计算,不再计算该逻辑子表达式。计算y++因y值为0,使y++&&++z成果为0,及时去计算++X,这次计算使变量y值变成1,而变量Z值本变化。接着计算++X,使X值变为2。因此经上述语句执行后,X、y、Z值依次为2、1、Z。确解答为D。

【参照答案】D37.假定所有变量均已正拟定义,下列程序段运营后X值是()

a=b=c=0;x=35;

if(!a)x--;elseif(b);if(c)x=3;elsex=4;

A.34

B.4

C.35

D.3【解析】以变量a,b,c值均为0,变量x值为35,语句:

if(!a)x--;elseif(b);if(c)x=3;elsex=4;

由两个证语句构成。一方面执行前一种if语句“if(!a)x--;elseif(b);”,因变量a值为0,条件!a成立,执行x--使x值变为34。接着执行后继if语句“if(c)x=3;elseX=4;”,因变量c值为0,条件不成立而执行X=4,最后使变量X值为4。对的解答是B。

注意前一种if语句else某些成分语句只有“if(b);”,这是一种单分支if语句,且其成分语句为空语句。

【参照答案】B38.下面程序段所示数学函数关系是()

y=-l;

if(x!=0)if(x>0)y=l;elsey=0;

1(x<0)1(x<0)

A.y={0(x=0)

B.y={-l(X=0)

1(X>0)0(X>0)

o(X<0)-l(X<0)

C.y={-1(x=0)

D.y={1(X=0)

1(X>0)0(X>0)【解析】程序段一方面置变量y值为一l,接着按变量x值不同状况重置变量y值。重置首要条件是x!=0,若变量x值为0,则不再重置变量y值,因此在X值为0状况下,y值是-l。在变量X值不等于0条件下,若X值不不大于0,重置变量y值为1;若变量X值不大于0,重置变量y值为0。因此程序段实现当变量x值为0时,变量y值为-1;当变量X值不不大于0时,置变量y值为1;当变量X值不大于0时,置变量y值为0。对的解答为C。

【参照答案】C39.下列语句中,句法错误是(不考虑语义)()

A.while(x=y)5;

B.dox++while(x==10);

C.while(0);

D.do2;while(a==b);【解析】while语句普通形式是:

while(表达式)语句

这里表达式可以是任何合理表达式,语句可以是任何语句,涉及空语句,或表达式语句。也许书写while语句没有任何意义,如供选取A.while(x=y)5;和C.while(0);,但这两个语句句法没有任何错误。do-While语句普通形式是:

do语句while(表达式);

其中成分语句也可以是任何语句,但供选取答案B.dox++while(x==10);中代码x++是一种表达式,不是语句,因此是错误。对的解答是B。

【参照答案】B40.若i、j已定义为int类型,则如下程序段中内循环体执行次数是()

for(i=5;i;i--)

for(j=0;j<4;j++){……}

A.20

B.24

C.25

D.30【解析】问题所给程序段外循环是一种阶循环语句,它初始化某些置变量i初值为5,循环条件简写成i,即i!=0,每次循环后变量i值减1。因此外循环共控制5次循环。内循环也是一种for循环语句,它初始化某些置变量j初值为0,循环条件是j<4,每次循环后变量j值增1。因此内循环共控制4次循环。这样,如内循环体内未曾对变量i和j有修改,在内、外循环一起控制下,内循环体共被重复执行20次。对的解答是A。

【参照答案】A41.假定a和b为int型变量,则执行如下语句后b值为()

a=1;b=10;

dob-=a;a++;

}while<(b--<0);

A.9

B.-2

C.-1

D.8【解析】在这个程序段中,循环开始前变量a值为1,b值为10,每次循环从变量b减去a,并让a增1,并在循环条件鉴定期,又让b减去1。第一次循环后,变量b值变成9,变量a值变为2,循环判断时,因b值不不大于0,循环条件不成立,结束循环。但在循环判断时,让b减去了1,因此循环结束时,变量b值为8。对的解答是D。

【参照答案】D42.设x和y为int型变量,则执行下面循环后,y值为()

for(y=l,x=l;y<=50;y++){

if(x>=10)break;

if(x%2==1){x+=5;continue;}

X-=3;

}

A.2

B.4

C.6

D.8【解析】for循环语句初始化某些置变量x和y初值为1,循环条件是(y<=50),每次循环后变量y值增1,控制循环最多执行50次。循环体有三个语句:一方面在发现变量X值不不大于等于10时,结束循环;接着是当变量X除2余数为1(即变量X是奇数)时,让变量X值增5,让X变成偶数,并直接进入下一轮循环;如变量X是偶数,则从变量X减去3,让变量X变成奇数。由上述分析知,每两次循环使变量X值增长2.第一次循环后,变量X值变成6。第二次循环后,变量X值变成3。第三次循环后,变量X位变成8。第四次循环后,变量X值变成5。第五次循环后,变量X值变成10。第六次循环时,因变量X位不不大于等于10,直接跳出循环,这次循环是非正常结束,对变量y修正只执行了5次。因此循环结束后,变量y值增至6。对的解答是C。

【参照答案】C43.在C语言中,下列说法中对的是()

A.不能使用“do语句while(条件)”循环

B.“do语句While(条件)”循环中必要使用“break”语句退出循环

C.“do语句while(条件)”循环中,当条件非0时将结束循环

D.“do语句while(条件)”循环中,当条件为0时将结束循环【解析】do-while语句普通形式是:

do语句

while(表达式);

其语义是重复执行其成分语句,直至表达条件表达式值为0时结束。do-while语句是正常使用一种循环构造之一。do-while语句循环结束条件由while后表达式值为0所控制,并不一定要有break语句跳出循环来结束循环。do-while语句在条件值非0时,将继续循环,而不是结束循环。条件值为0时,才结束循环。因此对的选取是D。

【参照答案】D44.若有如下程序段,W和k都是整型变量,则不能与该程序段等价循环语句是()

W=k;

LB:if(w==0)gotOLE;

w--;

printf("*");

gotoLB;

LE:

A.for(w=k;w!=0;W--)printf("*");

B.w=k;

While(W--!=0)Prinif(”*”);

C.w=k;

do{w--;prinif(“*”);

}while(W!=0);

D.for(w=k;W;--W)printf("*");【解析】问题所给出程序段用goto语句构造一种循环控制构造,该循环构造初值是让变量W值为k值,循环结束条件是W情等于0,循环体是让变量W值减1,并输出一种字符*。上述循环控制过程用for循环可描述如下:

for=(w=k;W!=0;W--)printh("*");

或写成:

for(w=k;w;--w)printf("*");

若用while语句,可描述如下:

W=k;

while(w--!=0)printf("*");

w++;/*在w等于0时,也执行了一次w--,这里是对w最后减1补尝*/

或更直观地写成:

W=k;

while(w!=0){w--;Printf("*");}

若用do-while语句,可描述如下:

W=k;

if(W)

do{

w--;prinif("*");

}while(w);

若写成:

W=k;

do{

W--;printf("*");

}while(w!=0);

是不对的,由于原代码当k值为0时,不输出字符*,而上面改写,当k值为0时,将输出许许多多字符*。因此解答应是C。

【参照答案】C45.若有下列阐明,则数值为4表达式是()

inta[12]={l,2,3,4,5,6,7,8,9,10,11,12};

charc='a',d,g;

A.a[g-c]

B.a[4]

C.a['d'-'c']

D.a['d'-c]【解析】数组元素下标自0开始顺序编号,值为4元素是a[3]。因此只有下标表达式值为3才是对的。下标表达式g-C中变量g和c值是尚未被设定,其值不拟定。a[4]值为5,下标为4是不对。'd'-'c'值为1,a[l]值是2,因此也是不对。变量c值为'a','d'-c=3,因此对的解答是D。

【参照答案】D46.设有定义:"chars[12]={"string"};"则printf("%d\n",strlen(s));输出是()

A.6

B.7

C.11

D.12【解析】在C语言中,字符串是指在有效字符之后有字符率结束标记符字符列,并商定字符串长度是指字符率中有效字符个数,不涉及字符串结束标记符。存储于字符数组s中字符串是“string”,该字符串长度为6,因此输出该字符串长度应是6。对的解答是A。

【参照答案】A47.下列语句中,对的是()

A.chara[3][]={'abc",'1'};

B.chara[][3]={'abc','l'};

C.chara[3][]={'a',"1"};

D.chara[][3]={"a","1"};【解析】如定义数组时有初始化,其最高维长度可以省缺,由系统依照初始化时初值个数拟定,而其他维长度是不可以缺省。对二维字符数组初始化,可以按行用字符串对其初始化,也可以按二维数组元素存储顺序逐个用字符对其元素初始化。在供选取解答A.和C.中,有不是最高维长度被缺省,因此是错误。在供选取解答A.和B.中,还将字符串常量写作'abc',这也是错误。只有D.,用字符率按行给二维字符数组初始化,这才是对的。对的构解答是D。

【参照答案】D48.合法数组定义是()

A.inta[]={"string"}

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

C.chara={"string"}

D.chara[]={0,1,2,3,4,5};【解析】A.错误因素是整数数组不可以用字符串对其初始化。B.错误因素是,数组初始化时,初始化指定值个数多于数组元素个数。C.错误因素是,能用字符串初始化只;有字符指针变量,或字符数组。字符率不能对其他类型变量初始化,涉及字符变量。D是对的,由于字符数组可以用小整数(作为字符ASCII代码值)对其元素初始化。

【参照答案】D49.语句"printf("%d\n"strlen("ats\nol2\1\\"));"输出成果是()

A.11

B.10

C.9

D.8【解析】字符串中字符可以是普通普通字符,也可以是由反斜杠字符开头转义字符。在字符串"abs\no12\11\\"中,有三个转义字符,它们是\n、\1、\\,因此该字符串有效字符个数是9。因此对的回答是C。

【参照答案】C50.函数调用“strcat(strcpy(strl,str2),str3)”功能是()

A.将字符串strl复制到字符串str2中后再连接到字符串str3之后

B.将字符串strl连接到字符串str2中后再复制到字符率str3之后

C.将字符串str2复制到字符串strl中后再将字符串str3连接到字符串strl之后

D.将字符串str2连接到字符率strl之后再将字符串strl复制到字符串str3中【解析】函数调用strcat(s1,s2)是将s2字符串复制连接到s1字符串之后,使s1字符串变得更长。函数调用strcpy(s1,s2)是将s2字符串复制到s1,使s1字符串内容与s2字符串内容相似。函数调用strcat(strcpy(strl,str2),str3)是先执行strcpy(strl,str2),然后再执行strcat(strl,str3),因此其功能是将字符串str2复制到字符串strl中,然后再将字符串str3复制连接到字符串strl之后。对的选取是C。

【参照答案】C51.设有如下定义,则对的论述为()

charx[]={"abcdefg"};

chary[]={'a','b','c','d','e','f','g'};

A.数组x和数组y等价

B.数组x和数组y长度相似

C.数组X长度不不大于数组y长度

D.数组X长度不大于数组y长度【解析】不指定数组长度字符数组定义,其所需要字节数可由初始化中给出值个数拟定。字符数组可以用字符串初始化,也可用字符逐个给字符数组元素初始化。但用字符初始化时,尽管给出了字符串中所有字符,还是不会自动有字符率结束字符。但字符串初始化自动会具有字符串结束标记符,字符串初始化所需要字节个数会比用同样多字符初始化多1个字节。因此只有C才是对的。

【参照答案】C52.

循环语句“for(x=0,y=0;(y!=123)||(x<4);x++);”循环执行()

A.无限次

B.不拟定次

C.4次

D.3次【解析】for循环语句初始化某些置变量x和y初值为0,循环条件是(y!=123)||(x<4),每次循环后变量X值增1。由于循环过程中变量y值本被修改过,循环条件又是一种逻辑或,其左分量(y!=123)永远成立,也就是循环条件永远成立。因此该循环语句将循环执行无限次。对的解答是A。

【参照答案】A53.在计算机上可以直接运营程序是写()

A.高档语言程序

B.汇编语言程序

C.机器语言程序

D.C语言源程序【解析】C语言源程序就是高档语言程序,都需要通过编译程序翻译成二进制目的程序才干执行;汇编语言源程序也需要通过汇编程序翻译成二进制目的程序才干执行。二进制目程序就是机器语言程序,可以在计算机上直接运营。

【参照答案】C54.下列符号串中,合法C语言标记将是()

A._121

B.121_

C.a.121

D.#121【解析】分析备选答案A:是下划线开头数字串,符合C语言关于标记符构成规则“字母、下划线开头字母、数字、下划线构成一串符号”,因此该答案是对的,符合题意至于备选答案B:是以数字开头,不是标记符;备选答案C:具有非法符号“.”;备选答赛D:具有非法符号“#”,这三个答案都是错误,不符合题意。

【参照答案】A55.下列符号串中,合法十进制整型常量是()

A.09876

B.0x9876

C.9.876*e4

D.-9876【解析】分析备选答案A:是数字“0”开头数字率,是人进制整型常量,并且其中浮现了数字“8”和“9”,是错误八进制常量,不符合题意。备选答案B:是“0x”开头数字率,是十六进制整型常量,不符合题意。备选答案C:浮现了小数点“.”。运算符“*”及“e”符号,是错误常量,不符合题意。至于备选答案D:是对的整型十进制常量,因此本题应选答案D。

【参照答案】D56.设关于变量已经正拟定义并赋值,则下列表达式中符合C语言语法规则是()

A.a_=\12

B.a_1=a_2+=12

C.int13.5%2

D.a=b+7=C-2【解析】分析备选答案A:这个表达式中浮现了两个运算符“=”和“\”,后一种运算符是双目中缀,但是其前面没有运算对象,因此语法上是错误。分析备选答案B:这个表达式中浮现了两个运算符“=”和“+=”.从结合性来说,是自右向左,因此该表达式相称于“a_1=(a_2+=12)”,先计算“a_2+=12”,相称于“a_2=a_2+12”,再计算“a_1=(a_2+=12)”,因此该表达式语法是对的,符合题意。至于备选答案C,加在表达式前面int需要有圆括号,表达对表达式值强制转换,此外“%”运算符一种运算对象是实型,也是错误。备选答案D类似于备选答案B,但是第2个赋值运算符左边是表达式“b+7”,不是变量,不符合赋值运算符语法规定,是错误。

【参照答案】B57.若整型变量x值为8,则下列表达式中值为1表达式是()

A.x+=x-=x=x

B.x%=x-1

C.x%=x%=3

D.x/=x+x【解析】计算备选答案A:先做“x=x*x”,成果x为64,该表达式值为64;再做“x=x-64”成果x为0,该表达式值为0;最后计算“x=x+0”,成果x为0,整个表达式值为0,不符合题意。计算备选答案B:相称于计算“x=x%(x-1)”,成果为x=8%7=1,整个表达式值为1,因此该答案符合题意,本题答案应选B。至于备选答案C:先算“x=x%3”,成果x=2,该表达式值为2,再计算“x=x%2”,成果x为0,整个表达式值为0。备选答案D:相称于计算“x=x/(x+x)”,成果为x=8/(8+8),成果x为0,整个表达式值为0。

【参照答案】B58.字符串"m\x43\\\np\102q"长度是()

A.7

B.9

C.15

D.16【解析】字符串长度等于其中有效字符(不含字符率结束标记符)数目。本题给出字符串中具有转义字符,一种转义字符相称于单个字符。按照这个规则,本题中给出字符串中具有字符如下:

'm''\x43''\\''\n''p''\102''q'字符串中具有7个有效字符,因此本题答案应选A。

【参照答案】A59.设有定义语句“inta=10,*p=&a;”,则表达式“a十*p”值是()

A.10

B.20

C.100

D.语法出错【解析】在数据定义语句中“*p=&a”,表达指针变量p已经指向变量a,因此表达式中“*p”就是变量a,“a+*p”就是“a+a”,因此该表达式值为20。本题答案应选B。

【参照答案】B60.若有定义语句“intx,*p=&x,**ppx=&px;”,则下列表达式中错误是()

A.x=*px

B.x=**ppx

C.px=&ppx

D.*ppx=&x【解析】分析备选答案A:“*px”,就是x,因此该表达式为“x=x”,是对的,不符合题意分析备选答案B:"**ppx",就是"*(*ppx)=*px=x",因此该表达式为"X=X",是对的,不符合题意.分析备选答案C:px是一级指针变量,其中只能存储变量或数组元素地址,不能存储其她一级指针变量或二级指针变量地址,而"&ppx"是二级指针变量ppx地址,因此该表达式是错误,本题答案应选C.至于备选答案D:"*ppx"就是px,将变量x地址赋予px,固然是对的。

【参照答案】C61.如果某个函数在定义时,省略了存储类型,则默认存储类型是()

A.auto

B.void

C.extern

D.static【解析】C语言规定,函数存储类型只能选用static或extern。前者表达本函数只能在本编。译单位中被调用;后者表达本函数可以被其她编译单位调用。如果省略了存储类型符,则系统默以为是“extern”型,因此本题答案应选C。

【参照答案】C62.能正拟定义一种用来指向打开文献文献型指针变量fp语句是()

A.filefp;

B.file*fp;

C.FILEfp;

D.FILE*fp;【解析】"file”是在头函数“stdio.h"冲定义文献构造型顾客自定义数据类型符,这个顾客自定义数据类型符是大写字母构成,因此备选答案A山是错误。文献型指针变量在定义时,变量名前面必要有“*”,因此备选答案C也是错误,本题应选答案D。

【参照答案】D63.存储整型数据-7856时,在二进制文献和文本文献中占用字节数分别是()

A.2和2

B.2和5

C.5和5

D.5和2【解析】二进制文献中存储数据是二进制形式,对于“-7856”来说,是一种带符号短整型数据,C语言规定短整型数据占用字节数是2,因此在二进制文献中该数据占用2个字节;对文本文献来说,存储数据是按照每位数字相应ASCII代码值存储,对于“-7856”来说,其中“-”号要占1个字节;4位整数要占4个字节,共计占用5个字节。因此本题答案应选B。

【参照答案】B64.设有数据定义语句“charstring1[10]="ABCDE",string2[10]="xyz";”,则执行句“printf("%d",strlen(strcpy(string1,string2)));后输出成果是()

A.9

B.8

C.5

D.3【解析】输出语句中格式控制符是“%d”,即输出成果是一种整数。再来分析输出表达式:strlen(strcpy(stringl,string2)),这是测试某个字符串长度。而被测试字符串是:strcpy(string1,string2),这是将“string2”冲存储字符率复制到string1中,因此最后测试字符串是复制到string1中string2中原字符率。该字符率就是"xyz",其长度为3,因此本题答案应选D。

【参照答案】D65.设有定义语句“intx[]={1,3,5,7,9,11,13},*p=x;”,则不能对的引用组x合法元素表达式是()

A.*(p--)

B.*(--p)

C.*(p++)

D.*(++p)【解析】分析备选答案A:由于*(p--)中“--”是后缀运算符,因此“*(p--)”相称于“*p”,然后再对p减1,由于p指向数组元素是x[0],因此这个表达式对的引用了数组x合法元素。分析备选答案B:由于*(--p)中“--”是前缀运算符,因此要先对P进行减1操作,由于P指向数组元素是x[0],因此p减1后指向数组元素是x[-1],这个元素不是数组x合法元素,因而,这个表达式是错误,本题答案应选B。至于备选答案C:分析办法和备选答案A完全相似,该表达式相称于数组元素X[0]。备选答案D:由于“++”是前缀,需要先对p进行加1,使得p指向数组元素x[1],这个元素也是数组x合法元素。

【参照答案】B66.下列程序段输出是()

charx=012,y=013;

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

A.1,0,1

B.1,0,0

C.10,1,1

D.1,1,l【解析】一方面要注意字符型变量x初值是八进制整数,相应二进制整数是00001010,相应十进制整数是10;字符型变量y初值也是八进制整数,相应二进制整数是00001011,相应十进制整数是11。再来计算输出语句中三个输出表达式值:自右向左,先计算“x&&y”,由于运算符是逻辑运算符,因此按照逻辑值规则,x和y均为非0,运算成果是逻辑真,其值为"1”;再计算“x??y”,同样道理,x和y均为非0,运算成果是逻辑真,其值为“1”;最后计算“x&y”,注意运算符是位与,由于x值为“00001010”,而y值为。“00001011”,按照位与运算规则,成果为"00001010",相应十进制整数是“10”,因此输出成果是“10,1,1”,本题答案应选C.

【参照答案】C67.对于输入语句scanf("%f,%f",&a,&b);要使变量a、b上值分别为1.78和2.48,则对的输入是()

A.1.78,2.48后跟回车

B.1.782.48后跟回车

C.1.782.48后跟回车

D.1.78;2.48后跟回车【解析】按照scanf()函数语法规定,第1个形参是一种字符串常量,是由格式控制符和非格式控制符构成,其中非格式控制符必要原样输入。显然本题中非格式控制符是在两个实数之间“逗号”。从4个备选答案中可以看出,只有备选答案A中是用逗号分隔两个实数,因此本题答案应选A

【参照答案】A68.执行下列程序段后输出成果是()

x=9;

while(x>7)

{printf("*");x--;}

A.****

B.***

C.**

D.*【解析】注意执行while循环前,变量x初值为9.第1次执行while循环,控制循环条件为“x>7”,这时x为9,条件成立,执行循环体:输出单个“*”,x再减1,x为8。继续循环,控制循环条件是“x>7',当前x为8,条件成立,输出“*”后x减1,当前x为7。继续循环时,控制循环条件不满足,退出循环。因此本段程序执行后,输出成果为两个“*”,本题答案应选C。

【参照答案】C69.关于带参数主函数,下列说法中错误是()

A.带参数主函数中,形式参数名称是系统规定,顾客不能自己选取

B.带参数主函数中,第1个形式参数是int型

C.带参数主函数中,第2个形式参数是字符型数组

D.带参数主函数中,实际参数值只能在执行程序命令行中获得【解析】带参数主函数定义格式是系统规定,详细如下:

main(argc,argv);

intargc;

char*argv[];

{...

}

由此看出,第2个形式参数argv是指向字符型数据指针型数组,不是字符型数组因此备选答案C是错误,本题应选答案C。

【参照答案】C70.执行下列程序后输出成果是()

#defineM(a,b)(a)>(b)?(a):(b)

main()

{inti=10,i=15;printf("%d\n",10*M(i,j));}

A.10

B.15

C.100

D.150【解析】本题要输出表达式是“10*M(i,j)”,其中“M(i,j)”是带参数宏调用,宏替代后,表达式成果是“10*(i)>(j)?(i):(j)”,而变量i值为10、变量j值为15,带入整个要输出表达式后成果是“10*(10)>(15)?(10):(15)”,,其中条件“10*10>15”是成立,成果等于10。因此本题答案应选A

【参照答案】A71.执行下列程序后输出成果是()

intfun(intx1,intx2)

{intx;x1>x2?(x=3):(x=4);return(x+x1);}

main()

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

A.9

B.10

C.11

D.12【解析】本程序输出是函数调用“fun(7,8)”返回值。分析函数调用“fun(7,8)”过程如下:将实参7传给形参x1,实参8传给形参x2,然后执行函数体。由于x1>x2条件不成立,因此执行“:”号后赋值表达式:x=4。返回语句中表达式是“x+x1”,返回值是:4+7=11。因此本题答案应选C.

【参照答案】C72.下列程序段输出是()

typedefunion{longx[2];

shorty[4][5];

charz[10];

}TYPE1;

TYPE1u1;

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

A.8

B.10

C.40

D.58【解析】程序开始用“typedef"定义了顾客自定义数据类型符“TYPE1”,这个顾客自定义数据类型符相应是一种共用型。然后使用"TYPE1",定义了共用型变量u1,本段程序输出就是这个共用型变量所占用字书数。共用型变量占用字节数就是其成员中占用字节数最多成员占用字节数。分析这个共用型成员有3个:第1个成员是长整型数组,占用字节数为4*2=8;第2个成员是短整型数组,占用字节数为2*4*5=40;第3个成员是字符型数组,占用字节数为1*10=10。其中占用字节数最多成员是第2个成员,其占用字节数等于40。因此本题答案应选C。

【参照答案】C73.不属于C语言保存字是()

A.for

B.goto

C.if

D.loop【解析】关于保存字教材中有明确规定。显然for、goto、if都是构成语句专用语句成分,都

是保存字。本题答案应选D。

【参照答案】D74.对的C语言标记符是()

A.num(10)

B.filebak

C.continue

D.class+2【解析】标记符是字母、下划线开头字母、数字、下划线构成一串字符,并且不能是保存字。本题4个备选答案中,只有答案B符合这个规定。本题答案应选B。

【参照答案】B75.设有定义语句“doubled1,d2;”,则表达式“d1=1,d2=d1+5/2”值是()

A.1

B.3

C.3.0

D.3.5【解析】C语言规定,逗号表达式计算是自左向右进行,表达式值等于右边表达式值,因而,本题答案应为表达式"d2=d1+5/2"值。该表达式是赋值表达式,因此其值是赋予变量d2值,也就是表达式"d1+5/2"成果。计算时,需要先算"5/2",成果为整数2,再和double型d1相加,成果是实数3.0。因此本题答案应选C

【参照答案】C76.设有定义“intx=8,y,z;”,则执行“y=z=x++,x=y==z;”后,变量x值是()

A.0

B.1

C.8

D.9【解析】这是逗号表达式构成语句,要先计算“y=z=x++”,成果变量y和z值均为8。注意++是后缀运算符,同步x等于9。再计算“x=y==z”,由于“==”优先于“=”,因此x值等于“y==z”,而y和z值相等,因此运算成果为1,即x值为1。本题答案应选B。

【参照答案】B77.设有“inta=1,b=1;”,“printf("%d,%d",(a++,--b),b-1);”输出是()

A.1,-1

B.1,0

C.0,-1

D.0,0【解析】printf()函数功能是自右向左依次计算表达式值,然后再按照自左向右顺序输出各个表达式值,因此题目中输出语句执行时,是依次计算下列两个表达式值:

b-1成果为0,注意变量b值不变;

(a++,--b)这是逗号表达式,先计算a++,成果变量a值为2;

再计算--b,成果变量b值为0;

整个逗号表达式值就是--b值,为0。

按照自左向右顺序输出(a++,--b)和b-1值,依次为0,0。本题答案应选D。

【参照答案】D78.设有定义语句“chars[]="123";”,则表达式“s[3]”值是()

A.’1’

B.’3’

C.0

D.语法出错【解析】字符数组s在定义时省略了数组长度,表达给每个数组元素均赋了初值。对本题来说,数组长度为4;数组元素值依次为:S[0]为'1'。S[1」为'2'。S[2]为'3'、S[3]为字符率结束标记符'\0',因此“s[3]”值是'\0'。注意,这个字符ASCII代码值是整数0,因此本题答案应选C。

【参照答案】C79.定义一种具备10个元素整型数组,应当使用语句()

A.inta[10];

B.inta[2,5];

C.inta[];

D.int*a[10];【解析】分析备选答案A:显然是对的,本题答案应选A。至于备选答案B:其中“[2,5]”在语法上是错误;备选答案C:数组没有给初值而省略了数组长度,语法上也是错误;备选答案D:定义是具备10个元素。指向整型数据指针型数组。

【参照答案】A80.设指针变量p1、p2已经指向同一种数组元素,则下列表达式中错误是()

A.p1=p2

B.p1==p2

C.p1-p2

D.p1+p2【解析】教材中关于指向同一种数组元素指针变量之间可以进行运算有如下规定:可以进行关系运算、赋值运算、减法运算,因此本题答案应选D。

【参照答案】D81.设有定义语句“inta[]={2,4,6,8,10},*p=s;”,则值为8表达式是()

A.*p+3

B.*p+4

C.*(p+4)

D.*(s+3)【解析】分析四个备选答案,可以看出是用指针法来引用数组a元素。当指针变量p已经指向数组。首地址后(正如本题那样),*(p+i)和*(s+i)都是数组元素a[i]。对于备选答案A:*p就是数组元素。a[0],其值为2,再加3成果为5,不符合题意。同样道理,备选答案B中*p十4值为6,也不符合题意。对于备选答案C:*(p+4)代表数组元素a[4],其值为10,也不符合题意。显然本题答案应选D。由于*(s+3)就是数组元素s[3],其值为8。

【参照答案】D82.下列数据类型中不属于构造类型是()

A.数组型

B.构造型

C.共用型

D.枚举型【解析】教材中明确指出:构造类型只涉及:数组型、构造型。共用型三种,因此本题答案应选D。

【参照答案】D83.函数fopen()返回值不能是()

A.NULL

B.0

C.1

D.某个内存地址【解析】函数fope()返回值有两种也许:一是对的打开了文献,将返回某个地址,程序中普通是用文献型指针变量来接受;二是打开文献时浮现错误,此时返回值是符号常量“NULL”,其值为0。因此本题答案应选C。

【参照答案】C84.以只写方式打开一种二进制文献,应选取文献操作方式是()

A."a+"

B."w+"

C."rb"

D."Wb"【解析】打开文献时,如果是“只写方式”,则只能选用字符“w”;如果要打开文献是二进制文献,则需要选用字符“b”,因此本题答案应选D。

【参照答案】D85.设有定义语句“charch='\77';”,则下列说法中对的是()

A.ch中具有1个字符

B.ch中具有2个字符

C.ch中具有3个字符

D.语法出错【解析】从定义语句中可以看出,变量ch是字符型变量,显然只能存储单个字符,因此备选答案B和C是错误说法。再分析赋予初值,'\77'是在“\”符号背面跟有2位人进制数,因此'\77'是转义字符,转义字符是单个字符,因此本题答案应选A。

【参照答案】A86.设有函数调用语句“f(x1,x1+x2,(x1,x2));”,对的说法是()

A.调用实际参数是2个

B.调用实际参数是3个

C.调用实际参数是4个

D.调用时会浮现语法错误。【解析】对函数调用来说,实际参数普通都是表达式,而表达式之间必要用逗号来分隔,因此只要区别调用时表达式数目,即是实妹参数数目。对本题来说,第1个表达式是“x1”、第2个表达式是“x1+x2”、第3个表达式是一种逗号表达式“x1,x2”,因此本题函数调用时,表达式数目为3,固然实际参数数目就是3,因此本题答案应选B。

【参照答案】B87.计算平方数时不也许引起二义性宏定义是()

A.#defineSOR(x)x*x

B.#defineSQR(x)(x)*(x)

C.#defineSQR(x)(x*x)

D.#defineSQR(x)((x)*(x))【解析】分析备选答案A:如果宏引用是“SQR(2+3)”,则宏替代后成果是“2+3*2+3”,成果是错误,因而这个答案也许引起二义性。分析备选答案B:如果宏引用是“3/SQR(2+3)”,则宏替代后成果是“3/(2+3)*(2+3)”,成果也是错误,因而这个答案也许引起二义性。分析备选答案C:如果宏引用是“SQR(2+3)”,则宏替代后成果是“(2+3*2+3)”,成果也是错误,因而这个答案也许引起二义性。只有备选答案D不会引起二义性。因此本题答案应选D。

【参照答案】D88.执行下列程序段后,x位是()

inta=8,b=7,c=6,x=1;

if(a>6)if(b>7)if(c>8)x=2;elsex=3;

A.0

B.1

C.2

D.3【解析】按照"else"只和前面近来"if"配对原则,上述程序段可以写成下列更为清晰程序清单:

inta=8,b=7,c=6,x=1;

if(a>6)

if(b>7)

if(c>8)

x=2:

else

x=3:

根据a、b、c值,很容易看出第1个“if语句”条件“a>6”是成立,接着执行第2个“if语句”,该语句条件“b>7”,是不成立,所如下面“if-esle”语句不执行,因而x值不变,仍为1。因此本题答案应选B。

【参照答案】B89.执行下列程序段后,变量y值为()

intx[]={1,2,3,4},y,*p=&x[1];

y=(*--P)++;

A.1

B.2

C.3

D.4【解析】从数据定义语句中可以得出下列结论:指针变量P指向数组元素是x[1]。再来分析赋值句右边表达式“(*--p)++”,其中“--”优先于“*”先计算“--p”,使得p指向数组元素x[0];因此“(*--p)”就是数组元素a[0],再计算其后“++”,由于“++”是后缀,因此表达式值就是数组元素x[0]值,为1,然后再对数组元素x[0]加1。因而变量y值是1。本题答案应选A。

【参照答案】A90.能对的表达逻辑关系“-1<x<1并且-1<y<1”表达式是()

A.(-1<x<1)&&(-1<y<1)

B.(-1<x<1)&(-1<y<1)

C.((-1<x)??(x<1))&&((-1<y)??(y<1))

D.(-1<x)&&(x<1)&&(-1<y)&&(y<1)【解析】注意数学中“-1<x<1”含义是“-1<x同步x<1”,弄清晰这一点后,再来分析给出备选答案。对于答案A:其中-1<x<1不能表达“-1<x同步x<1”,例如,当x为0时,“-1<x<1”值为0,即成果为假,而x为0时,“-1<x同步x<1”显然为真,因此备选答案A是错误。对于备选答案B出于同样理由,也是错误。对于备选答案C:“-1<x同步x<1”是不能表达到“((-1<x))::(x<1))”,其中或“::”应当改成与“&&”,显然该答案也是错误。本题应当选取D。

【参照答案】D91.函数调用时,下列说法中不对的是()

A.若用值传递方式,则形式参数不予分派内存

B.实际参数和形式参数可以同名

C.主调函数和被调用函数可以不在同一种文献中

D.函数间传送数据可以使用外部全局变量【解析】分析备选答案A:值传递时,先给形参分派内存,然后把实参值传给形参分派内存,因此该说法是错误,本题答案应选A。至于备选答案B:形参和实参是可以同名,由于它们作用域不重复。备选答案C:只要被调函数定义时存储类型选用“extern”,就可以被其她文献中函数调用。备选答案D:函数间传递数据办法有4种,其中一种就是运用外部全局变量来传递。

【参照答案】A92.下列关于构造型变量定义语句中,错误是()

A.typedefstructCCC

B.#defineGGGstruct

{charname[20];GGGCCC{charname[20];

intage;intage;

}GGG;};

GGGabc;GGGCCCabc;

C.struct

D.struct

{charname[20];{charname[20];

intage;intage;

}ccc;}abc;

CCCabc;【解析】分析备选答案A:运用“typedef”定义了顾客自定义数据类型符“GGG”,这个顾客自定义数据类型符是具有两个成员构造型CCC,因此语句“GGGabc”是定义构造型CCC变量abc,语法没有错误。分析备选答案B:运用“#define”定义了宏名“GGG”,这个宏名第一次浮现是定义构造型CCC,第二次是定义了构造型CCC变量allc,因此语法上没有错误。分析备选答案C:这是定义一种没有名称构造型,同步定义了这种构造型变量CCC,接着语句“CCCabc;”显然是错误,由于CCC是变量名,不是数据类型符,该答案符合题意。至于备选答案D:这是原则通过定义没有名称构造型来定义该构造型变量abc,语法上没有错误。

【参照答案】C二、程序分析

1.main()

{charstr[]="1234567";

inti;

for(j=0;i<7;i十=3)

printf("%s\n",str+i);

}【解析】分析份循环语句可知,控制变量i值只能依次等于0、3、6。再分析输出语句中输出格式,这是字符串格式,规定输出表达式是存储字符串首地址。而输出表达式是“str+i”。咱们针对i不同值来-一分析:i=0,str+0就是str,其中存储字符串是“1234567”,因此第1行上输出就是:1234567。当i=3时,str+3,代表了数组元素str[3]地址,从这儿开始字符率串是“4567”,因此第2行输出是:4567。同样道理,i=6时,str+6是元素str[6]地址,从该地址

温馨提示

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

评论

0/150

提交评论