C语言习题解析含基础知识讲解.docx

上传人:小** 文档编号:13332966 上传时间:2020-06-15 格式:DOCX 页数:190 大小:788.39KB
返回 下载 相关 举报
C语言习题解析含基础知识讲解.docx_第1页
第1页 / 共190页
C语言习题解析含基础知识讲解.docx_第2页
第2页 / 共190页
C语言习题解析含基础知识讲解.docx_第3页
第3页 / 共190页
点击查看更多>>
资源描述
C 语言习题解析 版权所有,盗版必究南京农业大学工学院林科学 编著第 1 章 C 语言基础11 简介英文是一种自然语言,学习英文首先要学习字符(字母和其它符号)、单词、然后学习语句短语,最后学习用语句构成文章。C 语言是一种高级计算机语言,接近于人们习惯的自然语言和数学语言,也要先学习字符,基本词类,然后再学习语句的构成规则,最后学习用语句构成程序。 本章介绍C 语言的字符集、数据类型、运算符等。12 知识点 l 基本语法概念:关键字、标识符、数据类型、变量、常量 l 常量的表示方法:整数、实数、字符、字符串常量、标识符常量 l 类型转换:自动类型转换、赋值类型转换、强制类型转换 l 运算符:算术运算符、关系运算符、逻辑运算符、字位运算符、其他常用运算符。13 概念1.3.1 字符集在C语言程序中允许出现的所有基本字符的组合称为C语言的字符集。C 语言的字符集就是ASCII 字符集,主要包含下列几类:1. 大小写英文字母 AZ、az(52 个);2. 数字 09(10个);3. 其它可显示字符(33 个);4. 转义字符(11 个)。 在 C 语言中,有一些不可显示字符。表示这些字符不可直接书写,而是使用反斜杠符号“”开始并后跟单个字符或若干字符的组合。1.3.2 保留字在 C 语言中有特殊含义的单词称为“保留字”,也称“关键字”,主要用于构成语句。所有保留字均由小写字母组成。C 语言保留字共有32 个。133 标识符所谓标识符是指常量、变量、语句标号以及用户自定义函数的名称。作为标识符必须满足以下规则: 标识符必须由字母、下划线或数字(09)组成; 标识符的第一个字符可以是字母(az, AZ)或下划线(_); 保留字不能作标识符。 温馨提示:C 语言是一种大小写敏感的语言。如 Test、test 是 2 个不同的标识符。 134 数据类型C 语言中的数据类型,可以分为基本数据类型和派生数据类型两类。 基本数据类型是 C语言系统中预定义的内部数据类型,有 char、int、float、double、void 型。 字符型用来存放一个ASCII码字符或一个 8位的二进制数;整型用来存放一个整数,实型用来存放实数,双精度型用来存放双精度数。不同的编译系统为各种类型数据分配的内存字节数不同,本书按照Turbo C介绍。 基本类型可以加某些关键字对其进行修饰:如 short 表示短,long 表示长,signed 表示有符号, unsigned 表示无符号等。 用 short、long 、unsigned 、signed 这四个关键字修饰 int 类型时,int 可以省略, 例如:unsigned int 可简写为unsigned。 无修饰词的 int 类型和 char 类型,编译程序认为是有符号的。即相当于 signed int 和 signed char。 派生数据类型则是根据用户需要,按照 C 语言规则由基本数据类型构造出来的数据类型,有指针、数组、结构体、联合体、枚举等类型。这些内容将在后面的章节中进行介绍。 每种数据类型表示的数的范围是有限的,当数超过此范围,则会发生溢出, 无符号整数的最高位也是数据位,而不是符号位。数据以原码形式存放。例如整数 7 的原码是 (0000 0000 0000 0111),而二进制的无符号整数(1000 0000 0000 0000)表示的是整数215。 温馨提示:有符号整数的最高位是符号位,最高位为 0,表示该数是正数,最高位为 1,表示该数是负数。正整数以原码的形式存放。负整数在内存中以整数的“补码”形式存放。求补码的方法如下:先求原码的反码,再在反码上加 1,简言为“求反加 1”。如 1 在内存中的形式为(0000 0000 0000 0001);则1在内存中的形式为先对 1 求反码,在此基础上加1,即得(1111 1111 1111 1111)。135 变量在程序执行过程中,其值可以改变的量称为变量。其作用是存储数据。每个变量属于一种类型。 每个变量只能存放其类型允许的值。定义格式如下:数据类型 变量名 1,变量名 2,变量名 n; 在一条语句中,可以定义一个变量也可以同时定义若干个变量。变量名作为变量的标识,应是一个合法的C 语言标识符。136 常量在程序运行过程中,值不会被改变的量称之为常量。1整型常量 整型常量是指不含小数点的整数,它可以有正负号。如果是正号,可以省略。 十进制整数的表示和日常表示一样,由09 组成。如:100,34,15 等都是十进制数。 八进制整数的表示以0 开头,由 07组成。如:012、0456、045 都等是八进制数。 十六进制整数的表示以 0X 或 0x 开头,由 09,af(或 AF)字母组成。如:0x2a、0X123 等都是十六进制数。2实型常量 实型常量即实数,也称浮点数。有十进制小数和十进制指数两种表示形式。 实型常量可以有正负号。如果是正号,可以省略。 十进制小数形式由数字和小数点组成(必须有小数点)。例如:1.25、3.14、0.0、123.9 等都是实数。当整数部分或小数部分为 0 时,可以忽略不写,但不能同时省略。 指数形式是指以 10的方幂表示的数, 也称科学表示法。 由小数和指数两部分组成, 两者缺一不可。指数部分用 e来表示方幂。 温馨提示:用指数形式表示小数时,方幂 e前后必须是数字,e 的前面可以是整数也可以是小数, e 后面只能为 13 位整数。例如:1.24e3 表示 1.2410 3 ,4.3e2 表示4.310 2 。但 1.3e、 e2、1.2e3.1等都是不合法的实数。3字符常量 字符常量是用单引号括起来的一个字符,如e、E。字符常量在内存中以8 位的整型常量存放,该整型的值被称为 ASCII码。 当某些字符不能直接显示或者不能从键盘上输入时,可采取转义字符表示。 转义符后若是一个整型常量,则必须是一个以 0 为前缀的八进制或以 x 为前缀的十六进制数,其大小在十进制数 0255 之间。当为八进制数时,前缀 0 可以省略。4字符串常量 用一对双引号将 0 个或若干个字符括起来,称为字符串常量。编译系统在处理字符串常量时,会自动在字符串常量的尾部加上0。5标识符常量 标识符常量是指用一个标识符来表示一个常量。用以增加程序的可阅读性和可维护性。定义标识符常量的格式为:#define 标识符 常量值define 定义的常量,通常被称为宏定义常量。系统在编译程序前,首先对源程序进行预处理,将宏定义中的标识符替换成常量值,并生成临时的中间文件,再对该中间文件进行编译。在宏替换时,只是标识符和常量值之间的简单替换,预处理本身不做任何数据类型和合法性检查。程序运行时也不分配内存空间。137 运算符及优先级C 语言中对数据进行处理,和其他程序设计语言一样,也是通过运算符完成的。运算符是完成对常量、变量等操作对象进行运算的符号。运算符的对象称为操作数。对一个操作数进行运算的称为一元(单目)运算符,对两个操作数进行运算的称为二元(双目)运算符,对三个操作数进行运算的称为三元(三目)运算符。 常量、变量等数据通过运算符组合在一起构成了C 语言的表达式,每个符合C 语言规则的表达式将有一个确定的结果,这个结果的类型一般取决于操作数的类型。当多个运算符组合成一个复合表达式时,运算符的求值次序根据运算符的优先级和结合规则来确定。表11 列出了C 语言中各种运算符及其优先级。表11 C 语言运算符及其优先级优先级 运算符 功能说明 结合性1 ( ) 改变优先级 从左至右: 作用域运算符 数组下标.,成员选择2 +, 增1或减1运算符 从右至左&取地址* 取内容! 逻辑求反 按位求反+, 取正、负数( ) 强制类型转换sizeof 取所占内存字节数3 *, / , % 乘法,除法,取余 从左至右4 +, 加法,减法5 左移位,右移位6 ,= 小于,小于等于,大于,大于等于7 =,!= 相等,不等8 &按位与9 按位异或10 | 按位或11 &逻辑与12 | 逻辑或13 ? : 三目运算符 从右至左14 =,+=,=,*=,/=,%= ,&= ,= ,!= ,= 赋值运算符15 , 逗号运算符 从左至右138 算术运算符算术运算符包括 +(正)、(负)、+(加)、 (减)、*(乘)、/(除)、%(取模)。 若除法运算符的左右两边操作数是整数,则进行整除运算;只要除法运算符有一个操作数是实数,则进行普通的除法运算;例如:5/4 除法两边操作数是整数,进行整除运算,结果为 1。5.0/4 除法两边操作数不全是整数,进行除法运算,结果为 1.25。 取模运算符“%”,也即取余运算,两边的操作数必须是整数,其取模结果符号必须与被除数相同。 如 16%5 的值是 1,16%5 的值是1。 算术运算符的优先级和结合性与人们习惯的数学语言中该类运算符的优先级和结合性是基本一致的。 若双目运算符两边的类型不一致,则系统将按照自动类型转换规则使两边类型一致后再进行运算。 温馨提示:在使用算术运算符时,需要注意有关算术表达式求值溢出的处理问题。整数运算产生溢出时则不认为是一个错误,但这时运算结果已不正确了。139 赋值运算符(1)赋值运算符 在 C 语言中,“=” 是一个赋值运算符, 它的作用是将一个值或一个表达式的值赋给“=”左边的变量。C 语言中的等于是“=”。 赋值运算符的左操作数必须是变量,右操作数可以是常量、变量、表达式等。赋值运算符所组成的表达式称为赋值表达式。 赋值运算符的优先级较低,仅高于逗号运算符。因此赋值表达式通常先计算赋值运算符右边的表达式,并将结果赋给赋值运算符左边的变量。C 语言中的赋值运算符“=”与数学的等号含义截然不同,如 i=i+1,数学中是不成立的,但在 C 语言中表示,i 的值加1 并重新赋给变量 i。 温馨提示:赋值表达式本身也是一个表达式,该表达式的值就是赋值的内容。因此,赋值表达式可作为另一个赋值运算符的右操作数, 赋值给一个变量, 这样就出现多个赋值号的情况, 例如“a=b=3” 相当于“a=(b=3)”。(2)复合赋值运算符 在 C 语言中,所有的双目算术运算符都可以与赋值运算符组合在一起,构成复合算术赋值运算符。 复合赋值运算符的一般形式为:变量 复合赋值运算符 表达式 它等同于:变量 = 变量 运算符 表达式例如: x*=10 相当于 x=x*10。1310 关系运算和逻辑运算(1) C 语言的逻辑值 关系运算符和逻辑运算符通常用作流程控制语句中的条件描述。但在 C 语言中,没有专门的逻辑 类型。C 语言中关系运算符和逻辑运算符的计算结果为整数 0 和1。1 表示逻辑“真”,0 表示逻辑“假”。 除了整数 0和 1,其它类型和其它值的变量、常量、表达式也可参与逻辑运算,当值为非0 值时,则表示逻辑“真”;若值为0 值时,则表示逻辑“假”。(2)关系运算符C 语言中有“”(是否小于)、“”(是否大于)、“=”(是否大于或等于)、“=”(是否等于)、“!=”(是否不等于)六个关系运算符。 关系运算符完成两个操作数的比较,结果是一个整数。当比较关系成立时,结果为整数 1,关系不成立时,结果为零。 注意 C 语言的赋值运算符“=”与关系运算符“=”的区别。例如 x=2 表示判断 x 是否等于 2,当 x 的值为 2 时,表达式成立,结果为 1,当 x 的值不是 2 时,表达式不成立,结果为 0。而 x=2 表示将 2 赋给 x,其表达式的值即为赋值的内容2。(3)逻辑运算符C 语言中有“&”(逻辑与)、“|”(逻辑或)和“!”(逻辑非)三种逻辑运算符。其中“!”是单目运算符。 逻辑运算符的操作数可以是整数 0 和 1,也可以是 0和非 0 的整数,也可以是任何类型的数据,如字符型、实型或指针型等,但都是以非 0 为“真”,0 为“假”。 逻辑表达式计算的结果也是一个整数,当逻辑表达式为真时,结果为整数 1,逻辑表达式为假时,结果为 0。 温馨提示:逻辑表达式在计算时,并不是所有的运算符都会得到执行,而是采用优化算法。其含义是,在求逻辑表达式值的时候,一旦表达式的值能够确定,就不再继续进行计算。换言之,对于 “&”(逻辑与)而言, 若左操作数为0, 则整个逻辑与表达式为0, 不再计算右操作数表达式; 对于“|”(逻辑或)而言,若左操作数为 1,则整个逻辑或表达式为 1,不再计算右操作数表达式。1311 字位运算符C 语言中的字位运算符可分为字位逻辑运算符、字位移位运算符。C 语言中字位逻辑运算符共四个,分别是“”(按位求反)、“&”(按位与)、“”(按位异或)和“|” (按位或)。C 语言中字位移位运算符共两个,分别是“”(右移位)。它们都是双目运算符,作用是将一个整型或字符型量按其二进制的位模式左移或右移若干位。左移操作是将二进制数依次向左移动 n 个二进制位,并在低位补 0。右移操作则与数据类型有关,若是无符号整数,则将二进制数依次向右移动 n 个二进制位,并在高位补 0;若是有符号的整数,则将二进制数依次向右移动 n 个二进制位,并在高位补符号位。如:323/32 的补码为(1111 1111 1110 0000)右移后为(1111 1111 1111 1100),结果为4。1312 其他运算符1自增、自减运算符 自增、自减运算符共两个,+和,其作用是使变量的值增 1 和减 1。它们是单目运算符,+ 和可以出现在变量的左边或右边,分别称为前缀运算符(前增量)和后缀运算符(后增量)。 所谓前缀运算符(前增量),表示先对该变量进行增量运算,再引用该变量的值进行表达式的其他运算。所谓后缀运算符(后增量),表示先引用该变量的值进行表达式的其他运算,再对该变量进行增量运算。 自增、自减运算符只能作用于变量,不能用于常量、表达式。2逗号运算符 逗号运算符也称顺序运算符。用逗号运算符连接起来的式子称为逗号表达式,该表达式的类型和值就是最后计算的表达式的类型和值。 温馨提示:并非所有的逗号运算符都构成逗号表达式,有些情况下逗号只能作分隔符,如函数的参数之间用逗号分割:max(a+b,c+d) 3条件运算符 条件运算符是 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=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”为一字符串,系统自动为其添加一个串结束符0,其存储占 2字节。 【3】.下列不正确的转义字符是。A. B. C. 086 D.0 参考答案:B 解析:转义字符由两部分组成,第一部分是一个斜杠,第二部分为一特定字符或一组数字。B 只有一个斜杠而后面没有第二部分。 【4】下列符号串中不合法的C 语言标识符是。Aregister BTurbo_C Cauto_ D_123 参考答案:A 解析:本题的考点是标识符的定义的规则。作为标识符必须满足以下规则:标识符必须由字母、下划线或数字(09)组成;标识符的第一个字符可以是字母(az, AZ)或下划线(_);标识符不能与关键字同名。题目中A 不满足第三点要求,其余选项都满足要求。 【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,再逐个计算后面的表达式,而后续的表达式中未对 a 再进行赋值。因此选C。 温馨提示:若本题问屏幕输出的内容,则应选择 D,因为逗号运算符表达式的值等于其最后一个表达式的值 【7】.下列运算符中,优先级最高的是。A. B.+ C.% D. &参考答案:A 解析:A的优先级为 1,B的优先级为 2,C 的优先级为 3,D的优先级为 11。 【8】设整型变量 x的值是 10,则表达式 2x5的值是。A不确定B1 C0 D表达式非法参考答案:B 解析:本题的考点是关系表达式的返回值。表达式 2x5 分两步计算:1. 计算 2x,由于x 的值是10,关系式成立,返回结果 1。2. 再拿 2x 的结果与 5 进行比较,15 关系式成立,因此整个表达式的结果为1。 【9】.下列关于 C语言的叙述错误的是。A.英文字母大小写不加以区分B.不同类型的变量可以出现在同一个表达式中C.在赋值表达式中赋值号两边的类型可以不同D.某些运算符在不同的场合可以有不同的含义参考答案:A 解析:C 语言中英文字母大小写有区别的,A 错误。C 语言的表达式允许不同类型的数据混合运算,B、C 正确。有些运算符在运算对象的个数不同、所处位置不同时含义不同,D 正确。例如&: a&b(按位与),a&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 的含义一样,表示数的范围为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 型均占 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 解析:本题的考点是强制类型转换对表达式的值的处理方法。强制类型转换不改变表达式本身的值以及类型,而是产生一个临时空间,用于暂存转换后的值,该临时空间的值被引用后,空间被释放。因此选 C。 【14】.下列数据中,不是C 语言常量的是。A. n B. “a” C. a2 D. 012 参考答案:C 解析:C 语言的常量是不需要运算的量,C 中含有运算符,其值需要在 a(变量)值确定的情况下通过运算才能得到。而 A 是转义常量换行,B 为字符串常量,D 为八进制整型常量。【15】.设 int x=10,a=0,b=25;,条件表达式x1?a+10:b 的值是 。A. 0 B. 1 C. 10 D. 25 参考答案:D 解析:因为 x=10,所以 x1 为假,根据条件表达式的规则,表达式应取值 b。 【16】.若定义了 int a char b;float c;,则表达式 a*bc 的类型是。A. float B. int C. char D. double 参考答案:D 解析:因为表达式 a*bc 中的c 为实型,根据C 语言的混合类型运算规则,所有参与运算的数据均要先转换成双精度,然后才能运算,运算的结果也为双精度型。 【17】.在C 语言中,如果下面的变量都是 int 类型,则 pad 的值是。sum=pad=5;pAd=sum+,pAd+,+pAd;A7 B6 C5 D4 参考答案:C 解析:在执行语句 Sum=pad=5 之后 pad 的值一直不变。而 pad 和 pAd 是两个不同的变量, 所以本题答案为 C。 【18】.设 int a=10,b=20,c=30;条件表达式ab? a=5 :c 的值是。A. 5 B. 10 C. 20 D. 30 参考答案:A 解析:因为 ab 为真,表达式取值 a=5,也就是 5,A 正确。如果 ab 为假,则表达式取值 c,也就是 30。无论如何都不会取值 B、C。 【19】符合 C 语言语法规则的常量是 。A4eO.5 B87 C0X5A D 参考答案:C 解析:本题的考点是常量的表达方式。用指数形式表示小数时,方幂 e前面必须是数字,e 后面必须为整数,A不满足要求。 当字符常量或字符串常量中出现转义符“”时,转义符与后面的字符或整数构成一个字符,若转义符是整数时,必须是一个以 0为前缀的八进制或以 x 为前缀的十六进制数,八进制的 0 前缀可省略。在B 选项中,8不是八进制中的数,因此错误。 而 D 选型中的与转义符结合,形成一个字符,因此该字符串的双引号不成对,也为错。 【20】 执行以下程序后 x 的值为。 int a=14,b=15,x; char c=A;x=(a&b)&(ca);ATRUE BFALSE C0 D1 参考答案:D 解析:14 对应的二进制表示为 1110,15 对应的二进制表示为 1111,两数进行位与运算的结果为 1110,不为 0,Aa为真,所以(a&b)&(c=0? x:x后 y 的值是。 参考答案:9 解析:因为 x=0 为假,y 取值x,也就是9. 【4】若整型变量 w=1,x=2,y=3,z=4,则条件表达式 wx?w:zy?z:x 的值为。 参考答案:4 解析:本题的考点为条件表达式的用法, wx?w:zy?z:x 可以被分解为 wx?w:(zy?z:x)。 条件 wx 不成立,因此 wx?w:zy?z:x表达式的值即为 zy?z:x 表达式的值,由此可推断出整个表达式的值为 4。 【5】.表达式 103+1 的值是。 参考答案:160 解析:表达式 103+1相当于 104, 即将 10 左移 4 位。10 用二进制表示就是00001010,左移 4 位后成为 10100000,其十进制值为160(128+32)。 【6】个字符型变量所占内存的字节数是。 参考答案:1 解析:16 位和 32 位系统的 C语言,字符型数据均占据 1 个字节的内存空间。 【7】.设 int a,b,c;则执行 a=(b=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、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的值是。 参考答案: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 的数。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 解析:该语句中有两个前缀+,一个后缀+。系统从左边+号算起,先计算(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%b0?+x:x,变量 z 的值为。A99 B100 C10l D102 【15】. C 语言的基本数据类型包括。 A.字符型和数值型B.字符型和逻辑型C. 指针型和数据型D.整型和实型 【16】以下给出的标识符中可用作合法的变量名。A goto B $price C sum D 9kilo 【17】.设有定义”char a=2,b=5;”,表达式”ab2”的值(假定现有计算机字长为 16)为。A. 23 B. 32 C. 32 D. 23 【18】 设 int a=l,b=2;那么执行表达式 a+&+b;后 a 和 b 的值分别是。A1 和 2 B2 和 2 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 B32768 Cl D32768 【23】. 以下属于C 语言保留字的是。A. define B. put C. fclose D. extern 【24】设 int 类型的数据长度为 2 个字节,则unsigned int 类型的数据取值范围是。A0255 B256255 C065535 D3276832767 【25】.设有变量说明int a=3,b=6; char c; 若执行赋值语句c=(ab)x)&(b=yz) 问:执行上述程序后,b 的值是 ,c 的值是_。 【4】. 是 C 语言中唯一的一个三目运算符,它是由两个符号组成 。 【5】若有说明 int i, j,k;则表达式 i=10,j=20,k=30,k*=i+j 的值为 。 【6】037是 进制数,它二进制形式是 ,对应的十进制是 ,十六进制是 。 【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 语言中没有专门的输入/输出语句,输入/输出依靠一组函数完成。本章所介绍的输入是把从键盘上输入的数据赋值给变量,输出是将程序计算的结果送到显示器上显示。使用 C 语言的输入/输出函数,须在程序的开头使用“#include” 。 本章介绍C 语言的常用输入/输出函数、常用输入/输出格式等。22 知识点 l 格式输入/输出函数:scanf、printf; l 字符/字符串输入/输出函数:getchar、putchar、gets、puts 等; l 输入/输出格式字符:输入/输出格式和附加格式。23 概念2.3.1 输入/输出缓冲区 缓冲区是内存中的一片区域。键盘输入的字符都存到缓冲区内,一旦键入回车,输入函数就进入缓冲区读取数据,每次读取只取一部分数据,其余数据仍在缓冲区中,等待输入函数的下一次读取。输出时,所有待输出的内容都先存入输出缓冲区中,等缓冲区满或者强制输出缓冲区内容时再将缓冲区数据输出到屏幕。对缓冲区的读写是独立于程序动作的。2.3.2 常用输入/输出函数putchar ():把变量中的一个字符输出到显示器屏幕上 getchar ()从键盘上输入一个字符,此常量就是该函数的值 printf()把各类数据,加以格式控制输出到显示器屏幕上 scanf()从键盘上输入各类数据,并存放到程序变量中 puts():把数组变量中的一个字符串常量输出到显示器屏幕上 gets():从键盘上输入一个字符串并放到程序的数组中。2.3.3 常用输入/输出格式 以下格式按照 printf 函数说明,在 scanf 函数中使用类似。 输出项列表中的数据项为表达式。输出项格式说明与输出项列表中的输出项按顺序一一对应,且输出项的数据类型要与格式字符相容,否则会导致执行出错。 常用的“格式控制字符串”说明如下。1%d,%i %d 的含义是按十进制整型数据格式输出,数据长度为实际长度。%与 d 之间可以加正数 m,控制输出宽度,例如: printf(“%5d”,100) 输出结果为:100 输出项占 5个字符宽度,左边补空格。 若整型数据的实际位数多于m 位时,按实际位数以十进制数形式输出整数,若少于 m 位,则 m 位左端补空格。 输出项为长整型数据时,格式控制要用%ld(或%lo,%lx,%lu)格式输出,也可以指定数据 输出宽度。2%u %u 的含义是输出无符号十进制整型数。按实际长度输出。如果用%u 输出有符号数,则会完全错误。例如下列程序:#include main ( ) int a=25 printf(%un,a) 在 16 位系统中输出为 65511,在 32 位系统输出为4294967271。3%o 格式控制字符“%o”的含义是:按整型数据的实际长度,以八进制形式输出整数。八进制形式输出的整数是不考虑符号的。4%x 按整型数据的实际长度, 以十六进制数形式输出整数。 十六进制数形式输出的整数也是不带符号的。5%u 以十进制形式输出 unsigned 型数据。6%mc 以字符形式输出一个字符,m指定输出的宽度,左端补空格,若不指定输出宽度,输出字符就只占一个字符的位置。7%s 格式控制字符%s 控制输出一个字符串。“%ms”表示当字符串长度大于指定的输出宽度 m时,按字符串的实际长度输出;当字符串长度小于指定的输出宽度m,则在左端补空格。“%ms”表示当字符串长度大于指定的输出宽度m时,按字符串的实际长度输出;当字符串长度小于指定的输出宽度m,则在右端补空格。“%m.ns”表示输出字符串占 m个字符位置, 但只输出字符串中开头的n 个字符, 且字符串靠右齐,在左补空格。8%f 按小数形式输出十进制实数(包括单、双精度),实数的整数部分全部输出,并输出 6 位小数。“%m.nf”表示输出实数共占m 个字符位置,其中 n位小数,多余位左端补空格。若实际字符数超 出规定的宽度,则整数部分按实际输出,小数仍只有n 位。9%lf 输出时按小数形式输出十进制双精度,整数部分全部输出,并输出 6 位小数。输入时按小数形式接收十进制双精度数据。10%e 以指数形式按标准宽度输出十进制实数。标准输出宽度共占 13位,分别为:尾数的整数部分为非零数字占 1位,小数点 1 位,小数占6 位,e 占1 位,指数正(负)号占1 位,指数占 3 位。 格式字符“%m.ne”控制输出实数至少占 m位,n为尾数部分的小数位数。不足则在左端补空格,多出则按实际输出。 若没有指定小数部分的宽度,则按标准宽度输出6 位小数。 注意事项:(1) 格式说明中%与后面格式符之间不能有空格,除了 X,E,G 格式符外,其他格式符必须用小写字母。(2) 若要输出%可在格式控制字符串中使用两个连续的%。 例如:printf(“%d%n”,5) 输出结果:5% (3) printf 是标准库函数,它的函数原型在头文件“stdio.h”中,但作为一个特例,不要求在使用之前必须包含“stdio.h”。24 习题解析 一、选择题 【1】.已有如下定义和输入语句,若要求 a1,a2,c1,c2 的
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!