《《变量与表达式》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《变量与表达式》PPT课件.ppt(40页珍藏版)》请在三一办公上搜索。
1、第二章变量与表达式,C语言程序设计,主要内容,简单表达式 变量 数据类型 赋值语句 复杂表达式 基本输入输出函数小结,2.1 简单表达式,所谓简单表达式就是指由算术运算符连接操作数组成的算术表达式 2.1.1 算术运算符及其表达式在C语言中有以下算术运算符:,2.1 简单表达式,2.1.2 C语言表达式书写规则对数学上的表达式和C语言程序中的表达式做了一个对比:数学表达式合法的C语言表达式x*(-y)x*y/(m*n)sqrt(fabs(5*x+y)19(-b+sqrt(b*b 4*a*c)/(2*a),C语言表达式的书写要遵循一定的规则,规则如下:乘号用*表示,不能省略;表达式从左到右在同一
2、基准上书写,无高低、大小之分,都写在同一行上;括号必须成对出现,且都用圆括号。,2.2 变量,2.2.1 变量变量就是指在程序的执行过程中其值可以改变的量。变量具有三要素:名称、类型和值 变量的命名 C语言规定:标识符只能由字母、数字和下划线三种字符构成,并且第一个字符必须是字母或下划线,不能使用C语言中的关键字 C语言大小写敏感一般地,变量名使用小写字母表示,而大写字母常用来表示符号常量或自定义的类型名。在选择变量名和其他标识符时,应尽量注意做到“见名知意”,2.2 变量,变量的定义变量定义的作用:为变量指定一个名称及其数据类型,让系统给它分配相应的存储空间。确定相应变量的存储方式、数值范围
3、和有效位数。确定相应变量所允许进行的操作。变量定义的一般格式为:数据类型变量名表;其中:变量名表可以包含若干个变量,两者之间用逗号分隔,如int ix,iy;数据类型:可以是C语言中的基本数据类型,也可以是用户自定义的数据类型,2.2 变量,变量赋值与初始化 定义变量的同时对变量进行了初始化使用已定义的变量前,要对它进行赋值 2.2.2 常量和符号常量在程序设计语言中,凡是在程序运行过程中其值不变的量,都称为常量。整型常量即整型常数,在C语言中整型常量有十进制、八进制和十六进制三种形式。十进制整型常量。不能以0开头,由正、负号和09数字组成的常数。八进制整型常量。以0开头,由0 7数字组成的常
4、数。十六进制整型常量。以0 x或0X开头,由0 9数字和字母a f(或A F)组成的常数。,2.2 变量,实型常量:又称为浮点数,只能用十进制来表示,有两种表示形式:小数形式和指数形式。小数形式:它由正负号、数字和小数点组成的常数(必须有小数点,它前面的零可以缺省)。指数形式(科学计数法):它由数符、尾数(整数或小数)、阶码标志(E或e)、阶符和整数阶码组成的常数。注意E或e前面必须有数字,且E后面的指数必须是整数。,2.2 变量,字符常量在C语言中,字符常量是就用单引号括起来的一个字符,其值为ASCII码值。在内存中,字符数据是以与其相对应的ASCII码(即以整数表示)来存储的,占用一个字节
5、。因此C语言中字符数据和整型数据之间可以通用0和0是截然不同的两个数据,前者是字符常量,后者则是整型常数。,2.2 变量,除了使用一般字符常量外,C语言还允许用一种特殊形式的字符常量转义字符常量,即一个以“”开头的特定字符序列,用来表示ASCII字符集中控制代码及某些用于功能定义的字符。常用的转义字符如表所示,2.2 变量,例2.1转义字符的使用 字符串常量字符串常量是由双引号括起来的一串字符序列。字符串常量与字符常量不同,字符串常量中的字符序列连续存放,并在最后自动加上0字符作为字符串的结束标志 符号常量在程序中经常用到某些常量,为方便阅读程序,理解常量的含义,一般就把常量定义为符号常量。在
6、C语言中符号常量定义的一般形式为:#define 符号常量名常量表达式 例2.2符号常量的应用,输出圆的面积,2.3 数据类型,根据数据的取值范围、运算属性及存储方式等,C语言将数据分成不同的数据类型。C语言提供了丰富的数据类型,可分为基本类型、构造类型、指针类型等,如图2-2所示。数据类型确定了数据在内存中所占用的空间大小,也确定了它所表示的数据范围。,2.3 数据类型,2.3.1 整型数据整型数据分为基本整型(int)、短整型(short)和长整型(long)三种类型,其中每一种类型又分为有符号(signed)和无符号(unsigned)两种类型。不同的整型数据占用的内存空间不同,以该数的
7、二进制补码形式存储。表列出了TC2.0系统中整型数据的长度、类型标识符和数值范围,2.3 数据类型,整型变量的定义和应用C语言规定程序中用到的所有变量必须先定义才能使用,即“强制类型定义”。变量的定义,一般写在一个函数的开头的声明位置整型数据的溢出例2.4整型数据的溢出整型常量的说明 一个整型常量,如果其值在-3276832767之间,则认为它是int型,可以赋值给int型、short int 型和long int型变量。如果超出了这个范围,则认为它是long int型,可以将它赋值给一个long int型变量。在一个整型常量后面加上后缀L或l表示该常量为长整型(long)常量,如123l,0
8、12L,0 x4FL。在一个整型常量后面加上后缀U或u表示无符号整型(unsigned)常量。,2.3 数据类型,2.3.2 实型数据实型数据即浮点型数据,C的实型数据有单精度(float)型、双精度(double)型和长双精度(long double)型三种类型。由于不同的实型数据在内存中所占的存储单元不同,因此所提供的有效位数也不同,如表所示。,2.3 数据类型,2.3.3 字符型数据字符型数据类型标识符是用char表示,在内存中占一个字节(8位)。在内存中字符型数据是以所存字符的相应ASCII码存储。字符ASCII码值为0255 字符数据的存储形式与整型数据的存储形式类似,因此,字符型数
9、据和整型数据之间可以通用,但是字符型数据只占一个字节(8位),所以字符数据只能存放0255范围内的整数。一个字符型数据既可以以字符形式输出,也可以以整数形式输出。以字符形式输出时,先将存储单元中的ASCII码值转换成相应字符,然后再输出。以整数形式输出时,直接将ASCII码作为整数输出。字符型数据还可进行算术运算,相当于它们的ASCII码值参与运算。例 2.6字符变量作算术运算,2.3 数据类型,2.3.4 类型转换在C语言中,不同类型的数据之间可以进行混合运算 C语言中有两种类型转换方法:自动类型转换和强制类型转换。1.自动类型转换自动类型转换是指在不同类型的数据进行混合运算时,系统会自动进
10、行数据类型的转换。但要遵循一定的规则,如图所示。,P27例题,2.3 数据类型,2.强制类型转换自动类型转换是由编译系统自动进行的。除此之外,C语言还提供了在程序中进行强制类型转换的方法,即在运算过程中将表达式根据需要转换成另一个数据类型。一般形式为:(数据类型)表达式 例如:(int)x%2当操作数为表达式时,则表达式应用括号括起来:int ix=7,iy=2;如果将ix/iy的值转换为double型,应写为:(double)(ix/iy),则先计算ix/iy的值,再将此值转换为double型,结果为3;如果写为:(double)ix/iy,则是先将ix转换成double型,然后再进行除法运
11、算,其结果为3.5。,2.4 赋值语句,1.赋值运算符:基本赋值运算符为“=”,其作用是先计算右侧表达式的值,再将计算结果赋给左侧的变量。2.赋值表达式赋值表达式是指用赋值运算符将变量和表达式连接起来的式子,一般形式为:变量名=表达式说明:赋值运算符“=”是将右侧表达式的值赋给左侧的变量,赋值运算符左侧必须是变量,右侧是表达式。赋值运算符“=”左右两侧的数据类型应一致。如果表达式的类型与左侧变量的类型不一致时,则先把右侧表达式的值转换为与左侧变量相同的数据类型,然后再赋值。赋值表达式本身也是表达式,可以作为右侧的表达式出现。例如:im=in=ix=1,2.4 赋值语句,3.赋值语句赋值表达式的
12、后面加分号就是赋值语句,赋值语句执行赋值操作,一般形式为:变量名=表达式;4.复合赋值运算符基本赋值运算符与算术运算符或位运算符组合在一起构成复合赋值运算符,如:+=、-=、/=、*=、%=(复合算术运算符)P29=、&=、=、|=(复合位运算符)例 2.7 赋值运算的使用,2.5 复杂表达式,2.5.1 自增、自减运算符自增、自减运算符为+和-,其作用是使变量的值增1或减1,结合方向是自右至左。它们的运算对象只能是变量,不能是常量或表达式。自增、自减运算符使用的格式有两种:前缀格式:运算符 变量(如对变量i,+i或-i)后缀格式:变量 运算符(如对变量i,i+或i-)不同之处在于前者是先执行
13、变量加1(或减1)后,再使用变量的值;而后者是先使用变量的值后,再对变量加1(或减1)。对于变量i,i+和+i均表示“i=i+1”,两种格式在使用上没有任何区别,i-和-i也是一样。但是,当自增、自减运算符参与运算时,两种格式对表达式产生的结果影响是不一样的。多用于循环或迭代运算中。例2.8 自增、自减运算符的应用,2.5 复杂表达式,2.5.2 关系运算符与关系表达式1.关系运算符关系运算符主要是比较两个操作数的大小,实际上是比较运算。C语言提供了6个关系运算符:(大于)、=(大于或等于)=、=、=)的优先级相同,后两种(=、!=)相同。前4种运算符的优先级高于后2种运算符。关系运算符的优先
14、级低于算术运算符,但高于赋值运算符。它们的关系如图所示,2.5 复杂表达式,2.关系表达式 用关系运算符将两个表达式连接起来的式子,就称为关系表达式。其一般格式为:表达式 关系运算符 表达式 其中:关系运算符两侧的表达式可以是算术表达式、关系表达式、逻辑表达式、赋值表达式或字符表达式等。关系表达式的值是一个逻辑值,即“真”或“假”。当关系表达式成立时,其值为“真”;当关系表达式不成立时,其值为“假”。C语言规定:用1表示“真”,用0表示“假“。因此,关系表达式的运算结果为1或0。字符型数据也可以比较大小,是按照ASCII码值的大小进行比较的。例 2.10 关系表达式的运算,2.5 复杂表达式,
15、2.5.3 逻辑运算符与逻辑表达式1.逻辑运算符逻辑运算符表示操作数之间的逻辑关系,C语言提供了三种逻辑运算符:!(逻辑非)、&(逻辑与)、|(逻辑或)逻辑运算符的优先级为:!(非)&(与)|(或)逻辑运算符中的“&”和“|”低于关系运算符,“!”高于算术运算符。各种运算符之间的优先级如图所示。,2.5 复杂表达式,2 逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式,用来表示复杂的运算条件。逻辑与运算(&):仅当两个操作数的值都为真(非0)时,逻辑结果才为真(值为1),否则为假(值为0)逻辑或运算(|):两个操作数只要有一个为真(非0)时,其结果就为真(1),否则为假
16、(0)。逻辑非运算(!):单目运算符,如果操作数的值为真(非0),其结果为假(0),否则为真(1)。例2.11 逻辑表达式的运算,2.5 复杂表达式,2.5.4 逗号运算符C语言提供了一种特殊运算符即逗号运算符“,”,它的功能是将两个或两个以上的表达式连接起来,从左到右求解各个表达式,最后一个表达式的值为整个逗号表达式的值。逗号表达式的一般形式为:表达式1,表达式2,表达式n逗号表达式的计算过程:先计算表达式1,再计算表达式2最后计算表达式n,逗号表达式的值为表达式n的值。逗号运算符的优先级别是最低的,引入逗号表达式的目的是为了简化程序书写,在C语言中常用逗号表达式代替几条语句或给某个变量赋值
17、。例 2.12逗号表达式的应用,2.6 基本输入输出函数,在C语言中没有提供输入、输出语句。数据的输入、输出操作都是通过调用库函数实现的,编程者只要调用合适的系统库函数,就可以完成各种数据的输入、输出。它们的原型都在特定的stdio.h头文件中,因此,需要通过预处理命令将头文件stdio.h包含到用户的源文件中,即:#include 或#include“stdio.h”,2.6 基本输入输出函数,2.6.1 字符输入与输出函数字符输出函数putchar()格式:putchar(c)功能:向标准输出设备(通常是显示器)输出一个字符。返回值:正常时返回输出字符的ASCII码值;出错则返回-1。说明
18、:c可以是一个字符常量(包括转义字符)、变量或表达式,还可以是整型数据。如果c是整型数据,则输出整型数据值作为ASCII码值对应的字符。例 2.13 输出字符,2.6 基本输入输出函数,字符输入函数getchar()格式:getchar()功能:从标准输入设备(通常是键盘)上读取一个字符。返回值:正常时返回读取字符的ASCII码值;出错则返回-1。说明:该函数没有参数。使用此函数时,屏幕上会显从键盘上键入的字符,并且需按回车键结束。例 2.14字符输入与输出,2.6 基本输入输出函数,2.6.2 格式化输入与输出函数格式化输出函数printf()格式:printf(格式控制字符串,输出列表)功
19、能:按指定格式向输出设备(一般为显示器)输出数据。返回值:正常时返回实际输出的字符数;出错则返回-1。与putchar函数相比,printf函数可以输出若干个任意类型的数据,而putchar函数只能输出一个字符。特别说明:格式字符的使用,见表2-7;修饰符的使用,见表2-8。,2.6 基本输入输出函数,2.格式化输入函数scanf()格式:scanf(“格式控制字符串”,地址列表)功能:按照指定的格式从键盘读入数据,存入地址列表指定的存储单元中,并按回车键结束。返回值:正常时返回输入数据的个数,遇文件结束返回EOF;出错返回0。特别说明(P41、42):输入多个数据时,需要用分隔符,分两种情况
20、:(1)格式控制符之间无分隔符时,输入数据时,可用一个或多个空格分隔,也可用回车键或Tab分隔,还可以混合使用。(2)格式控制符之间有普通字符作为分隔符时,输入数据时也要用相同的字符作为分隔符。除了格式说明以外,还有其他字符,则输入数据时在对应位置也应输入与这些字符相同的字符。,2.6 基本输入输出函数,2.6.3 常用函数使用标准库函数,读者需要掌握以下两方面:库函数所在的头文件;函数的原型。例 2.23 输入一个数据,求它的绝对值一、常用数学函数 数学函数所在的头文件为math.h1.平方根函数sqrt函数原型:double sqrt(double x)功能:即计算x的平方根值。说明:x必
21、须是正数。使用方法:sqrt(x)。,2.6 基本输入输出函数,绝对值函数abs和fabsabs函数:函数原型:int abs(int i)功能:求整数i的绝对值|i|。使用方法:abs(i)。例如:abs(-34)返回-34的绝对值34。fabs函数函数原型:double fabs(double x)功能:计算|x|。使用方法:fabs(x)。指数函数pow函数原型:double pow(double x,double y)功能:计算xy。使用方法:pow(x,y)。,2.6 基本输入输出函数,e的指数函数exp函数原型:double exp(double x)功能:计算ex,其中e为自然对
22、数的底2.7182。使用方法:exp(x)。以10为底的对数函数log10函数原型:double log10(double x)功能:计算log10 x。使用方法:log10(x)。以e为底的对数函数log函数原型:double log(double x)功能:计算ln(x)。使用方法:log(x)。,2.6 基本输入输出函数,正弦函数sin函数原型:double sin(double x)功能:计算弧度x的正弦值sin(x)。使用方法:sin(x)。余弦函数cos函数原型:double cos(double x)功能:计算弧度x的余弦值cos(x)。使用方法:cos(x)。例如:cos(30
23、*3.14159/180)返回值为30度的余弦值。,2.6 基本输入输出函数,二、常用字符函数字符函数所在的头文件为ctype.h。1.小写字母转化为大写字母函数toupper函数原型:char toupper(char c)返回值:如果c是小写字母将其转化为相应大写字母,否则返回c。使用方法:toupper(c)。例如:toupper(a)返回值为A。2.大写字母转化为小写字母函数tolower函数原型:char tolower(char c)返回值:如果c是大写字母将其转化为相应小写字母,否则返回c。使用方法:tolower(c)。例如:tolower(A)返回值为a。,2.6 基本输入输
24、出函数,检查是否字母函数isalpha函数原型:int isalpha(char c);返回值:如果c是英文字母,则返回非零值,否则返回0。使用方法:isalpha(c)。例如:isalpha(A)返回值为非0。isalpha(54)返回值为0,因为字符6的ASCII为56。检查是否大写字母函数isupper函数原型:int isupper(char c);返回值:如果c是大写字母,则返回非零值,否则返回0。使用方法:isupper(c)。例如:isupper(b)返回值为0。isupper(A)返回值为非0。检查是否数字字符函数isdigit函数原型:int isdigit(char c);
25、返回值:如果c是数字字符09,则返回非零值,否则返回0。使用方法:isdigit(c)。例如:isdigit(5)返回值为非0。isdigit(A)返回值为0。,2.6 基本输入输出函数,检查是否字母、数字字符函数isalnum函数原型:int isalnum(char c);返回值:如果c是数字字符09或是英文字母,则返回非零值,否则返回0。使用方法:isalnum(c)。检查是否可打印字符函数isprint函数原型:int isprint(char c);返回值:如果c是可打印字符,其中包括空格字符,则返回非零值,否则返回0。使用方法:isprint(c)。检查是否可打印字符(空格除外)函数isgraph函数原型:int isgraph(char c);返回值:如果c是可打印且非空格字符,则返回非零值,否则返回0。使用方法:isgraph(c)。,2.6 基本输入输出函数,五、其他常用函数 头文件为stdlib.h中包括的函数:随机数发生器函数rand函数原型:int rand(void)功能:产生伪随机整数序列,每次调用时产生一个032767之间的整数。使用方法:rand()。例 2.24 随机产生一个整数,并将其输出,2.7 顺序结构设计,见例2.26,