C语言习题解析【含基础知识讲解】_第1页
C语言习题解析【含基础知识讲解】_第2页
C语言习题解析【含基础知识讲解】_第3页
C语言习题解析【含基础知识讲解】_第4页
C语言习题解析【含基础知识讲解】_第5页
已阅读5页,还剩186页未读 继续免费阅读

下载本文档

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

文档简介

1、C 语言习题解析 版权所有,盗版必究南京农业大学工学院林科学 编著第 1 章 C 语言基础11 简介 英文是一种自然语言,学习英文首先要学习字符(字母和其它符号)、单词、然后学习语句短语,最后学习用语句构成文章。C 语言是一种高级计算机语言,接近于人们习惯的自然语言和数学语言,也要先学习字符,基本词类,然后再学习语句的构成规则,最后学习用语句构成程序。 本章介绍C 语言的字符集、数据类型、运算符等。 12 知识点 l 基本语法概念:关键字、标识符、数据类型、变量、常量 l 常量的表示方法:整数、实数、字符、字符串常量、标识符常量 l 类型转换:自动类型转换、赋值类型转换、强制类型转换 l 运算

2、符:算术运算符、关系运算符、逻辑运算符、字位运算符、其他常用运算符。 13 概念 1.3.1 字符集 在C语言程序中允许出现的所有基本字符的组合称为C语言的字符集。C 语言的字符集就是ASCII 字符集,主要包含下列几类: 1. 大小写英文字母 AZ、az(52 个); 2. 数字 09(10个); 3. 其它可显示字符(33 个); 4. 转义字符(11 个)。 在 C 语言中,有一些不可显示字符。表示这些字符不可直接书写,而是使用反斜杠符号“”开始并后跟单个字符或若干字符的组合。 1.3.2 保留字 在 C 语言中有特殊含义的单词称为“保留字”,也称“关键字”,主要用于构成语句。所有保留字

3、均由小写字母组成。C 语言保留字共有32 个。 133 标识符 所谓标识符是指常量、变量、语句标号以及用户自定义函数的名称。作为标识符必须满足以下规则: 标识符必须由字母、下划线或数字(09)组成; 标识符的第一个字符可以是字母(az, AZ)或下划线(_); 保留字不能作标识符。 温馨提示:C 语言是一种大小写敏感的语言。如 Test、test 是 2 个不同的标识符。 134 数据类型 C 语言中的数据类型,可以分为基本数据类型和派生数据类型两类。 基本数据类型是 C语言系统中预定义的内部数据类型,有 char、int、float、double、void 型。 字符型用来存放一个ASCII

4、码字符或一个 8位的二进制数;整型用来存放一个整数,实型用来存放实数,双精度型用来存放双精度数。不同的编译系统为各种类型数据分配的内存字节数不同,本书按照 Turbo C介绍。 基本类型可以加某些关键字对其进行修饰:如 short 表示短,long 表示长,signed 表示有符号, unsigned 表示无符号等。 用 short、long 、unsigned 、signed 这四个关键字修饰 int 类型时,int 可以省略, 例如:unsigned int 可简写为unsigned。 无修饰词的 int 类型和 char 类型,编译程序认为是有符号的。即相当于 signed int 和

5、signed char。 派生数据类型则是根据用户需要,按照 C 语言规则由基本数据类型构造出来的数据类型,有指针、数组、结构体、联合体、枚举等类型。这些内容将在后面的章节中进行介绍。 每种数据类型表示的数的范围是有限的,当数超过此范围,则会发生溢出, 无符号整数的最高位也是数据位,而不是符号位。数据以原码形式存放。例如整数 7 的原码是 (0000 0000 0000 0111),而二进制的无符号整数(1000 0000 0000 0000)表示的是整数 215 。 温馨提示:有符号整数的最高位是符号位,最高位为 0,表示该数是正数,最高位为 1,表示该数是负数。正整数以原码的形式存放。负整

6、数在内存中以整数的“补码”形式存放。求补码的方法如下:先求原码的反码,再在反码上加 1,简言为“求反加 1”。如 1 在内存中的形式为(0000 0000 0000 0001);则­1在内存中的形式为先对 1 求反码,在此基础上加1,即得(1111 1111 1111 1111)。 135 变量 在程序执行过程中,其值可以改变的量称为变量。其作用是存储数据。每个变量属于一种类型。 每个变量只能存放其类型允许的值。定义格式如下:数据类型 变量名 1,变量名 2,变量名 n; 在一条语句中,可以定义一个变量也可以同时定义若干个变量。变量名作为变量的标识,应是一个合法的C 语言标识符。 1

