1、授课教师:闵授课教师:闵 芳芳联系方式:联系方式:1533519803015335198030办公室:办公室:A3-303A3-303周三(周三(9 9月月9 9号)上课调整到周五(号)上课调整到周五(9 9月月1111)1.C1.C语言的基本概念语言的基本概念(1)(1)源程序的格式,风格和结构,源程序的格式,风格和结构,mainmain函数及其他函数的函数及其他函数的基本概念。基本概念。l 任何任何C C的源程序执行时,都是从主函数的源程序执行时,都是从主函数(main)(main)开始执行开始执行的,其他的函数最终必将被这个主函数所调用。的,其他的函数最终必将被这个主函数所调用。l C
2、C语言除了主函数规定必须取名为语言除了主函数规定必须取名为mainmain外,其他的函数外,其他的函数名可以任取,但是要符合名可以任取,但是要符合C C标识符取名规则。标识符取名规则。l 在在mainmain函数体内部和外部均允许出现的实体是函数体内部和外部均允许出现的实体是预处理预处理命令命令1.C1.C语言的基本概念语言的基本概念(1)(1)源程序的格式,风格和结构,源程序的格式,风格和结构,mainmain函数及其他函数的函数及其他函数的基本概念。基本概念。l C C程序书写格式自由,程序书写格式自由,一个语句可以占多行一个语句可以占多行,一行也可,一行也可有多个语句。有多个语句。l C
3、 C语言的基本组成单位是函数。语言的基本组成单位是函数。l 在在C C语言中,关键字都是小写的。语言中,关键字都是小写的。l 各个函数在程序中所处的位置并不是固定的,但要求各个函数在程序中所处的位置并不是固定的,但要求一个函数是完整的,独立的,不允许出现在一个函数内部一个函数是完整的,独立的,不允许出现在一个函数内部又去定义另一个函数,或是函数格式不齐全的现象。又去定义另一个函数,或是函数格式不齐全的现象。l C C语言用语言用/*/*/作注释,注释的添加形式比较自由,允作注释,注释的添加形式比较自由,允许在任何插入空格符的位置插入注释,许在任何插入空格符的位置插入注释,但但C C语言的注释不
4、语言的注释不能进行嵌套能进行嵌套。例题:江例题:江20062006年春选择题年春选择题2121下列各选项都是在下列各选项都是在C C语言程序段中增加的注释,其中注释语言程序段中增加的注释,其中注释方法错误的是方法错误的是_A.voidA.void main(/*main(/*intint argcargc,char*,char*argvargv*/)*/)B.voidB.void main()main()pripri/*remark*/*remark*/ntf(“namentf(“name”);”);C.voidC.void main()main()intint x/*=10*/;x/*=10
5、/;printf(“%dprintf(“%d”,x);”,x);D.voidD.void main()main()intint x=10;/*x=10;/*printf(“%dprintf(“%d”,x)*/;”,x)*/;l 各个函数在程序中所处的位置并不是固定的,但要求各个函数在程序中所处的位置并不是固定的,但要求一个函数是完整的,独立的,不允许出现在一个函数内部一个函数是完整的,独立的,不允许出现在一个函数内部又去定义另一个函数,或是函数格式不齐全的现象。又去定义另一个函数,或是函数格式不齐全的现象。函数类型函数类型 函数名函数名(函数参数类型函数参数类型 函数参数名函数参数名1,1,
6、函数参数函数参数类型类型 函数参数名函数参数名2,.)2,.)函数体函数体 例题:例题:20082008年春季选择题年春季选择题2121下列叙述正确的是下列叙述正确的是_A.mainA.main函数必须出现在其他函数之前函数必须出现在其他函数之前B.mainB.main函数中至少必须有一条语句函数中至少必须有一条语句C.CC.C程序总是从程序总是从mainmain函数的第一条语句开始执行函数的第一条语句开始执行D.CD.C程序总是在执行完程序总是在执行完mainmain函数的最后一条语句后结束函数的最后一条语句后结束 20082008年秋季选择题年秋季选择题2121l C C程序是先由源程序程
7、序是先由源程序(*.C)(*.C)经编译生成目标文件经编译生成目标文件(*.(*.objobj,是二进制文件是二进制文件),然后经过链接生成可执行文件,然后经过链接生成可执行文件(*.exe(*.exe,是二进制文件是二进制文件)例题:下列叙述正确的是例题:下列叙述正确的是_A.CA.C程序中的注释只能出现在程序的开始位置和语句的后程序中的注释只能出现在程序的开始位置和语句的后面面B.CB.C程序书写格式严格,要求一行内只能写一个语句程序书写格式严格,要求一行内只能写一个语句C.CC.C程序书写格式自由,一个语句可以写在多行上程序书写格式自由,一个语句可以写在多行上D.D.用用C C语言编写的
8、程序只能放在一个程序文件中语言编写的程序只能放在一个程序文件中例题:下列叙述正确的是例题:下列叙述正确的是_A.A.一个一个C C语言程序只能实现一种算法语言程序只能实现一种算法B.CB.C程序可以由多个程序文件组成程序可以由多个程序文件组成C.CC.C程序可以由一个或多个函数组成程序可以由一个或多个函数组成D.D.一个一个C C函数可以单独作为一个函数可以单独作为一个C C程序文件存在程序文件存在1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。类型标识符(类型标识符(intint,float,float,double,chard
9、ouble,char)的意义及)的意义及使用;类型修饰符(使用;类型修饰符(long,short,signed,unsignedlong,short,signed,unsigned)的意)的意义及使用;义及使用;类型标识符:在编译的时候,为变量分配相应的存储空类型标识符:在编译的时候,为变量分配相应的存储空间;规定了变量的取值范围;规定了变量可以进行的运算;间;规定了变量的取值范围;规定了变量可以进行的运算;1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。例题:例题:20062006年秋填空题年秋填空题3 3,20072007年秋
10、选择题年秋选择题2424 整数数值是以补码表示的;正数的补码和原码相同;负整数数值是以补码表示的;正数的补码和原码相同;负数的补码是将该数的绝对值的二进制形式按位取反再加数的补码是将该数的绝对值的二进制形式按位取反再加1 1,左面的第一位表示符号。,左面的第一位表示符号。1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。基本类型常量的表示及使用:基本类型常量的表示及使用:intint型常量的十进制,型常量的十进制,八进制,十六进制形式;八进制,十六进制形式;l 以数字以数字0 0开头的数字序列,一律作为八进制数处理,基开头的数字序列
11、一律作为八进制数处理,基本数字范围本数字范围0 07 7;l 以以0 x0 x开头后面跟若干位数字的,一律作为十六进制数开头后面跟若干位数字的,一律作为十六进制数处理,基本数字范围处理,基本数字范围0 09 9,从,从10-1510-15写为写为A-FA-F或或a-fa-f;1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。l 其他数字作为十进制数处理其他数字作为十进制数处理,基本数字范围是基本数字范围是0-90-9。例题:例题:intint a=0144;a=0144;intint b=0 x64;b=0 x64;intint
12、c=100;c=100;类型说明符类型说明符 数的范围数的范围 分配字节数分配字节数intint -3276832767-3276832767 short short intint -3276832767-3276832767 signed signed intint -3276832767-3276832767 unsigned unsigned intint 065535 065535 long long intint -21474836482147483647-21474836482147483647 unsigned long unsigned long 04294967295 042
13、94967295 l 整型数据的分类:整型数据的分类:整型数据分为基本类型,短整型,长整型和无符号整型。整型数据分为基本类型,短整型,长整型和无符号整型。l 整型数据的分类:整型数据的分类:整型数据分为基本类型,短整型,长整型和无符号整型。整型数据分为基本类型,短整型,长整型和无符号整型。长整型,在长整型,在整数整数的末尾加上后缀字母的末尾加上后缀字母”l”l”或或”L”L”。例如:例如:9L9L,012L012L,0 x32L0 x32L 无符号整型在无符号整型在整数整数的末尾加上后缀字母的末尾加上后缀字母”u”u”或或”U”U”。若是长整型无符号整数,则应加后缀若是长整型无符号整数,则应加
14、后缀”lulu”或或”LU”LU”20082008年秋选择题年秋选择题2323 1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。基本类型常量的表示及使用:基本类型常量的表示及使用:floatfloat型常量、型常量、doubledouble型常量的十进制小数形式,十进制指数形式;型常量的十进制小数形式,十进制指数形式;日常的表示法日常的表示法 C C语言中的表示形式语言中的表示形式 3.1415103.1415106 6 3.1415e6 3.1415e6 2.56*10 2.56*10-7-7 2.56e-7 2.56e-7 1
15、C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。类型说明符类型说明符floatfloat表示单精度型,在表示单精度型,在Turbo CTurbo C中单精度中单精度型占型占4 4个字节内存空间,只能提供七位有效数字。个字节内存空间,只能提供七位有效数字。类型说明符类型说明符doubledouble表示双精度型,在表示双精度型,在Turbo CTurbo C中双精度中双精度型占型占8 8个字节内存空间,只能提供十六位有效数字。个字节内存空间,只能提供十六位有效数字。Turbo CTurbo C规定规定小数后最后保留六位小数后最后保留六
16、位,其余部分四舍五入。,其余部分四舍五入。20082008年春选择题年春选择题2222 1.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。基本类型常量的表示及使用:基本类型常量的表示及使用:charchar型常量形式,常型常量形式,常用转义字符;字符串常量形式;符号常量的命名、定义与用转义字符;字符串常量形式;符号常量的命名、定义与使用;使用;charchar型常量形式型常量形式:字符常量是用一对单撇号括起来的一个字符常量是用一对单撇号括起来的一个字符,如字符,如:AA,2 2 ,*常用转义字符常用转义字符:(1)(1)用反斜杠开头
17、后面跟一个字母代表一个控制字符用反斜杠开头后面跟一个字母代表一个控制字符;(2)(2)用用代表字符反斜杠代表字符反斜杠,用用 代表撇号字符代表撇号字符;(3)(3)用用 后跟后跟1 1到到3 3个八进制数代表个八进制数代表ASCIIASCII码为该八进制数的码为该八进制数的字符字符;用用xx后跟后跟1 1到到2 2个十六进制数代表个十六进制数代表ASCIIASCII码为该十六进码为该十六进制数的字符制数的字符例题:语句例题:语句printf(abdwhiybounprintf(abdwhiyboun)是是_。A.aA.abdwhiyboubdwhiybou B.aB.abdwhiyboubdw
18、hiybou C.C.dwhiyoudwhiyou D.D.abdwhiybouabdwhiybou 转义字符及其作用转义字符及其作用 P48P48例题:下列不正确的转义字符是例题:下列不正确的转义字符是_。A.065 B.C.D.0A.065 B.C.D.0符号常量符号常量:宏名宏名#define#define 宏名宏名 宏体宏体 或或#define#define 宏名宏名注意:注意:1.1.宏定义是用宏名来表示一个字符串,在宏展开时宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串代替宏名,这只是一种简单的替换,字符串又以该字符串代替宏名,这只是一种简单的替换,字符串中可以含任何字符,
19、可以是常数,也可以是表达式,预处中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查。理程序对它不作任何检查。2.2.宏定义不是说明或语句,在行末不必加分号,如加上分宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。号则连分号也一起置换。符号常量符号常量:宏名宏名#define#define 宏名宏名 宏体宏体 或或#define#define 宏名宏名3.3.宏名在源程序中若用引号括起来,则预处理不对其作宏宏名在源程序中若用引号括起来,则预处理不对其作宏代换。代换。4.4.宏定义用宏名代替一个字符串,也就是简单的置换,不宏定义用宏名代替一个字符串,也就
20、是简单的置换,不作正确性检查。作正确性检查。5.5.在定义预处理命令时,一行只能有一条预处理命令。在定义预处理命令时,一行只能有一条预处理命令。例题:以下说法不正确的是例题:以下说法不正确的是_A.A.在在C C语言程序中凡是以语言程序中凡是以#号开头的语句都是预处理命令行;号开头的语句都是预处理命令行;B.C.C程序在执行过程中对预处理命令进行处理程序在执行过程中对预处理命令进行处理C.C.以下是正确的宏定义以下是正确的宏定义#define IBM_PC#define IBM_PC 例题:以下有关宏替换的叙述不正确的是例题:以下有关宏替换的叙述不正确的是_A.A.宏替换不占用运行时间;宏替换
21、不占用运行时间;B.B.宏名无类型;宏名无类型;C.C.宏替换只是字符替换;宏替换只是字符替换;D.D.宏名必须有大写字母表示宏名必须有大写字母表示 l 带参数的宏命令带参数的宏命令 C C语言允许宏带有参数。在宏定义中的参数称为形式参数,语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参代替形参。中,不仅要宏展开,而且要用实参代替形参。带参宏定义的一般形式为:带参宏定义的一般形式为:#define#define 宏名宏名(形参表形参表)字符串字符串 带参宏调用的一
22、般形式:带参宏调用的一般形式:宏名宏名(实参表实参表);l 带参数的宏命令带参数的宏命令 带参的宏定义的几点说明:带参的宏定义的几点说明:1.1.带参宏定义中,宏名和形参表之间不能有空格出现;带参宏定义中,宏名和形参表之间不能有空格出现;2.2.带参宏定义中,形参不分配存储单元,因此不必作类型带参宏定义中,形参不分配存储单元,因此不必作类型定义;定义;3.3.在宏定义中的形参是标识符,而宏调用中的实参可以是在宏定义中的形参是标识符,而宏调用中的实参可以是表达式;表达式;例题:例题:20072007年秋填空题年秋填空题5 51.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表
23、示及使用。基本算术类型数据的表示及使用。基本类型变量的命名,声明,初始化及使用;基本类型变量的命名,声明,初始化及使用;基本类型变量的命名:基本类型变量的命名:在在C C语言中,标识符必须以字符语言中,标识符必须以字符或下划线开头的由字母或下划线开头的由字母,数字和下划线组成的序列;数字和下划线组成的序列;基本类型变量的声明:基本类型变量的声明:数据类型数据类型 变量名;变量名;C C语言对变量的要求:语言对变量的要求:“先定义,后使用先定义,后使用”,变量说明必变量说明必须放在变量使用之前,一般放在函数体的开头部分。须放在变量使用之前,一般放在函数体的开头部分。例题:例题:20072007年
24、秋选择题年秋选择题22221.C1.C语言的基本概念语言的基本概念(2)(2)基本算术类型数据的表示及使用。基本算术类型数据的表示及使用。使用函数返回值作为操作数。使用函数返回值作为操作数。例如:以下程序的输出结果例如:以下程序的输出结果_。intint fun(fun(intint a,a,intint b)b)return(a+b);return(a+b);main()main()intint x=2,y=5,z=8,r;x=2,y=5,z=8,r;printf(%dn,fun(fun(x,y),zprintf(%dn,fun(fun(x,y),z););1.C1.C语言的基本概念语言的基
25、本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。表达式的一般组成;表达式的一般组成;运算符功能、表达式的组成及表达式的值:运算符功能、表达式的组成及表达式的值:赋值运算赋值运算符与赋值表达式、赋值运算符的左值要求;符与赋值表达式、赋值运算符的左值要求;赋值运算符赋值运算符:=注意注意:在赋值运算符的左侧只能出现变量在赋值运算符的左侧只能出现变量 赋值运算符具有强制类型转换作用赋值运算符具有强制类型转换作用 例题:若变量均已正确定义并赋值,下列合法的例题:若变量均已正确定义并赋值,下列合法的C C语言赋语言赋值语句是值语句是_A.xA.x=y=5 =y=5 B.xB.x
26、n%2.5 C.=n%2.5 C.x+nx+n=i =i D.xD.x=5=4+1 =5=4+1 1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。例题:例题:20052005年秋选择题年秋选择题2222 例题:若例题:若x x为为intint型变量,则执行以下语句后,型变量,则执行以下语句后,x x的值为的值为_。x=5;x=5;x xx-=x*x;x-=x*x;复合赋值运算复合赋值运算*=,+=,-=.=,+=,-=.1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。运算符
27、功能、表达式的组成及表达式的值:算术运算运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,符与算术表达式,+,-+,-运算符的左值要求;运算符的左值要求;算术运算符有算术运算符有:+,-,*,/,%:+,-,*,/,%这些运算符需要两个运算对象这些运算符需要两个运算对象,称双目运算符称双目运算符.除取余除取余(%)(%)运算外运算外,这些运算符的运算对象可以是整型这些运算符的运算对象可以是整型,也可以是也可以是实型。实型。取余运算的运算对象只能是整型取余运算的运算对象只能是整型.取余运算的结果是两取余运算的结果是两数相除之后所得的余数。数相除之后所得的余数。例题:例题:200620
28、06年春选择题年春选择题26261.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。运算符功能、表达式的组成及表达式的值:算术运算运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,符与算术表达式,+,-+,-运算符的左值要求;运算符的左值要求;不同类型数据间的转换与运算不同类型数据间的转换与运算 doublefloatdoublefloat long long unsigned unsigned intchar,shortintchar,short例题:例题:20062006年秋填空题年秋填空题2 21.C1.C语言的基本概念
29、语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。运算符功能、表达式的组成及表达式的值:算术运算运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,符与算术表达式,+,-+,-运算符的左值要求;运算符的左值要求;注意:强制类型转换的用法注意:强制类型转换的用法 (类型名类型名)变量变量 例如例如:(:(intint)x+y )x+y 等价于等价于 (int)x)+yint)x)+y;例题:若有声明例题:若有声明”intint a=5,b=2;”,a=5,b=2;”,则表达式则表达式”b+=(float)(a+b)/2”b+=(float)(a+b)/2
30、运算后运算后b b的值为的值为_(江(江20072007秋秋填空填空1 1)1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。运算符功能、表达式的组成及表达式的值:算术运算符与算术运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,表达式,+,-+,-运算符的左值要求;运算符的左值要求;自增,自减运算符即自增,自减运算符即+,-(+,-(运算符是右结合性,运算级别是运算符是右结合性,运算级别是2)2)注意:注意:a+a+与与 +a +a 的区别的区别 先取值后先取值后+先先+后取值后取值1.C1.C语言的基本概念语言的基本概
31、念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。运算符功能、表达式的组成及表达式的值:算术运算符与算术运算符功能、表达式的组成及表达式的值:算术运算符与算术表达式,表达式,+,-+,-运算符的左值要求;运算符的左值要求;例题:有下列程序:例题:有下列程序:#include#include main()main()intint x=1,y=2,z=3;x=1,y=2,z=3;if(xif(xy)y)if(yif(yz)z)printf(“%d”,+zprintf(“%d”,+z););else else printf(“%d”,+yprintf(“%d”,+y););pri
32、ntf(“%dnprintf(“%dn”,x+);”,x+);程序运行之后的结果是程序运行之后的结果是_1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。运算符功能、表达式的组成及表达式的值:关系运算运算符功能、表达式的组成及表达式的值:关系运算符与关系表达式;符与关系表达式;关系运算符:关系运算符:,=(,=(运算级别是运算级别是6)6),!=(!=(运算级别是运算级别是7)7)注意:注意:等于零和不等于零的表示方法等于零和不等于零的表示方法 a a ,!a aa a!=0 a a!=0 !a a=0 !a a=0 两个实数判断相等和
33、判断不相等的方法(在多分支两个实数判断相等和判断不相等的方法(在多分支ifif语语句中的作用)句中的作用)例题:若有表达式例题:若有表达式(w)?(-x)(w)?(-x):(:(+y+y),则其中与则其中与w w等价等价的表达式是的表达式是_A.wA.w=1 =1 B.wB.w=0 =0 C.wC.w!=1 !=1 D.wD.w!=0!=0例题:例题:江江20072007年春选择题年春选择题2424以下表示数学式以下表示数学式”abc”abc”的逻辑表达式错误的是的逻辑表达式错误的是_A.aA.abc bc B.aB.a b&bb&bc=b)&!(bb)&!(b=c)=c)D.!(aD.!(a
34、b|bb|b=c)=c)1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。运算符功能、表达式的组成及表达式的值:逻辑运算运算符功能、表达式的组成及表达式的值:逻辑运算符与逻辑表达式,含有符与逻辑表达式,含有&、|运算符的表达式的操作数求运算符的表达式的操作数求值顺序与优化处理理;值顺序与优化处理理;逻辑运算符:逻辑运算符:!(运算级别是运算级别是2)2),&,|&,|(运算优先级是(运算优先级是11,1211,12)注意:注意:a&b&ca&b&c 和和 a|b|ca|b|c1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和
35、表达式的表示及使用。运算符和表达式的表示及使用。在一个在一个&表达式中,若表达式中,若&的一端为的一端为0 0,则不必再计算另,则不必再计算另一端,该表达式的值肯定为一端,该表达式的值肯定为0 0。在一在一|表达式中,若表达式中,若|的一端为的一端为1 1,则不必再计算另一,则不必再计算另一端,该表达式的值肯定为端,该表达式的值肯定为1 1。例题:执行下列程序段后,例题:执行下列程序段后,w w的值为的值为()()intint w=A w=A,x=14,y=15;x=14,y=15;w=(w=(x|y)&(wx|y)&(wa);a);A.-1 B.NULL C.1 D.0A.-1 B.NULL
36、 C.1 D.0例题:有以下程序例题:有以下程序main()main()intint i=1,j=2,k=3;i=1,j=2,k=3;if(i+=1&(+j=3)|k+=3)if(i+=1&(+j=3)|k+=3)printfprintf(“(“d%d%d%d%dndn“,i,j,k);“,i,j,k);运行之后的结果是运行之后的结果是_。例题:设例题:设x,y,zx,y,z和和t t均为均为intint型变量,执行以下语句后,型变量,执行以下语句后,t t的的值为值为_。x=y=z=0;x=y=z=0;t=+t=+x|y+&+zx|y+&+z;例题:下列只有当整数例题:下列只有当整数x x为
37、偶数,才是逻辑为偶数,才是逻辑“真真”的表达的表达式式_A.x%2!=0 B.!(x%2=0)A.x%2!=0 B.!(x%2=0)C.(x-x/2*2)=0 D.if(x%2)C.(x-x/2*2)=0 D.if(x%2)1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。运算符功能、表达式的组成及表达式的值:逗号运算运算符功能、表达式的组成及表达式的值:逗号运算符与逗号表达式,逗号表达式的操作数求值顺序;符与逗号表达式,逗号表达式的操作数求值顺序;逗号表达式一般形式为:逗号表达式一般形式为:表达式表达式1 1,表达式,表达式2 2,表
38、达式,表达式3 3,.,.,表达式表达式n n 整个逗号表达式的值是整个逗号表达式的值是表达式表达式n n的值的值。1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。l 在所有运算中,逗号表达式的优先级最低:在所有运算中,逗号表达式的优先级最低:l 逗号表达式一般形式中的表达式逗号表达式一般形式中的表达式1 1和表达式和表达式2 2也可以是也可以是另一逗号表达式另一逗号表达式l 并不是在所有出现逗号的地方都组成逗号表达式,如并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是用作各变量之间的在变量说明中,函数
39、参数表中逗号只是用作各变量之间的间隔符。间隔符。例题:有如下程序:例题:有如下程序:#include#include main()main()intint a=5,b=-3,c=4;a=5,b=-3,c=4;printf(%d%dnprintf(%d%dn,(a+,+b),c-2);,(a+,+b),c-2);运行该程序的输出结果是运行该程序的输出结果是_。例题:已知字符例题:已知字符A A的的ASCIIASCII码值为码值为6565,以下程序结果为,以下程序结果为_:#include#include main()main()intint b=20;char a=A;b=20;char a=A
40、printf(%d,%on,(aprintf(%d,%on,(a=a+1,a+b,b),a+a-=a+1,a+b,b),a+a-A,bA,b););1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。运算符功能、表达式的组成及表达式的值:条件运算运算符功能、表达式的组成及表达式的值:条件运算符与条件表达式;符与条件表达式;条件运算条件运算(右结合性右结合性)e1?e2 :e3e1?e2 :e3 若若e1e1为真为真(非非0)0),则此条件表达式的值为,则此条件表达式的值为e2e2的值;若的值;若e1e1为假为假(0),(0),则表达式取
41、则表达式取e3e3的值。的值。条件运算条件运算(右结合性右结合性)例题:例题:ab?x:ab?x:y?m:ny?m:n例题:江例题:江20062006年秋选择题年秋选择题2222若已有声明若已有声明”intint x=4,y=3;”x=4,y=3;”,则表达式,则表达式“xxy?x+:yy?x+:y+”+”的值是的值是_A.2 B.3 C.4 D.5A.2 B.3 C.4 D.51.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。运算符功能、表达式的组成及表达式的值:位运算符运算符功能、表达式的组成及表达式的值:位运算符与位运算表达式;与
42、位运算表达式;位运算符位运算符:(按位取反按位取反)&)&(按位与)(按位与)(按位异或按位异或)|)|(按位或)(按位或)(右移,将一个数的二进制全部右移若干位右移,将一个数的二进制全部右移若干位)1.C1.C语言的基本概念语言的基本概念(3)(3)运算符和表达式的表示及使用。运算符和表达式的表示及使用。例题:下列程序的输出结果是例题:下列程序的输出结果是_main()main()char a=3,b=6,c=char a=3,b=6,c=abab2;y)ay)a=x;bx;b=y;elsey;else a=a=y;by;b=x;=x;B.if(xB.if(xy)a=x;b=y)a=x;b=
43、y;elsey;else a=a=y;by;b=x;=x;C.if(xC.if(xy)a=y)a=x;bx;b=y;elsey;else a=a=y;by;b=x;=x;D.if(xD.if(xy)a=y)a=x;bx;b=y;elsey;else(xy)a=(x y&yy&y!=0);!=0);C.if(xC.if(x0)x-0)x-D.if(yD.if(y0);0);else y+;else x+;else y+;else x+;题型:题型:(a)(a)数学分段函数的求值问题数学分段函数的求值问题(b)(b)繁琐的二维数组求值填空问题繁琐的二维数组求值填空问题(结合循环语句,必考结合循环语
44、句,必考)例题:例题:20072007年秋填空题年秋填空题8 88.8.以下程序运行时输出结果是以下程序运行时输出结果是_#include#include void void f(longf(long x)x)if(x 100)if(x 100)printfprintf(“%d”,x/10);(“%d”,x/10);else else f(x/100);f(x/100);printf(“%dprintf(“%d”,x%100/10);”,x%100/10);main()main()f(123456);f(123456);2.2.基本语句基本语句 (2)(2)实现选择结构的语句:实现选择结构的语
45、句:ifelseifelse语句、语句、switchswitch语语句和句和breakbreak语句。语句。switchswitch(表达式)(表达式)case case 常量表达式常量表达式1 1:语句语句1;break;1;break;case case 常量表达式常量表达式2 2:语句语句2;break;2;break;case case 常量表达式常量表达式n n:语句语句n;break;n;break;default:default:语句语句n+1;n+1;注意注意:(a)(a)在在casecase后的各常量表达式的值不能相同,否则会后的各常量表达式的值不能相同,否则会出现错误出现错
46、误 (b)(b)各各casecase和和defaultdefault子句的先后顺序可以变动,而子句的先后顺序可以变动,而不会影响程序执行结果。不会影响程序执行结果。2.2.基本语句基本语句 (2)(2)实现选择结构的语句:实现选择结构的语句:ifelseifelse语句、语句、switchswitch语语句和句和breakbreak语句。语句。注意注意:例题:例题:20072007年春填空题年春填空题9 9 (c)(c)多个多个casecase可以共用一组执行语句可以共用一组执行语句 (d)“(d)“语句语句”为多条时,可以不必加大括号为多条时,可以不必加大括号 (f)defaultf)def
47、ault语句可缺省语句可缺省例题:例题:20072007年春填空题年春填空题9 99.9.以下程序运行后输出结果的第一行为以下程序运行后输出结果的第一行为_,_,第二行为第二行为_#include#include void main()void main()intint i=5;i=5;do do switch(i%2)switch(i%2)case 0:i-;break;case 0:i-;break;case 1case 1:i-;continue;i-;continue;i;i;printf(“%dn”,iprintf(“%dn”,i););while(iwhile(i0);0);例题:
48、例题:main()main()intint a=2,b=7,c=5;a=2,b=7,c=5;switch(aswitch(a)case 1:switch(b0)case 1:switch(b0)case 1:case 1:printf(“”);breakprintf(“”);break;case 2:case 2:printf(“!”);breakprintf(“!”);break;case 0:switch(c=5)case 0:switch(c=5)case 0:case 0:printfprintf(“*”);break;(“*”);break;case 1:case 1:printf(
49、);breakprintf(“#”);break;case 2:case 2:printf(“$”);breakprintf(“$”);break;default:printfdefault:printf(“&”);(“&”);运行结果是运行结果是_2.2.基本语句基本语句 (3)(3)实现循环结构的语句实现循环结构的语句:while:while语句、语句、dowhiledowhile语句、语句、forfor语句等。语句等。当型循环语句一般格式:当型循环语句一般格式:whilewhile(表达式)(表达式)语句语句注意注意:(a)(a)表达式应有表达式应有()()(b)“(b)“语句语句
50、为复合语句时应加大括号为复合语句时应加大括号 (c)“(c)“语句语句”中含有中含有break,continuebreak,continue语句时的情况语句时的情况break:break:终止本层循环;在多层循环中,一个终止本层循环;在多层循环中,一个breakbreak语句只向外跳一语句只向外跳一层,即中止一层循环层,即中止一层循环continuecontinue:终止本次循环的执行,进入下一次循环。:终止本次循环的执行,进入下一次循环。例题:设例题:设x x和和y y均为均为intint型变量则执行下面的循环后,型变量则执行下面的循环后,y y的值的值为为_。y=1,x=1;y=1,x=