2011C程序设计笔试资料.doc_第1页
2011C程序设计笔试资料.doc_第2页
2011C程序设计笔试资料.doc_第3页
2011C程序设计笔试资料.doc_第4页
2011C程序设计笔试资料.doc_第5页
已阅读5页,还剩131页未读 继续免费阅读

下载本文档

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

文档简介

第2章 C语言程序设计2.1 C语言的基本知识2.1.1 考试必备知识一、C语言的结构1、程序的构成、main函数和其他函数结构化程序由三种基本结构组成:顺序结构、循环结构和选择结构。由这三种基本结构组成的算法可以解决任何复杂的问题。在编写程序特别是大型程序时,有时会把程序分割成多个模块,各个模块具有各自的功能,这样的程序设计方法就是“模块化”结构方法。C语言程序是由函数构成的。对于一个完整的C源程序至少包含一个main函数,也可以包含一个main函数和若干个其他函数(库函数和用户自定义函数)。用户使用此特点很容易实现C语言程序的模块化;一个C语言程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何。从格式上看,每个函数是由函数名、参数表和花括号对“”包围的若干语句组成的。但是在组成C语言程序的函数中,必须有且只有一个名为main的函数,叫做主函数。除主函数之外的函数由用户命名。C语言程序的执行是从主函数开始的,主函数中的所有语句执行完毕,则程序执行结束。C语言程序执行当中可调用函数,main函数之外的其他函数都是在main函数执行时,以嵌套调用方式得以执行的。在程序中除了可调用用户自己编制的函数外,也可调用由系统提供的标准函数。程序编写中,算法是一个重要概念。算法是指为解决某个特定问题而采取的确定且有限的步骤。一个算法应该具有以下特点:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。2、头文件、数据说明、函数的开始和结束标志 程序前部带有#号的行是编译预处理语句。 函数由两部分组成: 函数体的说明部分包括函数名、函数类型、函数参数名、形式参数类型。 函数体函数说明部分下面的花括号“”内的部分。函数体一般包括:变量定义和执行语句部分。C语言函数的一般格式如下所示:函数名(参数) 变量定义部分; 执行语句部分;有的函数不带参数,这时参数说明部分也就不存在了,但函数名后的圆括号不能省略。3、源程序的书写格式 C语言源程序习惯上使用小写英文字母,大写字母常常是作为常量的宏定义和其他特殊用途使用。 C语言源程序由若干个语句组成。每个语句都具有规定的语法格式和特定的功能。 在C语言的源程序中不能使用行序号。 C语言源程序使用分号“;”作为语句的终止符或分离符。 C语言源程序不存在程序行的概念。一个程序行可以自由使用任意的书写行,即一行中可以有多个语句,一个语句也可以占用任意多行,但语句之间必须用“;”分隔。 C语言源程序中用花括号对“”,表示程序的结构层次范围。 C语言源程序中,为增强可读性,可使用适量的空格和空行。但变量名、函数名以及C语言本身所使用的单词(即C语言中的关键字),不能在其中间插入空格。此外空格和空行可任意设置,C编译系统将忽略这些空格和空行。4、C语言的风格C语言源程序输入时,首先要使用系统提供的编辑程序(又称为编辑器)建立C语言程序的源文件。建立后的源文件将以文本形式存储在磁盘上。源文件的名字由用户给出,扩展名为.C。由高级语言编写的程序称为“源程序”,由二进制代码表示的程序称为“目标程序”。计算机不能直接执行源程序,一个源程序必须经过编译(生成.obj文件)和连接才能生成可执行文件(文件后缀名为.exe)。与其他程序一样,C语言源程序中的注释可占用一行以上的位置,也可写在语句的后面。注释部分可作为源程序的一个部分存在于源程序清单中,但源程序进行编译时,系统将忽略注释部分。二、数据类型及其运算在C语言中,数据处理的基本对象是常量和变量。运算是对各种形式的数据进行加工的过程。C语言的运算种类十分丰富,既有算术运算、逻辑运算和关系运算等一般常用运算功能,也有对数据进行移位操作、位处理和某些特殊运算等功能。1、 C语言的数据类型在解释C语言数据类型之前,有一个“标识符”的概念。它可以用作变量名、符号名、函数名等等。标识符区分大小写。合法的标识符由字母、下划线和数字组成,并且第一个字符必须为字母或下划线。C语言中的标识符分为三类: 关键字,如if、case等。 预定义标识符,如printf等。 用户标识符。对于整型常量和实型常量,在C语言中使用整数和实数两种数。整数可以是十进制数、八进制数和十六进制数。在表示时,当整数的第一位是0时,为八进制数;当前两位为0x时为十六进制数;其他为十进制数。实数也称为浮点小数。在C语言中,实数只能按十进制表示。它有两种表示形式:小数形式。由数字和小数点组成(可以省略整数部分或小数部分)。如4.27,-3.14,.0423(等价于0.0423),10.(等价于10.0)。 指数形式。如456e4。以“e”或“E”后跟一个整数来表示以10为底的幂数。C语言的语法规定,字母e或E之前必须有一个数字, e或E后面的指数必须为整数,且e或E与前后的两个数之间不能加空格。在程序执行过程中,其值不能被改变的量,称为常量。有整型常量、实型常量、字符常量和字符串常量。字符常量是单一的字符,表示形式为由两个单引号包围的一个字符。在C语言中,字符常量具有数值特性,字符常量的值就是该字符的ASCII码值,因此,可以说字符常量实际上是一个正整数。字符串常量用双引号包围的一串字符表示。字符串常量在内存中存储时,自动在其尾部追加一个字符0,所以长度为n个字符的字符串常量,在内存中占用n+1个字节的空间。转义字符常量为C语言中使用字符的一种特殊形式。转义字符常量用反斜线“”后面跟一个字符或一个数字表示。在C语言中,常量可用符号代替。代替常量用的符号称为符号常量。为便于与一般变量相区分,符号常量一般使用大写英文字母。符号常量在使用之前必须预先定义,定义的一般格式是:define 符号常量 常量在每个符号常量定义式中只能定义一个符号常量,并占据一书写行。注意必须以号打头,且后面不能加分号。它们不是C语言程序语句,而是发给编译系统的预处理命令。2、 C运算符的种类、运算优先级、结合性运算是对数据加工的过程。表示各种不同运算的符号称为运算符,参加运算的数据称为运算量或操作数。其中取余运算的运算量必须是整型常量或整型变量,即实型数运算量不能参加取余运算。注意单目算术运算中的加一和减一运算中,运算符或可以写在变量之后或之前。它们分别称为后缀运算符和前缀运算符。无论是前缀还是后缀运算符,对于变量本身来说自增1或自减1都具有相同的效果,但作为表达式来说却有着不同的值。例如,若变量i为int类型,且值为6,则表达式+i,先进行i增1运算,表达式的值为7;-i先进行i减1运算,表达式的值为5;i+表达式的值为6,i进行增1运算,使i的值变为7;i表达式的值为6,i进行减1运算,使i的值变为5。在C语言中,双目算术运算可以与赋值运算结合在一起,形成算术复合赋值运算符。比如:a+=2等价于a=a+2。关系运算是对两个运算量进行大小关系比较。C语言中的六种关系运算符是:大于(),小于(=),小于等于(=),不等于(!=)。逻辑运算表示运算量的逻辑关系。C语言中有三种逻辑运算,分别是:逻辑与(&),逻辑或(|),逻辑非(!)。三目条件运算有三个运算量,它使用两个运算符“?”和“:”。3、 不同类型数据间的转换与运算强制类型转换表达式的形式如下:(类型名)(表达式)其中(类型名)称为强制类型转换运算符,可以利用强制类型转换运算符,将一个表达式的值转换成指定的类型。不同类型数据间的运算的规则如下: 双目运算符两边的运算数的类型必须一致才能进行操作,所得的运算结果的类型与运算数的类型一致。 如果双目运算符两边运算数的类型不一致,系统将自动转换类型,使两边的类型一致,再进行计算。4、 C表达式类型和求值规则 算术表达式用运算符将运算量连接起来的式子称为算术表达式,简称表达式。任何算术表达式都有一定的运算结果值。算术表达式是C语言程序中可执行语句的一种。在算术表达式中的运算量可为常量或变量。所有运算量都是常量的算术表达式称为常量表达式。 赋值表达式简单赋值是把一个算术表达式的值赋予一个变量,其一般形式是:变量=算术表达式称为赋值表达式。其中,“=”是运算符,称为赋值符。赋值符左边的运算量必须是变量,右边的算术表达式可为单一的常量、变量和函数调用。在赋值运算时,当赋值号两边的数据类型不同时,由系统自动进行类型转换。转换原则是:赋值符右边的数据类型转换成左边的类型。 关系表达式表示关系运算的表达式称为关系表达式。关系表达式的结果值是1或0。运算的规则是:如关系表达式表示的关系成立,则它的结果是1,否则结果为0。关系表达式经常用于流程控制中作为分支或循环的条件,所以关系运算又称为二目条件运算。关系表达式又称为二目条件表达式。此外,三目条件算术表达式的一般形式为:e1?e2:e3。其中e1、e2和e3是三个运算量,它们可以是算术表达式。三目条件运算的过程是:当e1的值非零,则此三目条件表达式的结果值是e2。否则,若e1的值是零,则三目条件式的的结果是e3。 逻辑表达式逻辑运算的表达式称为逻辑表达式。逻辑表达式的运算值为1或0。逻辑反运算是,当运算量是非零值时,运算结果是零;反之,当运算量是零值时,运算结果是1。逻辑与运算是,当两个运算量都是非零值时,运算结果为1,否则运算结果为0。逻辑或运算是,当两个运算量中只要有一个为非零值,则运算结果为1。只有当两个运算量都是零值时,结果才为零。 逗号表达式C语言中可用逗号把若干个独立的算术表达式结合成一个算术表达式,称为逗号结合算术表达式,简称逗号表达式。逗号表达式的一般形式为:表达式1,表达式2,表达式n在逗号表达式中,从左向右进行各个表达式的运算,最后一个表达式的值就是逗号表达式的结果。逗号表达式可作为赋值运算的右边表达式使用。由于逗号表达式是一个算术表达式,所以在程序中可以作为一个单一语句使用。2.1.2历届最新考题汇编【2007年9月考题】(1)C语言源程序名的后缀是:_A).exe B).c C).obj D).cpp答案:B【分析】C语言源程序的后缀是.C或.c。后缀为.exe的文件是可执行文件;后缀为.obj的文件是目标文件。【2007年9月考题】(2)可在C程序中用作用户标识符的一组标识符是:_A) and B)Date C)Hi D)case_2007 y-m-d Dr.Tom Big1答案:A 【分析】C语言中,用户所定义的标识符由字母、数字、和下划线组成,并且第一个字符必须为字母或下划线,所以选项B和C错误;case是C语言的关键字,不能用来作为用户标识符,所以选项D错误。答案是A。【2007年9月考题】(3)以下选项中,合法的一组C语言数值常量是:_A)028 B)12. C).177 D)0x8A .5e-3 0Xa23 4e1.5 10,000 -0xf 4.5e0 0abc 3.e5答案:B 【分析】指数形式表示数值常量时,字母e或E前必须有数字,且e或E后面的指数必须为整数,因此选项A和C错误;10,000是一个逗号表达式不是一个数值常量,所以选项D错误。答案是B。【2007年9月考题】(4)以下叙述中正确的是:_A) C语言程序将从源程序中第一个函数开始执行B) 可在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C) C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D) main可作为用户标识符,用以命名任意一个函数作为主函数答案:C【分析】一个C语言程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何,main不能作为用户标识符。答案是C。【2007年9月考题】(5) 以下关于long、int和short类型数据占用内存大小的叙述中正确的是:_A)均占4个字节 B)根据数据的大小来决定所占内存的字节数 C)由用户自己定义 D)由c语言编译系统决定答案:D【分析】不同的C语言编译系统中,long、int和short类型数据占用内存大小不同,所以,答案是D。【2007年9月考题】(6)设有条件的表达式:(EXP)?i+:j-,则以下表达式中与(EXP)完全等价的是:_A)(EXP=0) B)(EXP!=0) C) (EXP=1) D)(EXP!=1)答案:B【分析】三目条件算术表达式的一般形式为:e1? e2:e3。其中e1、e2和e3是三个运算量,它们可以是算术表达式。三目条件运算的过程是:当e1的值非零,则此三目条件表达式的结果是e2。否则,若e1的值是零,则三目条件式的结果是e3。因此,答案是B。【2007年9月考题】(7)已有定义:char c;,程序前面已在命令行中包含ctype.h文件。不能用于判断c中的字符是否为大写字母表达式是:_A)isupper(c) B) A=c=Z C)A=c&c=Z D)c=(z-32)&(a-32)=c答案:B 【分析】表示变量c的值大于字符A并且小于字符Z正确的写法为:A=c& c0) B)(x-y0) C)(x-y0) D)(x-y=0)答案:C 【分析】条件表达式的一般形式为:e1?e2:e3。其中e1、e2和e3是三个运算量,它们可以是算数表达式。条件运算的过程是:当e1的值非零(大于零或小于零),则此条件表达式的结果值是e2。否则,若e1的值为零,则条件表达式的结果为e3。所以答案是C。【2006年9月考题】(7) 有以下程序main() int x,y,z x=y=1; z=x+,y+,+y; printf(“%d,%d,%dn”,x,y,z); 程序运行后的结果是:_A)2,3,3 B )2,3,2 C) 2,3,1 D)2,2,1答案:C 【分析】赋值运算符“=”的优先级高于逗号运算符“,”,因此赋值语句z=x+,y+,+y;等价于(z=x+),y+,+y;。表达式x+中的“+”运算符是后缀运算符,所以变量z的值被赋值为当前x的值,即为1,然后x的值增加1,变为2;执行语句y+,+y后,y的值变为3。所以答案是C。【2006年9月考题】(8) 以下选项中,值为1的表达式是:_A) 1-0 B)1-0 C) 1-0 D) 0-0答案:B 【分析】NULL常用0表示,在ASCII码中,其代码值为0。所以表达式1-0的值为1。答案是B。【2006年4月考题】(9)以下不合法的用户标识符是:_A)j2_KEY B)Double C)4d D)_8_答案:C【分析】C语言中,用户定义的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,所以选项C错误。答案是C。【2006年4月考题】(10) 以下不合法的数值常量是:_ A) 011 B)1e1 C)8.0E0.5 D)0xabcd答案:C【分析】C语言中,八进制数用数字0开头,所以选项A正确;实型常量可用小数形式和指数形式表示,其中指数形式以“e”或“E”后跟一个整数来表示以10为底的幂数,但是字母e或E之前必须要有数字,且e或E之后的指数形式必须为整数,所以选项C错误;十六进制数以0x或者0X开头,所以选项D正确。答案是C。【2006年4月考题】(11)以下不合法的字符常量是:_A) 018 B) ” C) D) xcc答案:A 【分析】要表示一个转义字符常量,必须以一个反斜线开头后跟一个特定的字符,用来代表某一特定的ASCII字符,这些字符常量也必须括在一对单引号内。要将反斜杠字符赋给变量a,则表达式应为char a=。在转义字符常量中,反斜线后的八进制数可以不用0开头,即可以用反斜线后跟一个八进制数来表示一个ASCII字符,所以选项A错误。【2006年4月考题】(12)表达式3.6-5/2+1.2+5%2的值是:_A)4.3 B)4.8 C)3. 3 D)3.8 答案:D 【分析】表达式3.6-5/2+1.2+5%2中,5/2的计算结果为2,5%2的计算结果为1,所以表达式等于3.6-2+1.2+1,值为3.8。所以,答案是D。【2006年4月考题】(13) 以下四个程序中,完全正确的是:_A) #include main(); /*programming*/ printf(“programming!n”); B) #include main() /*/programming/*/ printf(“programming!n”);C)#include main() /*/*programming*/*/ printf(“programming!n”); D) include main() /*programming*/ printf(“programming!n”); 答案:B 【分析】选项A中,main()函数后多加了一个分号,选项A中的程序错误;注释不能嵌套,所以选项C错误;选项D中,在包含头文件的时候,include前应该加上符号#。所以答案是B。【2006年4月考题】(14)以下叙述中错误的是:_A)C语言源程序经编译后生成后缀为.obj的目标程序。B)C程序经编译、连接步骤之后才能形成一个真正可执行程序的二进制机器指令文件。C)用C语言编写的程序称为源程序,它以ASCII代码的形式存放在一个文本文件中。D)C语言的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令。答案:D 【分析】C语言源程序经过编译之后生成后缀为.obj的目标程序,选项A正确;C程序经过编译、连接后才能形成一个可执行的二进制机器指定文件,选项B正确;用C语言编写的程序称为源程序,它以ASCII 代码形式存放在一个文本文件中,如.c文件,选项C正确;C语言中的每条可执行语句将被转换成二进制的机器指令;非执行语句不被转换成二进制的机器指令,所以选项D错误。答案是D。【2006年4月考题】(15) 以下叙述中错误的是:_A)算法正确的程序最终一定会结束 B)算法正确的程序可以有零个输出 C)算法正确的程序可以有零个输入 D)算法正确的程序对于相同的输入一定有相同的结果答案:B 【分析】算法具有五个基本特性,分别是有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。所以选项B错误。答案是B。【2006年4月考题】(16) 以下叙述中错误的是:_A)C语言程序必须由一个或一个以上的函数组成 B)函数调用可以作为一个独立的语句存在C)若函数有返回值,必须通过return语句返回 D)函数形参的值也可以传回给对应的实参答案:D 【分析】C程序必须由一个或一个以上的函数组成,选项A正确;函数调用可以作为一个独立的语句存在,选项B正确;若函数有返回值,必须通过return语句返回;选项C正确;C语言中,数据只能从实参单向传递给形参,称为“按值”传递,所以选项D错误。【2006年4月考题】(17)以下叙述中错误的是:_A)C程序中的#include和#define行均不是C语句B)除逗号运算符外,赋值运算符的优先级最低C)C程序中,j+;是赋值语句D)C程序中,+、-,*、/、%号是算数运算符,可用于整型和实型数的运算答案:D 【分析】在C语言中,凡是以“#”号开头的行,被称为“编译预处理”命令行,所以C程序中的#include和#define行均不是C语句,选项A正确;C语言中逗号运算符优先级最低,赋值运算符的优先级仅仅比逗号运算符高,选项B正确;C程序中,j+;是赋值语句,它相当于语句j=j+1;,选项C正确;C程序中,+、-、*、%号是算数运算符,其中%运算符的运算对象只能是整型,所以选项D错误,答案是D。【2005年4月考题】(18) 以下叙述中错误的是:_A)用户所定义的标识符允许使用关键字 B)用户所定义的标识符应尽量做到“见名知意”C)用户所定义的标识符必须以字母或下划线开头 D)用户定义的标识符中,大小写字母代表不同标识符答案:A 【分析】程序中使用的用户标识符除要遵循起名规则外,还应注意做到“见名知意”,所以选项B正确;用户所定义的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,所以选项C正确;用户所定义的标识符中,大写字母和小写字母都被认为是两个不同的标识符,所以选项D正确;C语言中规定了一批标识符,它们在程序中代表着固定含义,不能另作它用,所以选项A错误。答案是A。【2005年4月考题】(19)以下叙述中错误的是:_A)C语句必须以分号结束 B)复合语句在语法上被看作一条语句C)空语句出现在任何位置都不会影响程序运行 D)赋值表达式末尾加上分号就构成赋值语句答案:C 【分析】C语句必须以分号结束,所以选项A正确;复合语句是用花括号把若干语句括起来构成的一个语句组,一个复合语句在语法上视为一条语句;所以选项B正确;在一个赋值表达式末尾加上分号就构成了赋值表达式,所以选项D正确;仅仅一个分号也可以构成一条语句,称为空语句,但是随意加上分号有时也会导致逻辑错误,空语句并不能随意出现在程序任何位置,所以选项C错误,答案是C。【2005年9月考题】(20) 当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是:_A)k%2 B)k%2=1 C)(k%2)!=0 D)!k%2=1答案:D 【分析】当把四个选项中的表达式用作if语句的控制表达式时,当k为奇数时,选项A、B、C中的表达式的值不等于0(值为真);当k为偶数时,选项中A、B、C、中的表达式等于0(值为假)。选项D中的表达式!k%2可以写成(!k)%2,表示的意思是k等于0,!k%2的值为1;k不等于0时,!k%2的值为0。所以答案是D。【2005年9月考题】(21) 以下不能正确计算代数式sin()值的C语言表达式是:_A)1/3*sin(1/2)*sin(1/2) B)sin(0.5)*sin(0.5)/3 C)pow(sin(0.5),2)/3 D)1/3.0*pow(sin(1.0/2),2)答案:A 【分析】选项A中由于1/3的计算结果为0,所以整个表达式的值为0。所以答案是A。【2005年9月考题】(22) 设有定义:int k=1,m=2;float f=7;,则以下选项中错误的表达式是:_A)k=k=k B)-k+ C)k%int(f) D)k=f=m答案:C 【分析】在C语言中,强制类型转换表达式的形式为:(类型名)(表达式) 所以选项C错误,如果把选项C改成k%(int)f,则正确。【2005年9月考题】(23) 设有定义,int a=2,b=3,c=4;,则以下选项中值为0的表达式是:_A)(!a=1)&(!b=0) B)(ab)&!c|1 C)a&b D)a|(b+b)&(c-a)答案:A 【分析】!是逻辑非运算符,运算符!的优先级高于=,在选项A中,!a的值是0而不是1,所以表达式(!a=1)的值为0,&是逻辑与运算符,只要它的一个运算符为0,则结果为0,所以表达式(!a=1)&(!b=0)的值为0。答案是A。【2005年9月考题】(24)有以下程序段 int k=0,a=1,b=2,c=3; k=ac?c:k;执行该程序段后,k的值是:_A)3 B)2 C)1 D)0答案: B 【分析】首先执行语句k=ab?b:a;,由于ac?c:k;,由于kc,所以把变量k的值赋给变量k,k的值仍为2。【2005年4月考题】(25) 算法具有五个特性,以下选项中不属于算法特性的是:_A)有穷性 B)简洁性 C)可行性 D)确定性答案:B 【分析】算法具有五个基本特征,分别是有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。所以答案是B。【2005年4月考题】(26) 以下选项中可作为C语言合法常量的是:_ A)-80. B)-080 C)-8e1.0 D)-80.0e答案:A 【分析】选项A是实数-80.0的常量形式,选项B试图表示一个八进制的负数,但是八进制数只能用07来表示;选项C和D用指数形式来表示实数,但是e或E后面的指数必须是整数。所以,答案是A。【2005年4月考题】(27) 以下叙述中正确的是:_A) 用C程序实现的算法必须要有输入和输出操作B) 用C程序实现的算法可以没有输出但必须要有输入C) 用C程序实现的算法可以没有输入但必须要有输出D) 用C程序实现的算法可以既没有输入也没有输出答案:C 【分析】根据算法的特征,一个算法可以没有输入,但至少应该有一个输出,算法的目的是求解,这些解只能通过输出才能得到。所以答案是C。【2005年4月考题】(28) 以下不能定义为用户标识符是:_ A)Main B) _0 C)_int D)sizeof 答案:D 【分析】sizeof是C语言中的操作符,不能用来做用户标识符,所以答案是D。【2005年4月考题】(29) 以下选项中,不能作为合法常量的是:_ A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0 答案:B 【分析】要用指数形式来表示实型常数,在字母e或E前必须有数字,且e或E后的指数必须为整数,而选项B中,e后的指数为0.4,不是一个整数,答案是B。【2005年4月考题】(30) 数字字符0的ASCII值为48,若有以下程序main() char a=1,b=2; printf(“%c,”,b+); printf(“%dn”,b-a);程序运行后的输出结果是:_A)3 , 2 B)50, 2 C)2 , 2 D)2, 50答案:C 【分析】第一个printf语句输出b的值(字符2)和一个逗号,然后b自加1,变为3;第二个printf语句输出b和a之差,即整数2。所以输出的结果是2,2,答案是C。【2005年4月考题】(31)有以下程序 main() int m=12,n=34; printf(“%d%d”,m+,+n); printf(“%d%dn”,n+,+m); 程序运行后的输出结果是:_A)12353514 B)12353513 C)12343514 D)12343513答案:A 【分析】在第一个printf语句中,输出m+的值12和+n的值35,输出后m和n的值分别为13和35;在第二个printf语句中,输出n+的值35和+m的值14,输出后m和n的值分别为14和36。所以,程序运行后输出的结果是12353514.答案是A。【2005年4月考题】(32) 有以下程序 main() int a,b,d=25; a=d/10%9; b=a&(-1); printf(“%d,%dn”,a,b); 程序运行后的结果是:_A)6,1 B)2,1 C)6,0 D)2,0 答案:B 【分析】/是整数除法运算符,%是整数取模运算符,d/10的值为2,2%9的值为2,所以,a的值为2;&是逻辑与运算符,a和-1都是非0值,所以,b的值为真,即1。程序运行后的输出结果是2,1,答案是B。【2005年4月考题】(33) 有以下程序main() int i=1,j=2,k=3; if(i+=1&(+j=3|k+=3) printf(“%d %d %dn”,i,j,k); 程序运行后的输出结果是:_ A)1 2 3 B)2 3 4 C)2 2 3 D)2 3 3 答案:D 【分析】表达式i+=1的值为真,所以程序还要计算(+j=3|k+=3)的值,因为+j=3的值为真,程序不用计算k+=3的值已经能判定(+j=3|k+=3)的值为真,这种现象称为“短路”。所以,在本题中,i和j均执行了自加1操作,而k保持不变。输出时,i、j、k的值分别是2、3、3,答案是D。二、填空题【2007年4月考题】(1) 执行以下程序后的输出结果是。main() int a=10; a=(3*5,a+4); printf(“a=%dn”,a);答案:a=14 【分析】语句 a=(3*5,a+4);中,逗号表达式3*5,a+4的值为14,所以执行语句printf(“a=%dn”,a);,将输出a=14。【2007年4月考题】(2) 已定义char ch=$;int i=1,j;,执行j=!ch&i+以后,i的值为。 答案:1 【分析】程序不用计算i+的值已经能判定表达式!ch&i+的值为假,这种现象称为“短路”。所以表达式i+不会被执行,因此i的值保持原值,即为1。【2006年9月考题】(3) 设有定义:float x=123.4567;,则执行以下语句后的输出结果是。 printf(“%fn”,(int)(x*100+0.5)/100.0); 答案:123.460000 【分析】表达式(int)(x*100+0.5)/100.0中,x*100+0.5的值为12346.17,进行取整运算后的值为12346,因此12346/100.0的值为123.46。printf语句中输出格式字符f表示以小数的形式输出单精度或双精度值。所以答案是123.460000。【2006年9月考题】(4) 以下程序运行后的输出结果是。 main() int m=011,n=11; printf(“%d %dn”,+m,n+); 答案:10 11 【分析】C语言中,八进制数用数字0开头。在程序中,把八进制数的11赋予变量m,把十进制数的11赋予变量n。使用printf输出时,格式说明“%d”的功能是以十进制形式输出整型数,表达式+m中,+是前缀运算符,所以当输出表达式+m的值时,将先使变量m的值加1,再输出变量m的值,八进制数的11转换成十进制是9,因此输出表达式+m的值为10;表达式n+中,+是后缀运算符,所以当输出表达式n+的值,将先输出变量n的值,再使变量n的值加1,因此输出表达式n+的值为11。【2006年9月考题】(5) 以下程序运行后的输出结果是。 main() int x,a=1,b=2,c=3,d=4; x=(

温馨提示

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

评论

0/150

提交评论