7、36 常量 在程序运行过程中,值不会被改变的量称之为常量。 1整型常量 整型常量是指不含小数点的整数,它可以有正负号。如果是正号,可以省略。 十进制整数的表示和日常表示一样,由09 组成。如:100,34,­15 等都是十进制数。 八进制整数的表示以0 开头,由 07组成。如:012、0456、­045 都等是八进制数。 十六进制整数的表示以 0X 或 0x 开头,由 09,af(或 AF)字母组成。如:0x2a、0X123 等都是十六进制数。 2实型常量 实型常量即实数,也称浮点数。有十进制小数和十进制指数两种表示形式。 实型常量可以有正负号。如果是正号,可以省略。 十进

8、制小数形式由数字和小数点组成(必须有小数点)。例如:1.25、3.14、0.0、­123.9 等都是实数。当整数部分或小数部分为 0 时,可以忽略不写,但不能同时省略。 指数形式是指以 10的方幂表示的数, 也称科学表示法。 由小数和指数两部分组成, 两者缺一不可。指数部分用 e来表示方幂。 温馨提示:用指数形式表示小数时,方幂 e前后必须是数字,e 的前面可以是整数也可以是小数, e 后面只能为 13 位整数。例如:1.24e3 表示 1.24×10 3 ,­4.3e­2 表示­4.3×10­ 2 。但 1.3e、 e2、

9、1.2e3.1等都是不合法的实数。 3字符常量 字符常量是用单引号括起来的一个字符,如e、E。字符常量在内存中以8 位的整型常量存放,该整型的值被称为 ASCII码。 当某些字符不能直接显示或者不能从键盘上输入时,可采取转义字符表示。 转义符后若是一个整型常量,则必须是一个以 0 为前缀的八进制或以 x 为前缀的十六进制数,其大小在十进制数 0255 之间。当为八进制数时,前缀 0 可以省略。 4字符串常量 用一对双引号将 0 个或若干个字符括起来,称为字符串常量。编译系统在处理字符串常量时,会自动在字符串常量的尾部加上'0'。 5标识符常量 标识符常量是指用一个标识符来表示一

10、个常量。用以增加程序的可阅读性和可维护性。定义标识符常量的格式为: #define 标识符 常量值 define 定义的常量,通常被称为宏定义常量。系统在编译程序前,首先对源程序进行预处理,将宏定义中的标识符替换成常量值,并生成临时的中间文件,再对该中间文件进行编译。在宏替换时,只是标识符和常量值之间的简单替换,预处理本身不做任何数据类型和合法性检查。程序运行时也不分配内存空间。 137 运算符及优先级 C 语言中对数据进行处理,和其他程序设计语言一样,也是通过运算符完成的。运算符是完成对常量、变量等操作对象进行运算的符号。运算符的对象称为操作数。对一个操作数进行运算的称为一元(单目)运算符,

11、对两个操作数进行运算的称为二元(双目)运算符,对三个操作数进行运算的称为三元(三目)运算符。 常量、变量等数据通过运算符组合在一起构成了C 语言的表达式,每个符合C 语言规则的表达式将有一个确定的结果,这个结果的类型一般取决于操作数的类型。当多个运算符组合成一个复合表达式时,运算符的求值次序根据运算符的优先级和结合规则来确定。表 1­1 列出了C 语言中各种运算符及其优先级。 表 1­1 C 语言运算符及其优先级 优先级 运算符 功能说明 结合性 1 ( ) 改变优先级 从左至右 : 作用域运算符 数组下标 .,­> 成员选择2 +,­­

12、 增1或减1运算符 从右至左 & 取地址 * 取内容 ! 逻辑求反 按位求反 +,­ 取正、负数 ( ) 强制类型转换 sizeof 取所占内存字节数 3 *, / , % 乘法,除法,取余 从左至右 4 +,­ 加法,减法 5 <<, >> 左移位,右移位 6 <,<=,>,>= 小于,小于等于,大于,大于等于 7 =,!= 相等,不等 8 & 按位与 9 按位异或 10 | 按位或 11 && 逻辑与 12 | 逻辑或 13 ? : 三目运算符 从右至左 14 =,+=,­=,*=

13、,/=,%= ,&= ,= ,!= ,<<=,>>= 赋值运算符 15 , 逗号运算符 从左至右 138 算术运算符 算术运算符包括 +(正)、­(负)、+(加)、­ (减)、*(乘)、/(除)、%(取模)。 若除法运算符的左右两边操作数是整数,则进行整除运算;只要除法运算符有一个操作数是实数,则进行普通的除法运算;例如: 5/4 除法两边操作数是整数,进行整除运算,结果为 1。 5.0/4 除法两边操作数不全是整数,进行除法运算,结果为 1.25。 取模运算符“%”,也即取余运算,两边的操作数必须是整数,其取模结果符号必须与被除数相同。 如

14、 16%­5 的值是 1,­16%5 的值是­1。 算术运算符的优先级和结合性与人们习惯的数学语言中该类运算符的优先级和结合性是基本一致的。 若双目运算符两边的类型不一致,则系统将按照自动类型转换规则使两边类型一致后再进行运算。 温馨提示:在使用算术运算符时,需要注意有关算术表达式求值溢出的处理问题。整数运算产生溢出时则不认为是一个错误,但这时运算结果已不正确了。 139 赋值运算符(1)赋值运算符 在 C 语言中,“=” 是一个赋值运算符, 它的作用是将一个值或一个表达式的值赋给“=”左边的变量。 C 语言中的等于是“=”。 赋值运算符的左操作数必须是变量,右操

