1、第2章,第一学期成绩评定、期末考试形式及内容介绍:,(1)总成绩100分:40%平时成绩+60%期末考试成绩 平时成绩:点名到课情况+作业情况(打字+EXCEL+PPT+WORD等) (2)期末考试内容: 理论部分:详见网上课堂期末考试理论题库(单选、多选和判断) 操作部分:WINDOWS操作和文件操作都考EXCEL操作和POWERPOINT操作都考IE操作和OE操作都考 (3)考试时间:第十九周周末,2、参照例1.1 编程输出以下信息: * * * * * * * * * * * * * * * * HELLO, MY FRIENDS* * * * * * * * * * * * * * *
2、 * (1) #includemain()printf(“* * * * * * * * * * *HELLO,MY FRIENDS! * * * * * * * * * * *“);(2) #include main() printf(“* * * * * * * * *n HELLO,MY FRIENDS!n* * * * * * * * *“);,C语言第一次课习题分析,(3) #includemain()printf(“* * * * * * * * * * *“ HELLO,MY FRIENDS! “* * * * * * * * * * *“);(4) #includemain()
3、printf(“* * * * * * * * * * *“);printf(“ HELLO,MY FRIENDS! “);printf(“* * * * * * * * * * *“); ,课程引入,课程引入:求两数的乘积不同的数据类型定义可以决定程序运行的正确与否。 #includemain() /*求两数之积*/ int a,b,mul; /* 用float或者double定义变量*/a=126000; b=24800; mul=a*b;printf(“mul is %dn”,mul);/* 输出改成%f 或者%lf*/ C语言提供了非常丰富的数据类型供大家选择,本章的主要内容就是介绍这
4、些数据类型及其使用方法,以便大家在后续课程中能正确的选择合适的数据类型进行正确的程序设计。,第二章 数据类型、运算符与表达式,2.1 C的数据类型 2.2 常量与变量 2.3 C的基本数据类型2.3.1 整数数据2.3.2 实型数据2.3.3 字符型数据 2.4 C的运算符与表达式2.4.1 C的运算符简介2.4.2 算术运算符与算术表达式2.4.3 赋值运算符与赋值表达式2.4.4 关系运算符与关系表达式2.4.5 逻辑运算符与逻辑表达式2.4.6 逗号运算符与逗号表达式2.4.7 条件运算符与其表达式2.4.8 各类基本数据类型数据间的混合运算,退出,2.1 C的数据类型,所谓数据类型是按
5、被说明量的性质,表示形式,占据存储空间的多少,构造特点来划分的。C语言提供的数据类型非常丰富,数据类型可分为:基本数据类型、构造数据类型、指针类型和空类型等四大类。C语言提供的数据类型及类型关键字如下图所示:,返回,常量:程序运行过程中,其值不能被改变。常量具有数据类型。 C语言中有两种常量:字面常量和符号常量 1、字面常量又称直接常量,按不同的数据类型可分为:整型常量、实型常量、字符常量和字符串常量。(1)整型常量,可以用十进制、八进制和十六进制数三种形式来表示。例如,483、-219 十进制整型常量0453、-0217 八进制整型常量0xa2b、-0x217 十六进制整型常量(2)实型常量
6、,在C语言中实型常量只能用十进制数来表示。实型常量有 十进制小数形式和指数形式来表示。例如,234.58、-0.674 小数形式实型常量2.3458e2、-0.674E0 指数形式实型常量,一、常量,2.2 常量与变量,(3)字符常量,是指仅含1个ASCII码字符的常量,字符常量有可显示字符和不可显示字符两种表示方法。 可显示字符:用一对单撇号括起来的1个字符,例如A、2、+、? 等。 不可显示字符:主要是指控制字符、有特殊含义与用途的字符,如换行符、换页符、退格符、单引号、双引号、反斜杠等,这些字符称为转义字符,转义字符以“”开头。见P30页表2.3常见转义字符表。 (4)字符串常量是用一对
7、双撇号括起来的零个或多个字符序列,例如“hello”, “A”、 “”等,当字符串常量中为零个字符时被称为空串,字符串中的字符个数即字符串的长度,字符串常量存储时,系统自动在该字符串的末尾加上一个字符串结束标志,即转义字符0,字符串常量存放时占用一批连续的存储单元,所占字节数为字符串长度加1。,2.2 常量与变量,*2、符号常量是用符号表示的常量,当在程序中使用这种常量时,可以使用其符号。符号常量需要定义过才能使用。定义格式:#define 标识符 字符串 (此定义称为“宏定义”)功能:用宏名代替一个字符串,也就是将程序中所有出现宏名的地方用字符串作简单的置换,不作正确性检查。例如 #defi
8、ne PI 3.1415 ,如果将3.1415中的1误写为字母L,在置换时也不会处理,只有在编译源程序时才会发现语法错误。 注意: (1)宏定义不是C语句,不必在行末加分号,如果加了分号则会认为分号也是 要置换的字符,会连分号一起进行置换。 (2)宏名一般尽量用大写字母表示,以便和变量名相区别。但也可用小写。,2.2 常量与变量,变量的使用是程序设计的重要环节之一,在程序执行过程中,其值可以改变的量称为变量。变量要有自己的名称及确定的数据类型。一个变量在内存中占据一定的存储空间,空间大小取决于变量的数据类型,在存储单元中存放变量的值。 (1)变量的两个要素 变量名:它是一个标识符,代表一定的内
9、存存储单元; 变量的内容:即变量的值,它存放在相应的存储单元中。 (2)变量使用的三步曲定义- 赋初值- 改变变量的值 (3)变量的命名规则1)必须以字母或下划线开头,后面可以跟若干个字母、数字或下划线。2)不能和C语言的关键字同名,如:char、int、sizeof等;3)不同的编译系统对变量名中的字符总个数有不同的规定。但长度以不超过8 个字符为宜。 (4)变量的定义(或变量的声明)的一般形式:数据类型说明符 变量名标识符,变量名标识符,.;,二、变量,2.2 常量与变量,返回,整型变量的定义 定义基本整型变量的形式: int 变量表列; 定义长整型变量的形式: long int 变量表列
10、;其中int可以省略 定义短整型变量的形式: short int 变量表列;其中int可以省略 定义无符号基本整型变量的形式:unsigned int 变量表列;其中 int可以省略 例如: int a,b,c; (a,b,c为整型变量)long x,y; (x,y为长整型变量)unsigned p,q; (p,q为无符号整型变量)在书写变量定义语句时,应注意以下几点: 允许在一个类型说明符后,说明多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。 变量说明必须放在变量使用之前。一般放在函数体的开头部分。,2.3.1 整型数据,2.3 C的基本数据类型,实型
11、变量的定义 定义单精度实型变量的形式:float 变量表列; 定义双精度实型变量的形式:double 变量表列; 注意:TC环境中,单精度型具有7位有效数字,一个单精度实型变量占用4字节内存空间;双精度型具有16位有效数字,一个双精度实型变量占用8字节内存空间。 例 2.1 实型变量的使用。 void main( ) float a;double b;a=33333.33333;b=33333.33333333333333;printf ( “%.15fn%.15fn“,a,b ); ,程序运行结果为:,2.3.2 实型数据,2.3 C的基本数据类型,字符型变量的定义定义字符型变量的形式:ch
12、ar 变量表列; 注意:每个字符型变量被分配一个字节的内存空间,存储的是字符的ASCII码,一个字符型变量只能存放一个字符。在C语言中可以把字符型看成是整型处理,即语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型输出,也允许把整型按字符型输出。整型数据为二字节量,字符型数据为单字节量,当整型数据按字符型处理时,只有低八位字节参与处理。 例 2.2字符型数据与整型数据的使用。 #include “stdio.h“ main() int x;char y;x=321;y=B;printf(“x=c,y=%dn”,x,y);/*整型数据以字符形式输出时,只取低
13、字节中的数 据作为ASCII码字符输出*/思考:从键盘输入几个字符,输出该字符自身和其ASCII代码值。,程序运行结果为:,2.3 C的基本数据类型,2.3.3 字符型数据,返回,2.4 C的运算符与表达式,C语言的运算符很丰富,根据运算对象的个数,C语言的运算符可分为单目运算符、双目运算符和三目运算符,最常见的是双目运算符。C提供的运算符共有34种,根据运算符的运算功能,可将运算符分为算术运算符、关系运算符、逻辑运算符等多种。语言的运算符不仅具有不同的优先级,而且还有一个特点,就是运算符的结合性。 常用的几类运算符如下: 算术运算符 (+ - * / % + -) 关系运算符 ( = = !
14、=) 逻辑运算符 (! |) 赋值运算符 (= 及其扩展赋值运算符) 条件运算符 (? :) 逗号运算符 (,) 指针运算符 (* 和 &),2.4.1 C的运算符简介,2.4 C的运算符与表达式,2.4.2 算术运算符与算术表达式,在解决数值型问题时,算术表达式是必不可少的。 算术运算符 + 加法运算符(双目运算符),或正值运算符(单目运算符),如 4.5+x,+y。 - 减法运算符(双目运算符),或负值运算符(单目运算符),如 y-6,-x。 * 乘法运算符(双目运算符),如 x*y(注意:不能写为xy) / 除法运算符(双目运算符),如3/2,3/2.0(注意:二者结果不同) 模余运算符
15、(双目运算符)。只适用于整型数据,如125的值为2,3211的值为10等。C语言算术运算符的运算顺序与数学上的算术运算顺序相同。,2.4 C的运算符与表达式,算术表达式算术表达式是指用算术运算符将运算对象连接起来的式子。 例如:int x;float y;3*x/4-2 、(5%2+x*3)/2+y 算术表达式运算要注意几个问题: 1)注意表达式中各种运算符的运算顺序,必要时应加括号,例如,(x+4)/(3+y)x+4/3+y。 2)注意表达式中各运算对象的数据类型,特别是整型相除。C语言规定,两个整型量相除,其结果仍为整型。例如,3/2的值为1而不是1.5;4/5的值为0而不是0.8; 强制
16、类型转换(类型名)(表达式)例如,(int)(x+y); (float)(5%3); (float)(5/3);,2.4 C的运算符与表达式,自加自减运算 自增运算符记为“+”,其功能是使变量的值自增1。 自减运算符记为“-”,其功能是使变量值自减1。 自增、自减运算符均为单目运算,都具有右结合性。可有以下几种形式: +i i自增1后再参与其它运算。-i i自减1后再参与其它运算。i+ i参与运算后,i的值再自增1。i- i参与运算后,i的值再自减1。 注意:+(或-)符号在前为前缀形式,+(或-)符号在后为后缀形式。在理解和使用上容易出错的是i+和i-。 特别是当它们出在较复杂的表达式或语句
17、中时,常常难于弄清,因此应仔细分析。,2.4 C的运算符与表达式,main() int i,x,y; i=3; x=+i; y=i+; printf(“i=%dnx=%dny=%dn“,i,x,y); ,main() int i,x,y; i=-15; x=-i; y=i-; printf(“i=%dnx=%dny=%dn“,i,x,y); ,说明: (1)自增、自减运算符只能用于变量,不能用于常量或表达式; (2)自增、自减运算符和正、负号的结合性是自右至左,不同于算术运算的自左至右; (3)在表达式中尽可能多地自左至右将若干个字符组成一个运算符。,2.4 C的运算符与表达式,2.4.3 赋
18、值运算符与赋值表达式,1赋值运算符 赋值运算符记为“=”。由“= ”连接的式子称为赋值表达式。赋值表达式的功能是计算表达式的值再赋予左边的变量,赋值运算符具有右结合性。 2赋值表达式 赋值表达式一般形式为: 变量=表达式在C语言中,把“=”定义为运算符,从而组成赋值表达式。凡是表达式可以出现的地方均可出现赋值表达式。例如,式子x=(a=5)+(b=8)是合法的。它的意义是把5赋予a,8赋予b,再把a,b相加,和赋予x,故x应等于13。 3复合赋值运算符复合赋值运算符主要有:+=、-=、*=、/=、%=,复合赋值运算是双元运算的一种简化写法。 举例 b%=a; 等价于b=b%a;b+=100;
19、等价于b=b+100;,2.4 C的运算符与表达式,2.4.4 关系运算符与关系表达式,关系运算符在C语言中,基本的关系运算符有以下六个: 小于= 小于或等于 大于= 大于或等于= 等于!= 不等于 注意:以上六个关系运算符中,前四个(即、=、=)运算符的优先级要高于后两个(即=、!=)运算符的优先级。并且还要特别注意,“等于”的关系运算符是“=”,而“=”是赋值运算符,要注意这两个运算符 的区别。,2.4 C的运算符与表达式,关系表达式关系表达式是指用关系运算符将两个表达式连接起来的有意义的式子。 例如,int x=5;则关系表达式 x8 的值为1,而关系表达式x=3的值为0说明:在C语言中
20、,用1表示关系表达式的值为“真”(即条件满足),0表示关系表达式的值为“假”(即条件不满足),即关系表达式的值要么是1(条件满足),要么是0(条件不满足)。,2.4 C的运算符与表达式,2.4.5 逻辑运算符与逻辑表达式,逻辑运算符语言中共有三种逻辑运算符:逻辑与、逻辑或、逻辑非。逻辑型常量只有两种:值非零表示“真”,值为零表示“假”。 & (逻辑与) 两个量都为真时为真(1),否则为假(0) | (逻辑或) 两个量中只要有一个为真时为真(1),只有都为假时为假(0) ! (逻辑非) 一个量为真时为假(0),假时为真(1) 逻辑表达式逻辑表达式是指用逻辑运算符将关系表达式或逻辑量连接起来的有意
21、义的式子。如:31&41|421|01 逻辑表达式中各种运算符的优先级顺序如下:!(逻辑非) 算术运算符 关系运算符 & 与 | 赋值运算符,2.4 C的运算符与表达式,2.4.6 逗号运算符与逗号表达式,语言中逗号“,”也是一种运算符,称为逗号运算符。其功能是把两个表达式连接起来组成一个表达式,称为逗号表达式。 1逗号表达式的一般形式:表达式1,表达式2,表达式n 其求值过程是按顺序分别求每个表达式的值,并以最后一个表达式n的值作为整个逗号表达式的值。如:a=3*5,a*4; a=15,表达式的值为60;x=(a=3,6*3);相当于给a赋值3,给x赋值18; 2. 对于逗号表达式的说明:
22、逗号表达式一般形式中的表达式1、表达式2或表达式n 也可以又是逗号表达式。例如:表达式1,(表达式2,表达式3) 形成了嵌套情形。 程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。 (3) 并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数 参数表中逗号只是用作各变量之间的间隔符。,2.4 C的运算符与表达式,2.4.7 条件运算符及其表达式,C语言中的条件运算符为:?: 条件运算是根据给定逻辑表达式,在两个表达式中取其中一表达式值的运算。由条件运算符构成的条件表达式的一般形式:逻辑表达式?表达式1:表达式2说明:条件表达式的值,若逻
23、辑表达式的值为非0,则以表达式1的值为 条件表达式的结果;否则以表达式2的值为条件表达式的结果。 例如,给变量z赋值x、y中的较小值时,可写成:“z=xy?x:y”,表达式的计算过程是:若xy成立,则x赋值给z;否则把y赋值给z。思考:给变量z赋值x、y中的较大值的表达式是:?注意:条件运算符是语言中唯一的一个三目运算符。,2.4 C的运算符与表达式,2.4.8 各类基本数据类型数据间的混合运算,1混合运算表达式C语言中,整型、字符型、实型数据间可以混合运算,当表达式的运算对象是不同数据类型时,称为混合运算表达式。 2数据类型转换 1)自动类型转换C语言允许在表达式中进行混合运算,当表达式中运
24、算对象数据类型不同时,系统将自动进行类型转换,将不同类型数据转换成同一类型再运算,转换的基本原则是从低到高。 2) 强制类型转换。强制类型转换的形式为: (类型名)(表达式) 注意:在混合运算过程中,系统所进行的类型转换并不改变原数据的类型, 只是在运算过程中将其值变成同类型后再运算。,返回,本章系统讲解了C语言的常用数据类型、常量与变量的定义及使用,介绍了各类运算符与表达式。具体归纳如下几点: 1的数据类型主要包括基本数据类型,构造数据类型,指针类型,空类型; 2运算符及其优先级和结合性C语言的运算符非常丰富, 主要分为三大类: 算术运算符,关系运算符与逻辑运算符。一般而言,单目运算符优先级
25、较高,赋值运算符优先级低。算术运算符优先级较高,关系和逻辑运算符优先级较低。多数运算符具有左结合性,如单目运算符、三目运算符、 赋值运算符。 3表达式表达式是由运算符连接常量、变量或函数所组成的合法的式子。每个表达式都有一个值和类型。表达式求值顺序取决于运算符的优先级和结合性。 4数据类型转换 自动转换,在不同类型数据的混合运算中,由系统自动实现转换。 强制转换,由强制转换运算符完成转换。,本 章 小 结,返回,上机作业: 1、理解并验证C语言程序设计书本P30页的例2.2,P32页的例2.4、例2.5及上课老师讲解的例子,程序自己生成,得到正确结果即可,作业不用上传; 2、重点理解自增、自减语句的使用,验证老师课件中的例题;理解老师上课布置的两个语句,并上机验证,程序要自己生成; i=3;(1)k=(+i)+(+i)+(+i); (2)k=(+i)+(-i)+(i-)+(i+)+(+i);3、从键盘输入几个字符,再输出该字符自身和它的ASCII代码值;4、编程要求完成输入三角形三边长,求三角形面积。 完成作业2、作业3、作业4的程序,存在一个文件夹,压缩上传到网上课堂。 理论部分作业:完成C语言程序设计书本P46、47、48页的作业,答案直接 写在书本上,教师随时抽查。,本 章 作 业,