




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第章程序设计基本概念选择题1解析计算机语言分为低级语言、汇编语言和高级语言,C语言属于高级语言,但并不是说C语言比其他语言高级,选项A)错误;除了低级语言外,其他各种语言都必须编译成能被计算机识别的二进制数才能执行,选项B)错误;C语言出现于1972年至1973年间,并不是出现最晚的语言,选项D)错误。2解析本题考查最简单的C程序设计知识。在做题之前一定要慎重对待题干的主要信息,本题所描述的是“3种基本结构”,而选项B),C),D)三个选项则表达的是零零散散的循环结构。3解析C语言相对其他高级语言来说,放宽了语法检查,因此程序设计自由度大,但并不是不检查语法,C语言的程序是由函数构成的。函数不能嵌套定义,但是可以嵌套调用。4解析本题综合考查C语言的概念部分,关于C语言,我们应该了解以下必须要掌握的基础知识C程序是由函数构成的。一个函数由两部分组成函数的首部和函数体。一个C程序总是从MAIN函数开始执行的,而不论MAIN函数的整个程序中的位置如何(MAIN函数可以放在程序最开始,也可以放在程序最后,或写在一些函数之前,在另一些函数之后)。C程序在书写上,表现形式比较自由,一行内可以写几个语句,一个语句可以分写在几行上。每个语句和数据定义的最后必须有一个分号。C程序本身没有输入输出语句。输入和输出的操作是由库函数SCANF和PRINTF等函数来完成。可以用/对C语言的程序的任何部分作注释。5解析本题考查C语言的综合基础知识。构成C程序的基本单位是函数,一个C程序总是从MAIN函数开始执行,而不论MAIN函数在整个程序中的位置如何。C语言的函数定义都是互相平行、独立的,在定义函数时,一个函数内不能定义另一个函数。C函数定义的一般格式有两种传统格式和现代格式。传统格式也称K。6解析在C语言中,“”运算符两侧的运算数必须是整型。7解析XY的值为实型7200000,经强制类型转化成整型7。A3的值为1,17的值为7,72值为1。1/4的值为0,而非025,因而为两个整数相除的结果为整数,舍去小数部分。与实型X相加,最终得结果为2500000。8解析在选项A)中的语句没有一条是错误的。选项B)和C)中有一个逗号表达式,选项B)中是X0,YX1在选项C)中是YX1,ZXY所以B)和C)中也没有错误。选项D)中的最后一条语句是以逗号结束的,而C语言中不能用逗号作为一个语句的结束标志,每一条语句最后应该是分号,所以D)选项中的程序是错误的。9解析40000已经超过了C语言规定的短整型的范围。要将这样的数赋值给一个长整型的变量,需要在整型常量后面加字母L。10解析逗号表达式的形式如下表达式1,表达式2,表达式3,表达式N逗号表达式的要点1)逗号表达式的运算过程是从左往右逐个计算表达式。2)逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式N)的值。3)逗号运算符的优先级别在所有运算符中最低。11解析当自加运算符做后缀表达式的时候,表达式的值不变,只有变量的值增1,所以表达式(X1/3)相当于(111/3)取整后为3。12解析在C语言中,实数有两种形式表示,即十进制数形式和指数形式,在指数形式中,E3、21E35、E3、E等都是不合法的指数形式。再如123E3或123E3都代表123乘以10的3次方。注意,字母E的前面必须有数字,且E的后面必须是整数。13解析根据混合运算规则,如果有一个数据是FLOAT型或DOUBLE型,则其他数据类型先转化为DOUBLE型,运算的结果最终也是DOUBLE型。14解析本题考查逗号表达式的用法。C语言中逗号“,”也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。其一般形式为表达式1,表达式2其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。逗号表达式的一般形式可以扩展为表达式1,表达式2,表达式3,表达式N,它的值为表达式N的值。15解析字符A要转换成相应的ASC码值,由于运算结果要赋值给INT型变量,所以对16进行取整运算,最后A的值应是66。16解析选项A),C),D)答案中的N没有按题目要求进行任何转换,得到的结果达不到题目的要求,选项B中,先求出N10005的值,N的第3位小数四舍五入,后面的小数忽略变成整数M,将M/1000的值赋给N时,先转换其类型,然后再赋值给N,即达到题目要求。17解析8进制中,不可能包括8以上的数字,它的范围只在07之间,以0开头。同样,十六进制是以0X开头,数字在09和AF之间。18解析KN的意思是先将N的值赋给K,然后N的值再加1,选项A)符合题意;选项C)是先使N的值加1,然后再赋值给K;选项D)等价于KK(N1)。19解析选项A)错误,因为在C语言中,各语句间可以用分号隔开,一行可以书写多个语句;选项B)错误的原因是,忽略了C语言中进行运算的数据类型必须一致的规定,因此实型变量中不允许存放整型数,存放整型数据其实是把整型转化为实型在存放。选项C)错误的原因是由于实型变量是用有限的存储单元存储的,因此能提供的有效数字总是有限的,在有效的位以外的数将被舍去,由此可能产生一些误差。20解析C语言中规定,标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或下划线,而且标识符不能是C语言的关键字。21解析“”是求余运算符或模运算符,“”两侧均应为整型数据,选项A)中的X是DOUBLE型数据。22解析运算符“”的两侧都应该是整型数。另外,本题需要掌握的知识点是XK,等价于XXK。23解析解答本题时,我们必须要明白“进制”数的表示方法。按不同的进制区分,整型常数有3种表示方法十进制数如220,560,45900八进制数以0开始的数数字范围07如06,0106,05757十六进制数以0X或0X开始的数数字范围09,AF或AF如0X0D,0XFF,0X4E,0X48A另外,可在整型常数后添加一个“L”或“L”字母表示该数为长整型数,如22L,0773L,0XAE4L。24解析本题需要掌握的知识点是逗号表达式的求解步骤,另外,注意一下两个整数相除的结果仍为整数。了解了知识点后,本题就可以逐步求解了X2YX3/2Y20000001Y300000025解析本题中,“()”的优先级是最高的,“”和“/”的优先级别相同,运算方向是从左向右。26解析选项A)中的赋值方法为PASCAL语言赋值格式;C语言中赋值直接为“”无冒号;选项D)中“X5Y2”赋值格式错误,赋值号左边不可以出现常量,也不可以同时出现两个变量。选项C)应改为(FLOAT)8327【命题目的】考查运算符的掌握情况。【解题要点】当运算符做后缀使用时,只有这个语句结束时候,变量才被增1。【错解分析】由于是后缀形式,所以先取M的值进行计算,K1,然后再将M加1。【考点链接】在C语言中,运算符和负号运算符是同优先级别,结合方向为“自右向左”。28【命题目的】这个题目考查的是对于强制转换类型的掌握情况。【解题要点】强制类型转换表达式的形式如下(类型名)表达式,取余运算符()的运算对象只能是整型。【错解分析】由于取余运算符的运算对象只能是整型,所以强制转换运算符号应该把浮点型转化为整型。【考点链接】取余运算为负数的时候,所得结果随机器的不同而不同。29【命题目的】考查对于标识符的掌握情况。【解题要点】合法的标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,用户定义的标识符不能与关键字相同。【错解分析】选项A),数字不能为第一个字母,AUTO为关键字;选项C)中,也是数字不能为第一个字母,ELSE为关键字;选项D)中负号不合法。【考点链接】C语言允许用户把预定义标识符另做它用,但这将使这些标识符失去系统规定的原意。30【命题目的】考查基本运算符运算对象的掌握情况。【解题要点】取余运算符的运算对象只能是整型,所以这个KM2取余不合法。【考点链接】所有的双目运算符两边运算数的类型必须一致才能进行操作,如不一致,要进行类型转换。31【命题目的】考查对于和运算对象的掌握情况。【解题要点】按照C语言的规定,常量和表达式是不能进行或运算。【错解分析】按照C语言的规定,常量是不能进行或运算的,所以选择D)。【考点链接】前缀,和后缀,的区别。填空题1此表达式为三目运算符,A的值为6,B的值为6,则整个表达式的值为A的值,A的值为7。请注意前缀,和后缀,的区别。2【命题目的】考查对于基本运算符的掌握情况。【解题要点】和做前缀使用的时候,先对变量进行增1或减1,之后进行其他的运算。【考点链接】赋值运算符的优先级仅仅高于逗号运算符。3【命题目的】考查对于数据的格式化输出的掌握情况。【解题要点】八进制的65转换为十进制的53之后减1输出。【考点链接】0开头的是八进制整数。第章顺序结构1解析在C语言中,当一次输入多个数据的时候,数据之间要用间隔符,合法的间隔符可以是空格、制表符和回车符。逗号不是合法的间隔符。2解析本题中A的值为6,B的值为8,最后S的值为8,SS等价于SSS。3解析PRINTF函数的浮点数缺省输出格式在PRINTF函数的输出中,若无输出宽度限制,每种数据都有一个缺省的输出宽度,一般浮点数的小数位数则是6位,不管输出格式是F或LF皆如此。PRINTF函数的浮点数宽度限制输出以MF或MLF格式输出浮点时,如果指定的宽度大于实际数据宽度,按指定宽度输出,且多余数补以空格;如果指定的宽度小于实际数据宽度,浮点数的整数部分将以实际数据(位数)输出。小数部分按指定数输出,且对数据做四舍五入处理。PRINTF的整数限宽输出没有宽度制的整数原数输出。在宽度限制于数的实际位数时,宽度说明无效,按数的实际位数输出。4解析在C语言所有的运算符中,逗号运算符的优先级最低。C语中区分大小,所以APH和APH是两个不同的变量。赋值表达式AB表示将B的值付给A,而B本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数和整型数值等。5解析本题中,程序先执行语句X12,根据赋值运算的类型转换规则,先将DOUBLE型的常量12转换为INT型,即取整为1,然后将1赋值给变量X。接下来执行语句Y(X38)/50;根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括号内的运算过程先将整型变量X的值1转换为DOUBLE型10,然后与38进行加法运算,得到中间结果48。接着进行除法运算48/50,其结果小于10,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边的变量Y的类型为整型,于是对这个小于10的中间结果进行取整,结果为0,于是变量Y的值为0,DY的值也为0。6解析在C语言中,对于不同类型的数据用不同的格式字符,其中,“D”是按整型数据的实际长度输出,“MD”中,M为指定的输出字段的宽度,如果数据的位数小于M,则左端补以空格,若大于M,则按实际位数输出。7解析整型变量的输出形式有D,O,X,U等,X是以十六进制无符号形式输出整数。十六进制数同样也可以想MD一样按MLX输出指定宽度的长整型数。8解析该题考查的是C语言中自减运算符和逗号表达式的应用。自减运算符位于变量之前时,先使变量的值减1,再进行赋值运算。逗号表达式的一般形式为表达式1,表达式2,其求解过程是先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值。9解析本题中,“DDD”表示按整型数形式输入数据,输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键或TAB键。选项B)中不应该使用逗号。10解析SCANF函数的一般格式是SCANF(格式控制,地址表列)该格式中,地址表列中应是变量地址,而不是变量名。11解析在C语言中,自增1运算符记为“”,其功能是使变量的值自增1。自减1运算符记为“”,其功能是使变量值自减1。自增1,自减1运算符均为单目运算,都具有右结合性。可有以下几种形式II自增1后再参与其他运算。II自减1后再参与其他运算。II参与运算后,I的值再自增1。II参与运算后,I的值再自减1。在理解和使用上容易出错的是I和I。特别是当它们出在较复杂的表达式或语句中时,常常难于弄清,因此应仔细解析。12解析对于逗号表达式中的第一个表达式等价为A15;第二个表达式的值为15460,此时变量A的值仍未改变还是15,第三个表达式的值为B的值。13解析此题考查有关标准设备的知识。在多数C语言版本中,STDIOH文件至少定义了四种标准设备文件,可以直接引用不必含有打开操作,包括标准输入文件指针STDIN缺省为键盘;标准输出文件指针STDOUT缺省为显示器;标准错误输出文件指针STDERR缺省为显示器;标准打印输出文件指针STDPRN指打印机;此外,还可能包括如辅助设备等标准文件指针,且多数文件指针可以被重新定向到其他设备。14解析在使用SCANF函数时,我们必须要注意以下问题在用SCANF函数给普通变量输入数据时,在变量名前没有写地址运算符是错误的。正确的应为SCANF(DD,C语言规定是不允许指定输入数据的宽度的。3)是错误不允许输入数字宽度。用SCANF函数输入数据时,必须注意要与SCANF语句中的对应形式匹配。如SCANF(D,D,若按以下形式输入数据24是不合法。数据2和4之间应当有逗号。本题选项A)中后面省略了符号AB因此,变量A和B最后的值应该为2和1。2解析该题目的关键是要搞清楚“语句。第章循环结构选择题1解析T1是将T赋值为1,所以循环控制表达式的值为1,而判断T是否等于1时应用T1注意“”与“”的用法。2解析该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时,N的值是9,循环体内,先经过N运算,N的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。由循环条件N6可以知道,最后一次循环开始时,N的值应该为7,所以最后一次执行循环体时输出为6,由此可以排除选项C)。3解析选项A)的循环表达式的条件永久为1,并且小于100的数与100取余不超过99,所以在循环体内表达式I1001的值永远不大于100,BREAK语句永远不会执行,所以是死循环;选项B)的括号内没有能使循环停下来的变量增量,是死循环;选项C)中先执行K,使K10001,从而使循环陷入死循环。4解析本题中,“”表示逻辑非运算符,“”等于运算符,逻辑非运算符比等于运算符的优先级低。5解析DOWHILE语句的一般形式为DO循环语句WHILE(表达式);本题中,执行“语句”一次后,表达式的值为假,停止执行。6解析本题涉及BREAK语句,重在循环次数的判定。本题的循环由于无出口,只能借助BREAK语句终止。鉴于题目要求说明判断IJ的执行次数,只需考查经过IK运算如何累计I的值,I值分别是I2,4,6,8,10,12时,判断IJ为真,程序输出S的值并结束,共循环6次。7解析DOWHILE语句的一般形式是DO语句WHILE(表达式);特点是“直到型”循环结构。先执行一次“语句”,判“表达式”,当“表达式”非0,再执行“语句”,直到“表达式”的值为0时停止执行语句。在一般情况下,用WHILE和DOWHILE语句解决同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但当WHILE后面的“表达式”一开始就为“假”时,两种循环的结果不同。这是因为此时WHILE循环的循环不被执行,而DOWHILE循环的循环体被执行一次。本题的关键是两个加数分别能被13和11整除,在I0时,直接将316赋值给K,当K11的值为0时,则不必执行循环,将执行JK/11语句,输出结果,所以该表达式合理的条件是K11。8解析本题考查“”和“”运算符,运算符“”是操作数加1,而“”则是操作数减1。例如XX1可写成X,或XXX1可写成X,或XX(X)与X(X)在上例中没有什么区别,但XM和XM却有很大差别。XM表示将M的值赋给X后,M加1。XM表示M先加1后,再将新值赋给X。当Y2时,首先执行Y,使Y值变为1。接着执行Y,Y值变为0,循环结束。最后执行输出语句,注意先输出此时Y的值0,在再使Y值自减1变为1。9解析本题考查两个知识点自加自减运算符和DOWHILE循环语句。题中BA等价于BBA;A的含义是在使用A之后,使A的值加1;B的含义是在使用B之后,使B的值减1。10解析解答本题,当然先要清楚DOWHILE语句的执行过程先执行一次指定的循环体语句,本题中执行X后判断表达式,表达式的值为X为假,程序结束循环。11解析除了考查基本的FOR循环结构外,本题还考查自加运算的相关知识,但均为基础。注意FOR语句中的表达式可以部分或全部省略,但两个“;”不能省略。12解析本题中需要填空的是FOR循环的第3个条件,即“若分成9个零件一组,则多5个零件”,当总零件数零减去5后,并与9取余为0即可满足本题的条件。13解析本题中,首先将0赋给K,表达式变为0,跳出循环,没有执行循环体语句。解答本题的关键是掌握WHILE语句。14解析本题中,省略了FOR语句的第二个表达式,C语言规定如果省略了第二个表达式,则表示为真,即为1。15解析本题考查用于多分支选择的SWITCH语句,其一般形式为SWITCH(表达式)CASE常量表达式1语句1CASE常量表达式2语句2CASE常量表达式N语句NDEFAULT语句N1其语义是计算表达式的值。并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有CASE后的语句。如表达式的值与所有CASE后的常量表达式均不相同时,则执行DEFAULT后的语句。16解析DOWHILE语句的一般格式为DO循环体语句WHILE(表达式);先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。本题中,先执行PRINTF(“DN”,X2)后,值为XX2,即为1。判断表达式的值,(X)为真,X0,继续循环。再次执行循环体语句后,X2,此时表达式(X)的值为0,结束循环。17解析根据本题提出的条件可知,控制循环的表达式应该是所输入的两数互不相等(相等时结束循环),也即只有满足这一条件时,两数才能进行排序输出的操作,由此得出循环的控制表达式应该为AB。18解析选项A)FOR循环可以用于循环次数不确定的情况;选项B)FOR循环是先判断表达式,后执行循环体语句;选项C)在FOR循环中,可以用BREAK语句跳出循环体,从而接着执行循环体后面的语句。19解析该题是一个FOR循环嵌套语句。第一层FOR循环循环2次,第二层循环3次,但当J等于0和1时,将执行CONTINUE语句,不执行X运算,所以每次执行完内循环后,X的增量为1。最后一个X运算将每次累加起来就是X的值。20解析本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符“”的优先级大于不等于运算符“”的优先级。21解析和都属于无实际作用语句,但又都符合语法要求,因为条为1,是无限循环。中省略了全部的表达式,也代表真,因此也是无限循环。22解析DOWHILE语句的一般形式为DO循环体语句WHILE(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。WHILE后必须要有分号作为语句的结束,在DOWHILE循环中,不可以省略WHILE。23解析此题中FOR循环的执行次数取决于关系表达式(I9,或者X876,只要在执行SCANF语句时,从终端输入876,循环就将结束。如果从终端一直未输入876,则将由I值的增加使I9,从而结束循环。按照题中所给定的FOR语句,每执行一次循环,I自增1,因此执行10次循环后,I的值为10,循环最终也将结束。24解析WHILE是先判断条件再执行语句;DOWHILE则是先执行依次语句再判断条件从而决定是否继续再执行循环体中的语句,这正是二者主要区别。解析WHILE是先判断条件再执行语句;DOWHILE则是先执行依次语句再判断条件从而决定是否继续再执行循环体中的语句,这正是二者主要区别。25【命题目的】考查对于WHILE循环的理解情况。【解题要点】WHILE循环是先判断循环条件之后再进入循环体。【错解分析】这个题目的循环体是空语句,每次做的仅仅是判断循环的条件,由于运算优先于AP这一关系成立,应该把I的值值赋给P,这样才满足题目的要求。13解析我们可以把二维数组的常量表达式看做是矩阵或者表格的行数与列数,要注意每个元素有两个下标,第一个是方括号中的下标代表行号,称行下标;第二个是方括号中的下标代表列号。行下标和列下标总是从0开始的,二维数组在不赋初值时,不能得到确定。14解析本题中,A12是二维数组中的第6个元素,对应FOR循环中I的值为5,P551。15解析本题中的二维数组的每个元素就是一个由三个元素构成的一维数组,根据条件FOR(K0K0中,FUN(X,Y)是一次调用函数,它的值作为FUNC另一次调用的实参。注意本题调用两次函数。4解析在C语言中,所有的函数都是平行的,即在定义函数时是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义,但可以互相调用,但不能调用MAIN函数。5解析在C语言里,MAIN函数也可以有参数,例如MAIN(INTARVC,CHARARGV),ARGC是指向字符串的指针数组,而选项C)是第二个形参是指向字符变量的指针,因而正确答案为选项C)。6【命题目的】考查对于带参主函数的掌握情况。【解题要点】ARGC中存入的是命令行中字符串的个数。【考点链接】ARGV是一个指向字符型的指针数组的指针。7【命题目的】考查对于函数的递归的掌握情况。【解题要点】这是使用递归算法求著名的菲波拉奇数列,并要熟悉函数的递归方法的调用。【考点链接】递归的函数调用必须要有使递归结束的条件。填空题1【命题目的】考查对于函数递归调用的掌握情况。【解题要点】函数可以被递归调用,但是不能递归定义。【考点链接】有返回值的函数调用可以出现在表达式可以出现的任何地方。第章C语言中用户标示符的作用域和存储类选择题1解析AUTO变量无STATIC声明的局部变量。用AUTO作存储类别的声明时,可以不写AUTO,存储类别隐含确定为AUTO(自动存储类别)。是动态存储方式。大多数变量是自动变量。用STATIC声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用EXTERN声明外部变量,外部变量即全局变量,可以用EXTERN声明来改变全局变量的作用域,实际上,关键字“AUTO”可以省略,AUTO不写则隐含确定为“自动存储类别”,它属于动态存储方式。2解析本题考查C语言中常见的运算符及表达式的用法。PRINTF(“D,”,X)表达式中,程序先输出X的值,然后再加1,所以,结果为1;在INTX0XY2表达式中,将0的值赋给X,然后再运算XY2的值,结果为X6,Y的值不变,为3,在最后的PRINTF函数中的X,是在执行了X语句后的值,所以应为2。3解析对函数的静态局部变量是在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。4【命题目的】考查对于静态存储类型的局部变量的掌握情况。【解题要点】在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,即使退出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储单元,静态局部变量的初值是在编译的时候赋予的,在程序执行期间不再赋予初值。【错解分析】本题由于连续三次调用函数FUN(),三次对静态变量X进行操作,X的值应依次为6,7,8。【考点链接】对未赋予初值的静态局部变量,C编译程序自动给它赋初值0。第章编译预处理和动态存储分配选择题1解析本题考查了带参数的宏定义,参数只是简单的替换而不是把其值求出后替换形式参数。本题中用A替换X,用B替换Y,再求(A)(B)的值。2解析SIZEOF()长度运算符,或称字节数运算符。该函数用于数据类型和变量。注意SIZEOF操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、VOID类型等。3解析带参数的宏定义如下DEFINE宏名(参数)字符串。本题中,宏定义的作用是指定用标识符PI来代替“31415926”这个字符串,但宏定义不是C语句,不必在行末加分号。4解析该题目测试考生对宏替换的理解。这是一种简单的情况不带参数的宏。关键要注意在对2M1进行宏替换时,要将宏名M原封不动地代进去,得到NUM的形式为2N11(千万不要随意给N1加上小括号,使NUM变为2(N1)1,这就是宏名和变量名之间的区别),在将N代进去,得到NUM的值为6。5解析该题考查函数的宏定义及三目运算符。其中表达式10MIN(I,J)利用宏展开后为10I成员名;(指针变量名)成员名。6解析定义结构体类型的变量有几种的方法如下定义结构体类型的同时,定义结构体类型的变量,如下面的定义中在定义结构体类型AA的同时定义了该类型的变量TDL。上述B)项中将宏名AA用宏体STRUCTAA替换进去后,与该定义形式一样,因此是正确的。这一定义形式中,结构体类型名AA是可以省略的,因此,D)项也是正确的。STRUCTAATDL先定义结构体类型,然后再定义结构体类型的变量,形式如下STRUCTAASTRUCTAATDL这种定义形式也可演变为,先用类型定义语句TYPEDEF将该结构体类型定义成一个类型名AA,然后直接用该类型名AA去定义一个变量(这时不再需要使用关键字STRUCT了)。这就是A)项的形式。7解析结构体变量所占内存长度是各成员占的内存长度之和,而共用体变量所占的内存长度等于最长的成员的长度。本题中,STRUCTTEST结构体类型共有4个成员,其中INT型变量占用空间2个字节,CHAR型变量占用空间1个字节,FLOAT型变量占用空间4个字节,共用体变量占用空间5个字节,共用2145个字节。8解析本题中,数组名保存了数组的首地址,也就是数组中第一个元素的地址,执行PAA后,P指向AA0,PX相当于AA0X,也就是50,经过自增运算后,显示结果为51。9解析本题考查高级语言的数据类型。不属于构造类型的是数组,C语言中的构造类型有结构体、共用体和枚举类型。10解析本题中,首先定义了一个共用体PW,其中有两个域整型变量I和字符数组CH,因为共用体中的域是共享内存空间的,又数组的元素有低到高存储CH0在低字节,CH1在高字节。整型变量I占两个字节,高位与CH1共用存储空间,低位与CH0共用存储空间。而高位CH1的值为0,所以输出的成员变量I的值就是CH0的值13。11解析结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量I所占用的内存是2字节,字符型变量CH所占用的内存是1字节,双精度型变量F所占用的内存是8字节,三者相加即可。12解析本题中,STRUCTEX是结构体类型名,EXAMPLE是结构体变量名。13解析结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元,而共用体变量所占的内存长度等于最长的成员的长度。14解析此题考查基本的结构体定义和引用方法。选项A)的错误是通过结构体名引用结构体成员,选项B)的错误是将结构体名作为类型名使用,选项C)的错误则将关键字STRUCT作为类型名使用。选项D)是定义变量V2并对其初始化的语句,初始值只有前一部分,这是允许的。15解析本题考查结构体变量的基本概念。一般情况下,不能将一个结构体变量作为整体来引用,只能引用其中的成员(分量)。引用结构体成员的方式结构体变量名成员名“”是“成员运算符”(分量运算符),如果成员本身又属一个结构体类型,则要若干个成员运算符,一级一级地找到最低一级的成员。只能对最低级的成员进行赋值或存取以及运算,所以本题选D)。16解析这是一个给结构体数组赋初值的问题。它的赋初值过程与上述二维数组赋初值很相似。只是这里的大括号中的初始值没有按行给出(也即没有用大括号分开来),在这种情况下,初始值将按数组的各个元素在内存中的存放次序逐个逐个地赋给各元素。现在结构体数组的各个元素在内存中的存放次序是这样的CLASS0NAME,CLASS0AGE,CLASS1NAME,CLASS1AGE,由此可以知道,包含字母M的字符串“MARY”赋值给了元素CLASS2NAME,则与字符M先相对应的表达式是CLASS2NAME0。17解析表示结构变量成员的一般形式是结构体变量名成员名例如BOY1NUM即可表示为第1个人的学号;BOY2SEX可表示为第2个人的性别,如果成员本身又是一个结构则必须逐级找到最低级的成员才能使用。例如BOY1BIRTHDAYMONTH即第一个人出生的月份成员可以在程序中单独使用,与普通变量完全相同。分量运算符“”在所有的运算符中优先级别最高,因此可以把它当作一个整体来看待。结合数组定义,本题不难选择。18解析本题考查结构体指针变量的赋值方法。要把结点B连接到结点A之后,必须把B的地址给A的NEXT指针,选项A)中,指针变量Q保存的就是变量B的地址,选项B)中的P是指针变量,应该是PNEXT在选项D)中,用运算符取出结构体变量,并且保存的就是B的地址。19解析该题中首先定义了一个结构体指针变量P,然后说明了结构体变量数组AA,并赋初值,令每个结构体变量的指针域分别指向另一个整型数组DT的对应元素。要求出的是指针变量指向的值的输出。要注意的是指向结构体成员运算符的优先级要大于自加和自减运算符,并和括号的优先级相同。运算时,指针P初始指向第1个元素,所以PX先计算PX的值是50,增1后是51。(P)X先将指针指向第2个元素,然后取X的值为60。(PY)先计算PY,这是个指针,指向数组DT的第2个元素,然后将其值增1,结果为21。20解析本题考查共用体变量起作用的范围。共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用,在本题中,当对AUY成员赋值时,AUX的值就不存在了,当对AUZ赋值时,AUY的值就不存在了。21解析C语言规定数组名代表数组的首地址,也就是第0号元素的地址,在本题中S就是S0的地址,指针变量P指向S,也就是指向S0,所以在FOR循环累加的是S0的SCORE成员值。22解析结构体变量所占内存长度是各成员的内存长度之和,每个成员分别占有其自己的内存单元并且一直驻留在内存,直到程序退出。23解析该题中考查的是简单的单链表,下图就是赋完值后的示意图容易看到PNUM10,而QNEXT就是R,所以QNEXTNUM30,故答案为40。24【命题目的】考查对于结构体在内存中的存储情况的掌握情况。【解题要点】结构体在内存中是连续存放的,一个结构体类型的变量所占用的空间是其所有成员所占空间的总和。【考点链接】DOUBLE类型所占的空间为8个字节。25【命题目的】考查对于函数之间结构体变量的数据传递的掌握情况。【解题要点】本题目中函数F的返回值为结构类型的指针,函数的四个形参分别为T1为整型,T2为整型的指针,T3为STRUCTA类型,T4为STRUCTA类型的指针。【错解分析】在进行函数调用的时候,函数的实参必须要与形参说明相对应,函数的返回值也要赋给相应类型的变量。选项A)函数的返回值不能赋给一个常量;选项C)FPFOPEN(文件名,使用文件方式);函数名FPRINTF功能传送格式化输出到一个文件中调用方式FPRINTF(文件指针,格式字符串,输出表列);函数名FCLOSE功能关闭一个文件调用方式FCLOSE(文件指针);函数名FSCANF功能从磁盘文件执行格式化输入调用方式FSCANF(文件指针,格式字符串,输入表列)。7解析函数REWIND的功能是将文件指针重新指向一个流的开头。用法如下INTREWIND(FILESTREAM)并且无返值。8解析本题中,最主要的是掌握几个有关文件的函数的应用。函数名FOPEN功能打开一个文件调用方式FILEFPFPFOPEN(文件名,使用文件方式);函数名FEOF功能检查文件是否结束调用方式FEOF(FILEFP);函数名FPUTC功能把一个字符写到磁盘文件上去调用方式FPUTC(CH,FP)(CH是要输出的字符,FP是从指定的文件读入一个字符,该文件必须是以读或读写方式打开的调用方式CHFGETC(FP)(CH是字符变量,FP是文件指针变量);函数名FCLOSE功能关闭一个文件调用方式FCLOSE(文件指针)。9解析在计算机中,对于输入输出均采用数据流的形式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 发言稿农家乐
- 年会主管发言稿
- 陕西机器学习培训
- 培训管理电子商务
- 二零二五版航空航天设备采购廉洁保障协议
- 2025版儿童房专用刮大白装修工程合同范本
- 二零二五年度智能化建筑劳务分包施工合同
- 二零二五年度抖音短视频整体打包广告创意设计合同
- 二零二五年度农户小额信贷合同范本样本
- 2025版家庭居室装修智能家居系统安全检测与施工合同
- 煤矿安全规程新旧版本对照表格版
- 儿童急救流程
- 私募薪酬管理办法
- 药品经营企业讲课课件
- 2025年急诊三基考试题库及答案
- 2025贵州航空产业城集团股份有限公司旗下子公司贵州安立航空材料有限公司招聘61人笔试历年参考题库附带答案详解
- 军人休假规定管理办法
- 2025年贵州省中考英语真题含答案
- 联通技能竞赛考试题及答案(5G核心网知识部分)
- T/CBMCA 039-2023陶瓷大板岩板装修镶贴应用规范
- 胖东来面试题及答案
评论
0/150
提交评论