15、作数可以是常量、变量、表达式等。赋值运算符所组成的表达式称为赋值表达式。 赋值运算符的优先级较低,仅高于逗号运算符。因此赋值表达式通常先计算赋值运算符右边的表达式,并将结果赋给赋值运算符左边的变量。 C 语言中的赋值运算符“=”与数学的等号含义截然不同,如 i=i+1,数学中是不成立的,但在 C 语言中表示,i 的值加1 并重新赋给变量 i。 温馨提示:赋值表达式本身也是一个表达式,该表达式的值就是赋值的内容。因此,赋值表达式可作为另一个赋值运算符的右操作数, 赋值给一个变量, 这样就出现多个赋值号的情况, 例如“a=b=3” 相当于“a=(b=3)”。 (2)复合赋值运算符 在 C 语言中,

16、所有的双目算术运算符都可以与赋值运算符组合在一起,构成复合算术赋值运算符。 复合赋值运算符的一般形式为:变量 复合赋值运算符 表达式 它等同于:变量 = 变量 运算符 表达式例如: x*=10 相当于 x=x*10。 1310 关系运算和逻辑运算 (1) C 语言的逻辑值 关系运算符和逻辑运算符通常用作流程控制语句中的条件描述。但在 C 语言中,没有专门的逻辑 类型。C 语言中关系运算符和逻辑运算符的计算结果为整数 0 和1。1 表示逻辑“真”,0 表示逻辑“假”。 除了整数 0和 1,其它类型和其它值的变量、常量、表达式也可参与逻辑运算,当值为非0 值时,则表示逻辑“真”;若值为0 值时,则

17、表示逻辑“假”。 (2)关系运算符 C 语言中有“<”(是否小于)、“<=”(是否小于或等于)、“>”(是否大于)、“>=”(是否大于或等于)、 “=”(是否等于)、“!=”(是否不等于)六个关系运算符。 关系运算符完成两个操作数的比较,结果是一个整数。当比较关系成立时,结果为整数 1,关系不成立时,结果为零。 注意 C 语言的赋值运算符“=”与关系运算符“=”的区别。例如 x=2 表示判断 x 是否等于 2,当 x 的值为 2 时,表达式成立,结果为 1,当 x 的值不是 2 时,表达式不成立,结果为 0。而 x=2 表示将 2 赋给 x,其表达式的值即为赋值的内容2

18、。 (3)逻辑运算符 C 语言中有“&&”(逻辑与)、“|”(逻辑或)和“!”(逻辑非)三种逻辑运算符。其中“!”是单目运算符。 逻辑运算符的操作数可以是整数 0 和 1,也可以是 0和非 0 的整数,也可以是任何类型的数据,如字符型、实型或指针型等,但都是以非 0 为“真”,0 为“假”。 逻辑表达式计算的结果也是一个整数,当逻辑表达式为真时,结果为整数 1,逻辑表达式为假时,结果为 0。 温馨提示:逻辑表达式在计算时,并不是所有的运算符都会得到执行,而是采用优化算法。其含义是,在求逻辑表达式值的时候,一旦表达式的值能够确定,就不再继续进行计算。换言之,对于 “&&a

19、mp;”(逻辑与)而言, 若左操作数为0, 则整个逻辑与表达式为0, 不再计算右操作数表达式; 对于“|”(逻辑或)而言,若左操作数为 1,则整个逻辑或表达式为 1,不再计算右操作数表达式。 1311 字位运算符 C 语言中的字位运算符可分为字位逻辑运算符、字位移位运算符。 C 语言中字位逻辑运算符共四个,分别是“”(按位求反)、“&”(按位与)、“”(按位异或)和“|” (按位或)。 C 语言中字位移位运算符共两个,分别是“<<”(左移位)和“>>”(右移位)。它们都是双目运算符,作用是将一个整型或字符型量按其二进制的位模式左移或右移若干位。左移操作是将二进制

20、数依次向左移动 n 个二进制位,并在低位补 0。右移操作则与数据类型有关,若是无符号整数,则将二进制数依次向右移动 n 个二进制位,并在高位补 0;若是有符号的整数,则将二进制数依次向右移动 n 个二进制位,并在高位补符号位。如: ­32>>3/­32 的补码为(1111 1111 1110 0000)右移后为(1111 1111 1111 1100),结果为­4。 1312 其他运算符 1自增、自减运算符 自增、自减运算符共两个,+和­­,其作用是使变量的值增 1 和减 1。它们是单目运算符,+ 和­­可以出现

