《国家计算机等级考试2级C语言C语言部分知识.docx》由会员分享,可在线阅读,更多相关《国家计算机等级考试2级C语言C语言部分知识.docx(204页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章C语言设计的初步知识第一节C语言基本常识及标识符一、 基本概念1. C语言是用接近人们习惯的自然语言和数学语言作为语言的表达形式。2. main是主函数名,C语言规定必须用main作为主函数名。3. main后的一对圆括号中可以是空的,但这一对圆括号不能省略。4. 一个C程序可以包含任意多个不同名的函数,但必须有一个而且只能有一个主函数。5. 一个C程序总是从主函数开始执行。6. 函数体用“”开始,用“”结束。语句的数量不限。定义语句用分号“;”结束。7. C程序中的每一条执行语句都必须用“;”结束,分号是C语句的一部分,不是语句之间的 分隔符。8. 在程序中可以对程序进行注释,注释部分
2、必须用符号“/*”和“*/”括起来/*”和“*/” 必须成对地出现,“/”和“*”之间不可以有空格。注释可以用西文,也可以用中文。注释可 以出现在程序中任意合适的地方。注释部分对程序的运行不起作用。9. C语言源程序经过C语言编译程序编译之后生成一个后缀为.OBJ目标文件。最后还要由 称为“连接程序”的软件,把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀 为.EXE的可执行文件。X文件.obj文件.exe文件二、 标识符1、标识符组成1)标识符可用作变量名、符号名、函数名、数组名、文件名。2)合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。3)在标识符中的
3、大写字母和小写字母被认为是两个不同的字符。4)对于标识符的长度一般取前8个字符有效,如果长于8个字符,多余的字符将不被识别。2、标识符分类1)关键字:C语言规定了一批标识符,它们在程序中都代表着固定的含义,不能另作它用(如 main、int),共32个(注意:全部是小写),见下表:auto break case char constcontinue default dodouble else enum externfloat for goto ifint long mainregister return shortsigned sizeofstatic structswitchtypedef
4、unionunsigned void while2)预定义标识符:这些标识符也都有特定的含义,如C语言提供的库函数(如printf、scanf) 和预编译处理命令(如define)等。C语言语法允许把这类标识符另作它用,但这将使这些标识 符失去系统规定的原意,因此,建议用户不将此类标识符另作它用。3)用户标识符:用户标识符一般用来给变量、函数、数组或文件命名。如果用户标识符与关键字相同,程序在编译时将给出出错信息;如果与预定义标识符相同,系 统并不报错,只是该预定义标识符将失去原定含义。三、 算法算法应当具有以下五个特性:1)有穷性。一个算法应包含有限个操作步骤。2)确定性。算法中每一条指令必
5、须有确切的含义。3)可行性。算法中指定的操作,都可以通过己经实现的基本运算执行有限次后实现。4)有零个或多个输入。在计算机上实现的算法,是用来处理数据对象的,在大多数情况下这 些数据对象需耍通过输入来得到。5)有一个或多个输出。算法的目的是为了求“解”,这些“解”只有通过输出才能得到。 四、 练习I、 选择题:1 .下列关于C语言用户标识符的叙述中正确的是()(034-15题)A)用户标识符中可以出现下划线和中划线(减号)B)用户标识符中不可以出现中划线,但可以出现下划线C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的
6、开头2 .以下不能定义为用户标识符的是()(03年9月第13题)A) scanfB) VoidC) _3com_D) int3 .下列选项中,不能用作标识符的是()(04-914题)A)_1234_B)_l_2C)int_2_D)2_int_4 .以下选项中合法的用户标识符是()(02年9月第13题)A) longB) _2TestC) 3DmaxD) A.dat5 .以下不能定义为用户标识符的是(05-4-14题)A) MainB) _0C) _intD) sizeof6 .以下4组用户定义标识符中,全部合法的一组是()(04年4月第14题)A) _mainB) IfC) txtD) int
7、enclude-maxREALk_2sinturbo3C0M_0017 .以下叙述正确的是()(02-4-22题) A)可以把define和if定义为用户标识符 B)可以把define定义为用户标识符,但不能把if定义为用户标识符 C)可以把if定义为用户标识符,但不能把define定义为用户标识符D) define和if都不能定义为用户标识符8 .以下叙述中正确的是()(03-4-11题)A) C语言比其它语言高级B) C语言可以不用编译就能被计算机识别执行C) C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D) C语言出现得最晚,具有其它语言的一切优点9 .以下叙述中正确的是(
8、)(04412题)A) C语言的源程序不必通过编译就可以直接运行B) C语言中的每条可执行语句最终都将被转换成二进制的机器指令C) C源程序经编译形成的二进制代码可以直接运行D) C语言中的函数不可以单独进行编译10 .用C语言编写的代码程序()(04-9-11题)A)可立即执行B)是一个源程序C)经过编译即可执行D)经过编译解释才能执行11 .算法具有五个特性,以下选项中不属于算法特性的是()A)有穷性 B)简洁性C)可行性D)确定性12 . 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()A)有零个或多个输入B)有穷性 (04-4-11题)C)有零个或多个输出D
9、)可行性13 .以下叙述中正确的是(05-4-13题)A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出第二节常量、变量及数据类型一、 常量在程序运行过程中,其值不能被改变的量,称为常量。在C语言中,常量分为整型常量,实型常量, 字符常量和字符串常量。整型常量和实型常量也称数值型常量,它们有正负的区分。基本整型常量只用数字表示,必须 不带小数点:如:12、-1、0等。实型常量通常用带小数点的数表示,如314159、-2.71828、 0.0等。AT d则是字符
10、型常量。1、整形常量在C语言中,整型常量可以用十进制、八进制和十六进制形式来表示。1)十进制基本常量用一串连续的数字来表示。2)八进制数用数字0开头(注意:不是字母。)。因此,在C程序中不能在一个十进制整数前面 加前导零。【注意】八进制数只能用合法的八进制数字表示,不能写成018,因为数字8不是八进制数字。3)十六进制数用数字0和字母x(或大写字母X)开头。【注意】十六进制数只能用合法的十六进制数字表示,字母a、b、c、d、e、f,既可用大写也 可用小写。2、实型常量在C语言中可以用两种形式表示一个实型常量。1)小数形式即数学中常用的实数形式,由数字和小数点组成(注意:必须要有小数点),如0.
11、123、.123、 123.等都是合法的实型常量。2)指数形式在数学中,一个数可以用事的形式来表示,如2.3026可以表示为0.23026X101、2.3026X100、23.026X10-1等形式。在C语言中,则以“e”或“E”后跟一个整数来表示以10为底的靠数。2.3026 可以表示为 0.23026E1、23026e0、23.026e-l.【注意】? 字母e(或E)之前必须要有数字? e或E后面的指数必须为整数。? 在字母e(或E)的前后以及数字之间不得插入空格。3、字符常量1)基本表示方式C语言中,一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号把一个字符括起 来作为字符
12、常量,如a, 4等。【注意】?单引号中的大写字母和小写字母代表不同的字符常量。?单引号中的空格符口(此处用口来代表一个空格)也是一个字符常量。但不能写成(两个连续的单引号)。?字符常量只能包含一个字符。因此abc是非法的。?字符常量只能用单引号括起来,不能用双引号括起来。字符常量在内存中占一个字节,存放的是字符的ASCII代码值。C语言规定,所有字符常量都作 为整型量来处理,在计算机内部,字符对应的整数值就是ASCII码。2)转义字符常量转义字符总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASCII字符,这 些字符常量也必须括在一对单引号内。下表列出了C语言中的转义字符。【注意
13、】?转义字符常量,如n14r只代表一个字符。? 反斜线后的八进制数可以不用0开头。如:代表的就是字符常量A,、141 代表字符常量也就是说在一对单引号内,可以用反斜线后跟一个八进制数来表示一个 ASCII字符。?反斜线后的十六进制数只可由小写字母x开头,不允许用大写字母X,也不能用Ox开头。如:x41代表字符常量A, x6cT (也可写成x6D)代表字符常量m。在一对单 引号内也可以用反斜线后跟一个十六进制数来表示一个ASCII字符。表 1-2-1字符形式 功能 字符形式 功能n回车换行 双引号t横向跳若干格(代表“TAB”键)ddd一至三位八进制数代表的一个ASCII字符v竖向跳格b退格符(
14、代表backspace”键)xhh一至二位十六进制数代表的一个ASCII字符反斜杠字符“”单引号(撇号)字符0空值4、字符串常量字符串常量是由双引号括起来的一串字符。在C语言中,系统在每个字符串的最后自动加入 一个字符- 0作为字符串的结束标志。【注意】字符常量和字符串常量是有区别的,例如:是字符常量,在内存中占一个字节;而“ABCn、“Z” 是字符串常量,前者占五个字节、后者占两个字节的存储空间,其中一个字节用来存放0。 两个连续的双引号:也是一个字符串常量,称作“空串”。但要占一个字节的存储空间来存 放0。5、符号常量可以用一个符号名来代表一个常量,但是这个符号名必须在程序中进行特别的“指
15、定 例1.2.1计算圆面积。#includez/stdio.hw#define PI 3.14159/定义符号名 PI 为 3.14159 * /main() float i;s;r=5.0; s=PI*r*r; printf( s=%fn”,s): 程序运行结果:5=78.539749程序中用#define命令行(注意:不是语句,后面没有分号)定义PI代表一串字符3.14159,在对 程序进行编译时,凡本程序中出现PI的地方,编译程序均用3.14159这一串字符来替换,本程序 中,可以把PI视为3.14159的替身。这种符号名通常采用大写字母。用define进行定义时,必 须用#号作为一行的
16、开头,在#define命令行的最后不得加分号结束。把#define命令行中定义 的符号名称为符号常量。二、 变量其值可以改变的量称为变量。【注意】?程序中所用到的每一个变量都应该有一个名字作为标识,属于用户自定义标识符。?变量名的命名规则应遵守标识符命名规则。?程序中所要用到的变量应该先定义后使用,否则编译时报错。象常量一样,变量也有类型的区分,如整型变量、实型变量、字符型变量等。C语言在定义变 量的同时说明该变量的类型,系统在编译时就能根据定义及其类型为它分配相应数量的存储 空间。1、整型变量1)整型数据的分类整型常量和整型变量可以分为基本型(int)、短整型(short int)、长整型(
17、long int)和无符号型 (unsigned)四种,其所占用的字节数和数值范围如表1-2-2所示。表中方括号内的单词可 写也可不写,各单词的先后次序无关紧要。单词signed用来说明“有符号”,不写signed也隐 含为有符号。表 1-2-2类型名称占用字节数数值范围signedint 2-3276832767signed short int 2-3276832767signed long int 4-2147483648 2147483647unsigned int 20-65535unsigned short int20-65535unsigned long int 404294967
18、295若要表示一个长整型常量,则应该在一个整型常量后面加一个字母后缀I或L,这些常量在内存 中占四个字节。【注意】一个足够大的数,如465356,虽然其面值是在长整型数的范围内,但由于数字后面未加后缀字 母L,因此并不能代表一个长整型数。无论是短整型还是长整型数,都被识别为有符号整数,无符号整数在数字的末尾应该加上字母 后缀u或U,若是长整型无符号整数常量,则应该加后缀lu或LUo注意:无符号常量不能表示 成小于0的负数,例如:-200U是不合法的。2)整型变量的定义整型变量在使用前必须定义,其定义格式如下:int a;/*定义一个基本型整型变量a*/long int b; /*定义一个基本型
19、整型变量b*/【注意】?C语言规定,可以在定义变量的同时给变量赋初值称为变量初始化。如:int i=l,j=0,k=2;? 一个定义语句必须以一个“;”号结束。在一个定义语句中也可以同时定义多个变量,变量之间用逗号隔开。2、实型变量C语言中实型变量分为单精度型和双精度型两类,分别用类型名float和double进行定义。计 算机系统为float类型的变量分配4个字节的存储单元,为double类型的变量分配8个字节的 存储单元。【注意】?实型的变量只能存放实型数,不能用整型变量存放一个实数,也不能用实型变量存放一个整数。? 在程序中一个实数可以用小数形式表示,也可以用指数形式表示。但在内存中,实
20、数一律 是以指数形式存放的。? 在计算机内存中可以精确地存放一个整数,但整型数值的存放范围较小;使用实型数的 范围大,但往往存在误差。?可以给实型变量赋初值,如:float a=1.5,b=0.0;3、字符变量C语言中,字符变量用关键字char进行定义;在定义的同时可以赋初值。字符变量在内存中占一个字节,字符变量可以存放ASCII字符集中的任何字符。所以字符变量 可以作为整型变量来处理,可以参与对整型变量所允许的任何运算。例如:char cl,c2,c3; int k=5; cl= T; cl+; c2= A; c3=(c2+32+k)%25;三、 练习I. 选择题:1. C语言中最简单的数据
21、类型包括()(97-4-21题)A)整型、实型、逻辑型B)整型、实型、字符型C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型2.以下选项中不属于C语言类型的是()(02年4月第19题)A) signed short intB) unsigned long intC) unsigned intD) long short3. C语言提供的合法的数据类型关键字是()(97-9-21题、98-4-21题)A) DoubleB) shortC) integer D) Char4. C语言提供的合法的数据类型关键字是()(01年4月第18题) 5.在C语言中,合法的长整型常数是()(97-9-22题
22、、01-9-16题)A) swicth B) charC) CaseD) defaultA) 0LB) 4962710C) 0.054838743 D) 216D6 .在C语言中,不合法的整型常数是()(99-9-17题)A) 32768B) 0C) 037D) OxAF7 .以下选项中可作为C语言合法常量的是(05-4-12题)A) -80.B) -080C) -8el.OD) -80.0e8 .以下选项中可作为C语言合法整数的是()(03912题)A) 10110BB) 0386C) OXffaD) x2a2A) 5E2.0B) E-3C) .2E0D) 1.3EA) 1.2E0.5B)
23、3.14159EC) .5E-3D) E1510.以下选项中,不能作为合法常量的是(05-4-15题)A) 1.234e04B) 1.234e0.4C) 1.234e+4D) 1.234e09.在C语言中,合法的实型常数是()()(02-9-12 题、04-4-1311.字符(char)型数据在微机内存中的存储形式是()(95-9-35题)A)反码B)补码C) EBCDIC 码D) ASCII 码12.设有语句 char a= 72;则变量 a ( ) (94-4-23 题、00-9-29 题)A)包含1个字符 B)包含2个字符C)包含3个字符D)说明不合法13.已定义c为字符型变量,则下列语
24、句中正确的是()(03-9-31题)A) c= 97;B) c= 97”;C) c=97;D) c= a14.在C语言中,合法的字符常量是()()(97-9-24 题、01-9-18 题、98422 题)A) (fA) ,084,B) AB) x43C)C)15.在C语言中,非法的字符常量是(B) 1716.卜一列选项中不正确的转义字符是(E)17.A) (W*xaaB)F) t65ab)(01-9-34 题)C) n)(98-9-21 题)C) 074一定义ch为字符型变量,则以下赋值语句中错误的是(A) ch= B) ch=62+3;C) ch=NULL:D)D)A“0D) xaaD) 0
25、)(03-9-25 题)D) ch= xaa;18.A) OxFFB) 1.2e0.5C) 2LD) 72以下所列的C语言常量中,错误的是()(01417题)19.A)字符AB)字符aC)字符eD)非法的常量已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量是()(02-9-14 题)20.下列变量定义中合法的是()(00419题)A) short_a=l-.le-l;C) long do=0xfdal;21. 16位C编译系统中,若定义long a;A) a=20000+20000; B) a=4000*10;B) double b=l+5e2.5
26、;D) float 2_and=l-e-3;则能给a赋40000的正确语句()(02-4-21题)C) a=30000+10000; D) a=4000L*10L;第三节运算符和表达式一、基本的算术运算符1 .算术运算符组成:+、 -、 *、 /、 %加、减、乘、除、求余运算符【说明】?这些运算符需要两个运算对象,称为双目运算符。?除求余运算符外,运算对象可以是整型,也可以是实型。? 求余运算符的运算对象只能是整型。在“”运算符左侧的运算数为被除数,右侧的运 算数为除数,运算结果是两数相除后所得的余数。当运算量为负数时,符号与被除数相同。例 如17%-3的结果为2,-19%4的结果为-3。?“
27、 + ”和也可用作单目运算符,运算符必须出现在运算量的左边。【注意】?双目运算符两边运算数的类型必须一致才能进行操作。所得结果的类型与运算数的类型一致。例如1.0/2.0运算结果为0.5; 1/2运算结果为0。?如果双目运算符两边运算数的类型不一致,如一边是整型数,一边是实型数时,系统将自 动把整型转换为实型数,使运算符两边的类型达到一致后,再进行运算。? 在C语言中,所有实型数的运算均以双精度方式进行。若是单精度数,则在尾数部分补0, 使之转化为双精度数。2 .运算符的优先级、结合性和算术表达式1)算术运算符的优先级单目双目()、+、-、*、 /、 %、+、-同级 同级 同级高 低优先级2)
28、算术运算符和圆括号的结合性以上所列的运算符中,只有单目运算符和“ + ”的结合性是从右到左,其余运算符的结合 性都是从左到右。3)算术表达式用算术运算符和一对圆括号将运算量连接起来的、符合C语法的表达式称为算术表达式。运 算对象可以是常量、变量和函数等。【注意】? 在算术表达式中,可使用多层圆括号。运算时从内层圆括号开始,由内向外依次计算表达 式的值。?在算术表达式中,若包含不同优先级的运算符,则按运算符的优先级别由高到低进行,若表达式中运算符的级别相同,则按运算符的结合方向进行。二、赋值运算符和赋值表达式1 .赋值运算符和赋值表达式在C语言中,“=”号称为赋值运算符,由赋值运算符组成的表达式
29、称为赋值表达式,形式为:变 量名=表达式。【注意】? 赋值运算符不同于数学中“等于号”,不是等同的关系,而是进行“赋予”的操作。? 赋值号的左边必须是一个代表某一存储单元的变量名,且只能是变量不能是常量或表达 式。赋值号的右边必须是C语言中合法的表达式。赋值运算的功能是先求出右边表达式的值, 然后把此值赋给等号左边的变量,如a=5+4就是先计算出5+4的值为9,再将9赋给变量a。?赋值表达式x=y的作用是,将变量y所代表的存储单元中的内容赋给变量x所代表的存储单元,x中原有的数据被替换掉:赋值后,y变量中的内容保持不变。? 在C语言中,“=”号被视为一个运算符,a=19是一个表达式,而表达式应
30、该有一个值,C语 言规定最左边变量所得到的新值就是赋值表达式的值。?赋值运算符的优先级别只高于逗号运算符,且具有自右向左的结合性。2 .复合的赋值表达式在赋值运算符之前加上其它运算符可以构成复合赋值运算符,其中与算术运算有关的复合运 算符是:+=、-=、*=、/=、%=等。表达式n+=l的运算规则等价于n=n+l,表达式n*=m+3的运 算规则等价于n=n*(m+3)。【注意】?两个符号之间不可以有空格?复合赋值运算符的优先级与赋值运算符的优先级相同。三、自加什+)、自减(-)运算符自加运算符“+”和自减运算符“-”的运算结果是使运算对象的值增I或减1。如i+,相当 于1三+1; i-,相当于
31、i=i-l。因此,自加或自减运算本身也是一种赋值运算。【注意】?+、-运算符是单目运算符,运算对象可以是整型变量也可以是实型变量,不能是常量和表达式,因此,如+3、(i+j上等都是不合法的。?+ (或-)在变量后面,先取变量原值作为表达式的值,再使变量的值增1 (或减1);+ (或-)在变量前面,先使变量的值增1 (或减1),再取变量新值作为表达式的值,具体 情况见下表(设有如下定义:inta=2;)。表达式 表达式值 变量a的值a+ 23+a 333 21-a 11? +和-运算符的结合方向是“自右至左”。例如有一表达式-i+,负号运算符和自加运算符优先级相同;结合方向“自右至左”,即相当
32、于对表达式T+)进行运算。如果需要输出表达式-i+的值,则应先取出i的值使用,输出-i+的 值3然后使i增值为4。四、 逗号运算符和逗号表达式“,”是C语言提供的种特殊运算符,用逗号将表达式连接起来的式子称为逗号表达式。逗号表达式的一般形式为:表达式1,表达式2,表达式n【说明】? 逗号运算符的结合性为从左到右。即,先计算表达式1,最后计算表达式no最后一个表达 式的值就是此逗号表达式的值。例:设有定义int a=3,b=4;则表达式a+b,a-b,a-的值为3? 在所有运算符中,逗号运算符的优先级别最低。五、 关系运算1 . C语言中的逻辑值在C语言中,逻辑值只有两个,“真”和“假”,其中用
33、非零值来表示“真”,用零表示“假”。 因此,对于任意一个表达式,如果值为0时,就代表一个“假”值;只要值是非零,无论是正数还 是负数,都代表一个“真”值。2 .关系运算符C语言提供了 6种关系运算符:(小于)=(小于或等于) (大于)=(大于或等于)=(等于)!=(不等于)相同【注意】? 由两个字符组成的运算符之间不可以加空格。关系运算符是双目运算符,具有自左至右 的结合性。? 由关系运算符组成的表达式,称为关系表达式。关系运算符两边的运算对象可以是C语 言中任意合法的表达式。3 .关系表达式及关系表达式的值关系运算的结果得一个整数值:0或1。用零代表“假”,用非零代表“真二例如,若a=10,
34、b=16, 表达式a=b为“假,值为0;若a=10,b=6时,表达式a=b为“真”,值为1。六、逻辑运算1 .逻辑运算符C语言提供了三种逻辑运算符:&逻辑“与”|逻辑“或”I逻辑“非”【说明】?&和|是双目运算符,!是单目运算符,应该出现在运算对象的左边。逻辑运算符具有自左向右的结合性.? 逻辑运算符的优先级次序是:!(逻辑非)级别最高,&(逻辑与)次之,| |(逻辑或)最低。? 逻辑运算的对象可以是C语言中任意合法的表达式。2 .逻辑表达式和逻辑表达式的值由逻辑运算符和运算对象所组成的表达式称为逻辑表达式。逻辑表达式的运算结果或者为1( “真”),或者为0( “假”)。由逻辑运算符组成的逻辑
35、表达式在运算时,&卜与)运算相当于 “乘”运算,|(或)运算相当于“加”运算。以a&b为例,其运算规律如下表:a取值 b取值 &运算|运算0000010110011111“非”运算规律:对假取非,结果为真对真取非,结果为“假”【注意】? 数学关系式0x10表示x的值在大于0、小于10的范围内。但在C语言中不能用0x10 这样一个关系表达式,只有采用C语言提供的逻辑表达式Ox&xb?7:6 的值为 6八、可对字符量进行的运算?在C程序中,字符量可参与任何整数运算。例如:B- *A=66-65=1a+l=97+l=98= b?利用算术运算很容易把大写字母转换成小写字母或把小写字母转换成大写字母。例
36、如:+32=65+32=97= a32=98-32=66= *B?可以通过算术运算把数字字符转换为整数值或把一位整数转换成数字字符。例如:9- 0=57-48=9*3- 0=51-48=39+0=9+48=57=94+0=4+48=52=4【注意】要分清诸如整数9和字符9的区别。整数9在程序中直接写成9;字符9在程序中用9,表 示,它的值是57。? 在C语言中,字符量也可以进行关系运算。如:匕.圆括号、函数参数表数组元素下标指向结构体成员结构体成员14 !+、*&(类型名)sizeof 逻辑非按位取反自加1、自减1求正求负间接运算符求地址运算符强制类型转换求所占字节数 单目运算13 *、/、乘
37、、除、整数求余 双目算术运算12 +、-加、减双目算术运算11 、左移、右移移位运算10 、=、=小于、小于等于、大于、大于等于 关系运算9=、!= 等于、不等关系运算8&按位与位运算7人按位异或 位运算6|按位或位运算5&逻辑与逻辑运算4|逻辑或逻辑运算3?:条件运算 三目运算2_1 _一、 1 、 .一、 一、/=、 =、 &=、A=、|=、=、=赋值、运算且赋值双目运算最低1 ,顺序求值顺序运算其中,2、3、14的结合性为从右至左,其余为从左至右。十、 练习I.选择题1. C语言中,运算对象必须是整型数的运算符是()(96-9-22、97-4-22 00-9-17)A) % B) / C
38、) D) ! E) F) * G) = H) %= I) =2.假定有以下变量定义:intk=7,x=12;则能使值为3的表达式是()(99-418题)A) x%=(k%=5) B) x%=(k-k%5) C) x%=k-k%5D) (x%=k)-(k%=5)3.设有语句:inta=3:则执行了语句a+=a-=a*a:后,变量a的值是()(94-4-21题)A) 3B) 0C) 9D) -124.设有语句:int a=12:则执行了语句a+=a-=a*a;后,变量a的值是()(95-9-22题)A) 552B) 264C) 144D) -2645.设有语句:intx=10:则执行了语句x+=x
39、-=x-x:后,变量x的值是()(98-9-25题)A) 10B) 20C) 40D) 306.以下程序的输出结果是()(02-9-20题)main () int k=2J=2,m; m=(k+=i*=k); printf( %d,%dn” ,m,i); A) 8,6B) 8,3C) 6,4D) 7,47 .下列关于单目运算符+、-的叙述中正确的是()(03-447题)A)它们的运算对象可以是任何变量和常量B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量D)它们的运算对象可以是cha
40、r型变量、int型变量和float型变量8 .设有以下定义,则下面语句中错误的是()(04-4-16题)int a=0; double b=1.25; char c= A;#define d 2A) a+;B) b+;C) C+;D) d+;9 .若有说明和语句:int a=5: a+:则表达式a+的值是()(97-9-25题)A) 7B) 6C) 5D) 410 .以下程序的输出结果是(Dmain () int i=10,j=l; printf( %d,%dn” ,i-, +j); ( ) (94-4-12 题)A) 9,2B) 10,2C) 9,1D) 10,1(2)main ( ) in
41、t a=12,b=12; printf( %d%dn” ,-a, +b); ( ) (97-4-26 题)A) 1010B) 1212C) 1110D) 11 13(3)main () int x=023; printf( %dn,-x); ( ) (01-9-21 题、03-4-25 题)A) 17B) 18C) 23D) 24(4)main () int x=10,y=10: printf( %d %dn” ,x-, -y); ( ) (96-9-28 题)A) 1010B) 99C) 910D) 10 9(5)main () int i=010. j=10; printf( u%d, %dn, +i, j-); ( ) (99-4-21)A) 11, 10 B) 9, 10C) 010, 9D) 10, 911.设有 intx=ll;则表达式(x+*l/3)的值是()(00-4-16 题)A) 3B) 4C) 11D) 1212.设有语句:inta=5:则执行了语句a*=a/=a+;后,变量a的值是()(01-4-20题、01-9-23 题)A) 2B) 1C) 40D) 313 .有以下程序(04-9-16题)main()int m=3,n=4,x; x=-m+; x=x+8/+n; printf(%dn,x);程序运行后的输出结果是A)3B
限制150内