21、在变量的左边或右边,分别称为前缀运算符(前增量)和后缀运算符(后增量)。 所谓前缀运算符(前增量),表示先对该变量进行增量运算,再引用该变量的值进行表达式的其他运算。所谓后缀运算符(后增量),表示先引用该变量的值进行表达式的其他运算,再对该变量进行增量运算。 自增、自减运算符只能作用于变量,不能用于常量、表达式。 2逗号运算符 逗号运算符也称顺序运算符。用逗号运算符连接起来的式子称为逗号表达式,该表达式的类型和值就是最后计算的表达式的类型和值。 温馨提示:并非所有的逗号运算符都构成逗号表达式,有些情况下逗号只能作分隔符,如函数的参数之间用逗号分割:max(a+b,c+d) 3条件运算符 条件运

22、算符是 C 语言中惟一的一个三目运算符,由两个符号“?”和“:”组成。 条件运算符的格式如下: 条件表达式?表达式 1:表达式 2 其含义是如果条件表达式的结果为真(非 0),就执行表达式 1;否则就执行表达式2。 4sizeof 运算符 sizeof 是个带符号的单目运算符,而不是一个函数。它的格式如下: sizeof(表达式)或sizeof(数据类型) 它的运算结果是求出表达式的存储字节数或系统为该数据类型所设置的存储字节数。 14 习题解析一、选择题【1】若变量已正确定义并赋值,符合C 语言语法的表达式是 。 Aa=a+7; Ba=7+b+c,a+ Cint(123%4) Da=a+7=

23、c+b 参考答案:B 解析:在 A 中,选项用分号结束,它是赋值语句,不是赋值表达式。 在 B 中,先把 7+b+c 的值赋给 a,然后再使 a 的值增 l。它不用分号结束,因而是表达式。 在 C 中,求模运算符的一个运算数 123 不是整数(的两个运算数必须是整数),所以有错。 在 D 中,a=a+7 是正确的赋值表达式,但 a+7=c+b 是错误的,赋值号左面只能是变量,此选项有语法错误。所以本题答案为 B。 【2】.在C 语言中存储a和”a”所占用的字节数分别是 。 A. 1,1 B. 1,2 C. 2,1 D. 2,2 参考答案:B 解析:a为一个字符,存储占 1 个字节,“a”为一字

24、符串,系统自动为其添加一个串结束符0,其存储占 2字节。 【3】.下列不正确的转义字符是 。 A. B. C. 086 D.0 参考答案:B 解析:转义字符由两部分组成,第一部分是一个斜杠,第二部分为一特定字符或一组数字。B 只有一个斜杠而后面没有第二部分。 【4】下列符号串中不合法的C 语言标识符是 。 Aregister BTurbo_C Cauto_ D_123 参考答案:A 解析:本题的考点是标识符的定义的规则。作为标识符必须满足以下规则:标识符必须由字母、下划线或数字(09)组成;标识符的第一个字符可以是字母(az, AZ)或下划线(_);标识符不能与关键字同名。题目中A 不满足第三

25、点要求,其余选项都满足要求。 【5】. C 语言中,错误的 int 类型的常数是 。 A. 1E5 B. 0 C. 037 D. Oxaf 参考答案:A 解析:A为一个实型常数,表示 100000。C 为八进制整型常数,D 为十六进制常数。 【6】a 是一个整型变量,则执行下列输出语句后 a的值是 。 printf(“%d”,a=3*5,a*4,a+5); A65 B0 C15 D20 参考答案:C 解析:本题的考点是逗号运算符的优先级,逗号运算符将多个表达式用逗号隔开,并逐个计算各表达式。逗号运算符的优先级低于赋值运算符,因此本题中 a=3*5 为第一个表达式,先将 3*5 赋值给 a,再逐

26、个计算后面的表达式,而后续的表达式中未对 a 再进行赋值。因此选C。 温馨提示:若本题问屏幕输出的内容,则应选择 D,因为逗号运算符表达式的值等于其最后一个表达式的值 【7】.下列运算符中,优先级最高的是 。 A. B.+ C.% D. && 参考答案:A 解析:A的优先级为 1,B的优先级为 2,C 的优先级为 3,D的优先级为 11。 【8】设整型变量 x的值是 10,则表达式 2<x<5的值是 。 A不确定 B1 C0 D表达式非法参考答案:B 解析:本题的考点是关系表达式的返回值。表达式 2<x<5 分两步计算: 1. 计算 2<x,由于x

27、 的值是10,关系式成立,返回结果 1。 2. 再拿 2<x 的结果与 5 进行比较,1<5 关系式成立,因此整个表达式的结果为1。 【9】.下列关于 C语言的叙述错误的是 。 A.英文字母大小写不加以区分 B.不同类型的变量可以出现在同一个表达式中 C.在赋值表达式中赋值号两边的类型可以不同 D.某些运算符在不同的场合可以有不同的含义参考答案:A 解析:C 语言中英文字母大小写有区别的,A 错误。C 语言的表达式允许不同类型的数据混合运算,B、C 正确。有些运算符在运算对象的个数不同、所处位置不同时含义不同,D 正确。例如&: a&b(按位与),a&&am

28、p;b(与),int &b=a(引用),int *p=&a(取地址)。 【10】在32 位系统中求表达式 s=10!的值时,变量 s 的类型应当是 。 Aint Bunsigned Clong D以上三种都可以参考答案:D 解析:本题的考点是整数的表示方式。 C 语言中用 short、long、unsigned、signed 这四个关键字修饰 int 类型时,int 可以省略; unsigned 即 unsigned int,是指 32 位的无符号整数,表示数的范围为02 32 ­1; long 即 long int,在 32 位系统中与 int 的含义一样,表示数的

29、范围为­2 31 2 31 ­1。 通过数学计算可知 10!的值小于 2 31 ­1,因此选D。 【11】 在C 语言中,int、char 和 short 这 3 种类型数据所占用的内存是 。 A均为 2 个字节 B由用户自己定义 C由所用机器的机器字长决定的 D任意的参考答案:C 解析:这 3 种类型数据所占用的内存是由所用机器的机器字长和编译系统决定的,例如,在 16 位系统中,int 型数据占 2 个字节,char 占 1 个字节,在 32 位系统上,int 型数据占 4 个字节。在 16 位和 32位系统中,short 型均占 2 个字节,char 型均占

30、 1个字节。所以本题答案是C。 【12】.下列标识符中,不是C 语言保留字的是 。 A. char B. while C. min D. default 参考答案:C 解析:char 意为“字符型”,while 意为“当”,default 意为“默认”,min 不是保留字。 【13】浮点型变量 f 当前存储的值是 17.8,经(int)f 类型强制后 f 存储的值是 。 A17 B18 C不变 D不可确定参考答案:C 解析:本题的考点是强制类型转换对表达式的值的处理方法。强制类型转换不改变表达式本身的值以及类型,而是产生一个临时空间,用于暂存转换后的值,该临时空间的值被引用后,空间被释放。因此

31、选 C。 【14】.下列数据中,不是C 语言常量的是 。 A. n B. “a” C. a­2 D. 012 参考答案:C 解析:C 语言的常量是不需要运算的量,C 中含有运算符,其值需要在 a(变量)值确定的情况下通过运算才能得到。而 A 是转义常量换行,B 为字符串常量,D 为八进制整型常量。【15】.设 int x=10,a=0,b=25;,条件表达式x<1?a+10:b 的值是 。 A. 0 B. 1 C. 10 D. 25 参考答案:D 解析:因为 x=10,所以 x<1 为假,根据条件表达式的规则,表达式应取值 b。 【16】.若定义了 int a char

32、b;float c;,则表达式 a*b­c 的类型是 。 A. float B. int C. char D. double 参考答案:D 解析:因为表达式 a*b­c 中的c 为实型,根据C 语言的混合类型运算规则,所有参与运算的数据均要先转换成双精度,然后才能运算,运算的结果也为双精度型。 【17】.在C 语言中,如果下面的变量都是 int 类型,则 pad 的值是 。 sum=pad=5; pAd=sum+,pAd+,+pAd; A7 B6 C5 D4 参考答案:C 解析:在执行语句 Sum=pad=5 之后 pad 的值一直不变。而 pad 和 pAd 是两个不同的

33、变量, 所以本题答案为 C。 【18】.设 int a=10,b=20,c=30;条件表达式a<b? a=5 :c 的值是 。 A. 5 B. 10 C. 20 D. 30 参考答案:A 解析:因为 a<b 为真,表达式取值 a=5,也就是 5,A 正确。如果 a<b 为假,则表达式取值 c,也就是 30。无论如何都不会取值 B、C。 【19】符合 C 语言语法规则的常量是 。 A4eO.5 B87 C0X5A D"" 参考答案:C 解析:本题的考点是常量的表达方式。用指数形式表示小数时,方幂 e前面必须是数字,e 后面必须为整数,A不满足要求。 当字符常

34、量或字符串常量中出现转义符“”时,转义符与后面的字符或整数构成一个字符,若转义符是整数时,必须是一个以 0为前缀的八进制或以 x 为前缀的十六进制数,八进制的 0 前缀可省略。在 B 选项中,8不是八进制中的数,因此错误。 而 D 选型中的"与转义符结合,形成一个字符,因此该字符串的双引号不成对,也为错。 【20】 执行以下程序后 x 的值为 。 int a=14,b=15,x; char c=A; x=(a&b)&&(c<a); ATRUE BFALSE C0 D1 参考答案:D 解析:14 对应的二进制表示为 1110,15 对应的二进制表示为 11

35、11,两数进行位与运算的结果为 1110,不为 0,A<a为真,所以(a&b)&&(c<a)的结果为真,即 x=l。本题答案为 D。 【21】.若定义了 int a,x,y,则下列表达式中不正确的是 。 A. x=3,y=5; B.+x C. x=y+=x*30; D. a=y+x=30; 参考答案:D 解析:C 语言规定,赋值运算符的左值必须是变量,D 中一个赋值号的左值为 x+y,不是变量,故错误。A 为一个正确的逗号表达式,B 为合法的算术表达式。C 中两个含有赋值号的运算符(=和 +=)的左值均为变量,正确。 【22】关于字符串和字符的关系正确的是

36、。 A“A”与A是相同的 B字符串是常量,字符是变量 C“A”与A是不相同的 D A 与“A”一样是字符串参考答案:C 解析:本题的考点是字符串常量与字符常量的区别,“A”与A占用内存数不同前者占用两个字节, 后者占用一个字节。 在选项D 中,虽然A 中放置了 2 个字符,C 语言编译系统仍然将其看作一个字符,因为使用的是单引号。 【23】.对于数学表达式 2 x + a + b ,正确的 C语言表达式是 。 3 sin x A. 2sqrt(x)+(a+b)/3sin(x) B. 2sqrt(x)+(a+b)/(3sin(x) C. 2*sqrt(x)+(a+b)/3/sin(x) D. 2

37、*sqrt(x)+(a+b/3*sin(x) 参考答案:C 解析:A中将“2*sqrt(x)”误写为“2sqrt(x)”,相同的还有“3sin(x)”,A 错误;B 与 A相似,也错; D 的分母少写括号“()”,应为“(3*sin(x)”。 D 的分子也错,应为(a+b)。 【24】若给定条件表达式(M)?(a+):­­a,则其中表达式(M) 。 A和(M=0)等价 B和(M=1)等价 C和(M!=O)等价 D和(M!=1)等价参考答案:C 解析:(M)条件表达式的结果是一个逻辑值,表示 M 是否为真,它与 M!=0 等价,因为 M 为真时, M!=0 亦为真,M 为假时

38、,M!=0 亦为假。所以本题答案为 C。 【25】.sizeof(double)是 。 A.函数调用 B. int 型表达式 C. double 型表达式 D.非法表达式参考答案:B 解析:sizeof 是运算符,它的运算结果是求出表达式或数据类型的存储字节数或系统为该数据类型所设置的存储字节数。sizeof(double) 是求双精度类型字节数。 字节数为整数, 故答案为 A。sizeof() 不是函数调用,A 错误,sizeof()的结果类型和运算对象的类型无关,C 错误。 【26】.可以作为自定义标识符的是 。 A. 2x B. break C. m­n D. m_n 参考答案

39、:D 解析:C 语言的自定义标识符规定为“以字母或下划线开头,由字母、数字和下划线所组成的符号串,并且不能是 C 语言的保留字”。A 以数字开头,错误;B 为 C语言保留字,错误;C 中有非法符号 “­”,错误。 【27】以下不合法的十六进制数是 。 Aoxff B0Xabc C0x11 D0x19 参考答案:A 解析:十六进制的数必须以 0x 或OX开头,A以字母 o 开始,不符合这一规定,所以本题答案为 A。 【28】逻辑运算符两侧运算对象的数据类型 。 A只能是 0或 l C可以是整型或字符型数据 B只能是 0或非 0 正数 D可以是任何类型的数据参考答案:C 解析:逻辑运算符

40、两侧运算对象一定是逻辑值,在 C 语言中逻辑值有:整数 0 为假,整数非 0 为真;实数 0 为假,实数非 0 为真;空字符为假,非空字符为真。因此,逻辑运算符两侧运算对象的数据类型可以是整型、实型或字符型数据。所以本题答案为 C 。 【29】.已知 float x=l,y;则 y=+x*+x 的结果是 。 Ay=9 By=6 Cy=1 D表达式是错误的参考答案:D 解析:由于实数不能进行+运算,所以该表达式不正确。本题答案为 D。 【30】.字符串”22a,0n”的长度是 。 A8 B7 C6 D5 参考答案:C 解析:该字符串中含有转义字符,开头两个反斜杠算一个字符,其后的22算一个字符(

41、为八进制数),a算一个字符,算一个字符,O算一个字符,n算一个字符,总共 6 个字符。本题答案为 C。 二、填空题 【1】.在 Turbo C中,一个 int 型变量所能表示的数的范围是 。 参考答案:­3276832767 解析:int 型变量是有符号的,用 2 个字节共16 位表示,首位表示符号,1 为负,0为正。最小数是 1000 0000 0000 0000(补码表示的­32768),最大数是0111 1111 1111 1111(原码表示的 32767)。 【2】.在C 语言中,一个双精度数­5.88 在二进制文件里占用的字节数是 。 参考答案:8 解析

42、:16 位和 32 位系统的双精度数据均占 8 个字节,与数字的具体大小、正负无关。 【3】.设 int x=­9,y;,则执行 y=x>=0? x:­x后 y 的值是 。 参考答案:9 解析:因为 x>=0 为假,y 取值­x,也就是9. 【4】若整型变量 w=1,x=2,y=3,z=4,则条件表达式 w>x?w:z>y?z:x 的值为 。 参考答案:4 解析:本题的考点为条件表达式的用法, w>x?w:z>y?z:x 可以被分解为 w>x?w:(z>y?z:x)。 条件 w>x 不成立,因此 w>x?

43、w:z>y?z:x表达式的值即为 z>y?z:x 表达式的值,由此可推断出整个表达式的值为 4。 【5】.表达式 10<<3+1 的值是 。 参考答案:160 解析:表达式 10<<3+1相当于 10<<4, 即将 10 左移 4 位。10 用二进制表示就是00001010,左移 4 位后成为 10100000,其十进制值为160(128+32)。 【6】­个字符型变量所占内存的字节数是 。 参考答案:1 解析:16 位和 32 位系统的 C语言,字符型数据均占据 1 个字节的内存空间。 【7】.设 int a,b,c;则执行 a=(b

44、=3,c=5,b=10);后变量 a 的值是 。 参考答案:10 解析:(b=3,c=5,b=10)为一逗号表达式,表达式的值为最后一个逗号右边的表达式的值,就是 b=10 的值,也就是 10。系统先计算出(b=3,c=5,b=10)的值(为 10),再将 10 赋值给 a,因而答案为10。 【8】.设 int x=2,y=1;则表达式x+y的值是 。 参考答案:3 解析:x+y 可以理解为(x+)+y,因为 x+是后置的,要先使用后+,因而表达式的值为 2+1,然后 x+变为 3。C 语言在理解+时,会尽量的向左结合,既前 2 个+一组(x+),而不是后 2个+结合形成+y。 【9】 设 a

45、、b 、c 都是整型, 当 a=b=c=5 时, 则表达式 a+=b+C+的结果是 a= 、b= 、 c= 。 参考答案:15 5 6 解析:1本题的考点是复合赋值运算符和后增量运算符。在 C 语言中,所有的双目算术运算符都可以与赋值运算符组合在一起,构成复合算术赋值运算符。a+=b+C 相当于 a=a+b+C。 2后缀运算符(后增量)表示先引用该变量的值进行表达式的其他运算,再对该变量进行增量运算。因此先将 c 的初始值 5 参与算术运算,a 的值变为 15,再进行 c 增量运算,c 的值为6。 【10】设有语句“int a=6,b=3;float x=8,y;y=b/a*x/2;”,则 y

46、的值是 。 参考答案:0 解析:本题的考点是运算符的优先级和结合性以及整除的概念。若除法运算符的左右两边操作数是整数,则进行整除运算。 【11】己知 char c=A';int i=l,j;执行语句 j=!c&&i+后,i 和 j 的值分别是 和 。参考答案:1 和 0 解析:c 字符不是空字符,所以!c 为假,按照 C 语言的逻辑表达式优化规则,整个表达式的值已经确定(为假),不再执行 i+。i=l,j=0。所以本题答案为 1,0。 【12】设y 为 int 型变量,描述“y 是奇数”的表达式是 。 参考答案:y2=1 或 y2!=0 解析:奇数就是除 2 余1 的数

47、。y 是奇数, 则 y 除2 余l, 所以本题答案为:y 2=1或 y2!=0。 【13】假设有 int i=2,k;则执行k=(i+)+(+i)+(i+);语句后,i和 k 的值分别是 。 参考答案:5 和 9 解析:该语句中有一个前缀+,两个后缀+,所有前缀+先执行,再执行赋值语句,后执行所有的后缀+,因此 k=(i+)+(+i)+(i+);等价于+i;k=i+i+i;i+;i+;因此,k=9, i=5。本题答案为 5,9。 【14】假设有 int i=2,k;则执行k=(i+)+(+i)+(+i);语句后,i和 k 的值分别是 。 参考答案:5 和 10 解析:该语句中有两个前缀+,一个

48、后缀+。系统从左边+号算起,先计算(i+)+(+i),就是 3+3,结果为 6,再执行 6+(+i),就是 6+4,结果为 10,最后执行 i+,i 为5。因此,k=10, i=5。本题答案为 5,9。 【15】.设 int a=­3,b=7,c=­1;则执行(a=0)&&(a=a%b<(b/c);后变量 a 的值是 。参考答案:­3 解析:因为a=0为假,参考第11题,不再计算&&后面的(a=a%b<(b/c),故而a没有被重新赋值,保持原值­3。16 同步练习题 一、选择题 【1】.假定有以下变量定义: i

49、nt k=6,x=12; 则能使 x,k 值为 5、6 的表达式是 。 A. x%=+k%10 B. x%=k+k%5 C. x­=+k%5 D. x­=k+%5 【2】设有变量说明:int x;则表达式 x=4*5,x*5,x+25 的值为 。 A20 B45 C100 D125 【3】. C 语言中错误的 int 类型常数是 。 A. 123 B. 380 C. 038 D. 0xAF 【4】设有说明:int x=1,z=1,y=1,k;执行语句:k=x+|+y&&+z;后,变量 y 的值为 。 A1 B2 C3 D4 【5】.下列符号中是正确的C 标识

50、符的是 。 A. a­2 B. x12 C. 2. 78 D. 【6】在C 语言中,下面符号串中,能用作变量名的标识符为 。 Aauto BPuts C­1*num D2­and 【7】. sizeof(float)是 。 A.函数调用 B. 非法表达式 C. float 型表达式 D. int 型表达式 【8】下面的常量表示中不正确的是 。 A0 B0fd Cn D.5e3 【9】 以下运算符中,优先级最低的是 。 A&& B& C&= D= 【10】.以下符合C 语言语法的实型常量是 。 A. 12E0. 5 B. 3.14.1

51、59E C. 5E­3 D. E15 【11】 有整型变量 x ,y ,其中 y!=0,下列 与 x 等价。 A. x/y*y B. x%y*y C. x/y*y+x%y D. 以上都不是 【12】下列不属于C 语言标识符的是 。 Aabc BABC CAB_C D2abc 【13】.已知有以下定义(假定现有计算机字长为 16) int a=0x48,b=OxfO;ab 的值为 。 A. 184 B. 183 C. 290 D. 287 【14】 设有变量定义 int x=100,y=1,z,若执行语句 z=y>0?+x:­­x,变量 z 的值为 。 A99

52、 B100 C10l D102 【15】. C 语言的基本数据类型包括 。 A.字符型和数值型 B.字符型和逻辑型 C. 指针型和数据型 D.整型和实型 【16】以下给出的标识符中 可用作合法的变量名。 A goto B $price C sum D 9kilo 【17】.设有定义”char a=2,b=5;”,表达式”ab<<2”的值(假定现有计算机字长为 16)为。 A. ­23 B. 32 C. ­32 D. 23 【18】 设 int a=l,b=2;那么执行表达式 a+&&+b;后 a 和 b 的值分别是 。 A1 和 2 B2 和 2

53、 C1 和 3 D2 和 3 【19】 设 x=2y=3表达式x=y=3 运算后。x= 。 A1 B2 C3 D0 【20】 ab 且 cd的 C 语言表达式描述为 。 Aa b ,c<=d Ba!=b&c=<d Ca=!b&&c<=d Da!=b&&c<=d 【21】4字符串”save me!”在内存中所占用的字节数是 。 A9 B6 C8 D4 【22】 在 16 位系统中,定义变量并赋值 short int x=32767,则执行+x 后 x 的值为 。 A32767 B­32768 C­l D32768

54、 【23】. 以下属于C 语言保留字的是 。 A. define B. put C. fclose D. extern 【24】设 int 类型的数据长度为 2 个字节,则unsigned int 类型的数据取值范围是 。 A0255 B­256255 C065535 D­32768­32767 【25】.设有变量说明 int a=3,b=6; char c; 若执行赋值语句 c=(ab)<<2 则c的二进制值是 。 A00011100 B00000111 C00000001 D00010100 二、填空题 【1】设有 int x=1,y=1,z=1;

55、则执行+x|+y&&+z 后,x= 、y= 、z= 。 【2】.设 int a=2,b=4,c=1,d;执行 d=!(a­b+c);后 d 的值是 。 【3】 int a=5,b=6,c=1,x=2,y=3,z=4 c=(a=c>x)&&(b=y>z) 问:执行上述程序后,b 的值是 ,c 的值是 _。 【4】. 是 C 语言中唯一的一个三目运算符,它是由两个符号组成 。 【5】若有说明 int i, j,k;则表达式 i=10,j=20,k=30,k*=i+j 的值为 。 【6】037是 进制数,它二进制形式是 ,对应的十进制是 ,十六进

56、制是 。 【7】. C 语言标识符的第一个字符只能是字母或 。 【8】. C 语言中整型常量的书写形式包括:八进制,十进制和 。 【9】.位运算的对象只能是 。 【10】. 是双目运算符,其运算对象是表达式,其值是右边表达式的值。 【11】.写出 n 小于 m,n 为奇数的表达式 。 【12】表达式3&(2&34)的值为 。【13】公式 1 (x + x + y )对应的 C 语言表达式 是 。 2 5 x 【14】. C 语言标识符的第一个字符必须为下划线或者 。 【15】C 语言语言提供的基本数据类型包括:单精度型、双精度型、 和 。 【16】假设有 int i=2,k;则执行k=(+i)+(+i)+(i+);语句后,i和 k 的值分别是 和 。 【17】.C 语言中,&作为双目运算符表示的运算是 。第 2 章 输入和输出 21 简介 输入和输出是计算机语言的重要组成部分。程序在执行期间,接收外部信息的操作称为程序的输入,而向外部发送信息的操作称为程序的输出。C 语言中没有专门的输入/输出语

温馨提示

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

评论

0/150

提交评论