二章数据类型运算符及表达式.ppt

上传人:本田雅阁 文档编号:2506907 上传时间:2019-04-04 格式:PPT 页数:68 大小:717.51KB
返回 下载 相关 举报
二章数据类型运算符及表达式.ppt_第1页
第1页 / 共68页
二章数据类型运算符及表达式.ppt_第2页
第2页 / 共68页
二章数据类型运算符及表达式.ppt_第3页
第3页 / 共68页
亲,该文档总共68页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《二章数据类型运算符及表达式.ppt》由会员分享,可在线阅读,更多相关《二章数据类型运算符及表达式.ppt(68页珍藏版)》请在三一文库上搜索。

1、第二章 数据类型、运算符及表达式,主要内容:c语言的三种基本数据类型,算术运算符以及赋值运算符,重点、难点:掌握每种数据类型的常量如何表示、 变量如何定义。,各种运算符号的运算规则、不同运算符号之间的优先级和结合性。,例题:输入一个四位的正整数,提取并输出每一位上的数字。 例如:输入1978,则输出1,9,7,8,问题3:怎样输入数据?,问题2:输入的数据怎样存放?,问题4:通过什么运算可以将每一位上的数字取出?,问题5:怎样将结果保存并输出?,问题1:输入的是什么样的数据?,C语言的数据类型,本章讨论的基本类型数据,问题1:输入的是什么样的数据?,答:整数。,问题2:输入的数据怎样存放?,答

2、:暂存于变量中。,2.2 常量与变量,一、变量,变量:其值可以改变的量。,在使用时应为每个变量起一个名字变量名,可以给变量赋值变量值,注意区分变量名和变量值的不同:,变量名:实际上是一个符号地址,在编译时,系统根据变量的类型分配相应的内存单元。,变量值:内存存储单元中存放的数据。,2000H,2001H,2002H,2003H,2004H,int x;,系统给x分配了4个字节的空间,x=3;,3,00000011,00000000,如果在程序中需要用到3这个数据了,那么我们可以直接用x这个变量名称来代表(取得)它。例如: x*6,使用变量值:实际上就是根据变量名所标识的地址找到相应的内存单元,

3、从中取出数据。,变量名,变量值,00000000,00000000,标识符:用来标识变量名、符号常量名、函数名、数组名、文件名等的有效字符序列。,C中对用户自定义标识符的规定: 只能由字母、数字、下划线组成;,例如:max min x_1 _a1,第一个字符必须为字母或者下划线;,不能和系统的关键字重名。,在C语言中,标识符有3种:,、 和 。,关键字,系统预定义的标识符,用户标识符,练习:判断下列标识符的正误:,stu1 a.1 a_2 _xy x?y 1ab int,x,x,x,x,注: 1)见名知义,2)先定义,后使用;,题解: #include “stdio.h” void main(

4、) ,问题2:输入的数据怎样存放?,答:暂存于变量中。,整型变量如何说明?,答:int 变量名称表 例如:int a,b;,int x,thun,hun,ten,id;,分析:程序中用到几个变量?,问题3:怎样输入数据?,答:scanf函数,格式: scanf(格式控制,地址列表),注: 1、功能:从标准输入设备上读入不同类型的多个数据,并将它们按照指定格式进行转换后,存储于地址列表对应的变量中。,由%和格式字符组成。 整型变量的格式字符:d,由若干个变量地址组成。(&变量名),题解: #include “stdio.h” void main() int x,thun,hun,ten,id;

5、,scanf( , );,输入整型数据存放在变量x中,“ ”,%d,&x,%d,&x,%d,&x,问题4:通过什么运算可以将每一位上的数字取出?,答:算术运算,四、 算术运算符和算术表达式,1. 基本的算术运算符 +(加) -(减) *(乘) /(除) %(模,或求余,%两侧均应为整型数据)。,2.算术表达式:用算术运算符将运算对象连接起来的式子。,例如:,表达式,表达式的值,2+3*2.5,9.5,5/2,2,-5/2,-2,两个整数相除结果仍然为整数,而且向零取整。,5%3,2,(-5)%3,-2,3. 优先级,* / % 高于 + -,4. 结合性:左结合性,将下列算术式子用c语言的形式

6、表达出来:,1、3+2xy,3+2*x/y,2、x+5y(8-z)2,X+5*y/ (8-2)*(8-2),( ),题解: #include “stdio.h” void main() int x,thun,hun,ten,id; scanf(“%d”, thun= hun= ten= id= ,x/1000;,x%1000/100;,x%100/10;,x%10;,通过运算分别求得个、十、百、千位上的数字,问题5:怎样将结果输出?,答:printf函数,格式: printf(格式控制,输出项表),注: 1、功能:向终端输出若干任意类型的数据,由%和格式字符组成。 整型变量的格式字符:d,由若

7、干个变量名或者表达式组成。,题解: #include “stdio.h” void main() int x,thun,hun,ten,id; scanf(“%d”, ,分别输出个、十、百、千位上的数字,printf(“%d,%d,%d,%dn”,thun,hun,ten,id);,1)格式控制:双引号括起来的字符串。,例如:printf(“x=%d,y=%dn”,x,y);,格式控制,输出列表,一般包括两种信息:,格式说明:由%和格式字符组成。例如:%c %d %f 等等,普通字符:照原样输出,格式说明,普通字符,printf函数的进一步说明:,若x、y的值分别为3、5则输出: x=3,y=

8、5,题解: #include “stdio.h” void main() int x,thun,hun,ten,id; scanf(“%d”, ,若输入的数据为1978,则输出 1978:1,9,7,8 printf格式应怎样规定?,printf(“ “ , );,x,thun,hun,ten,id,%d:%d,%d,%d,%dn,2.3整型数据,一、整型常量,十进制:由正负号以及0到9的数字组成, 不能包含小数点。 例如:12 -36 等等,八进制:以0开头,由0到7的数字组成, 例如:014 -042 等等,十六进制:以0x或者0X开头, 由0到9及a到f或者A到F的数字组成, 例如:0x

9、b -0x22 等等,二、整型变量,1、整型变量的存放形式,整型数据在内存中以二进制的补码形式存放。,整型变量,基本整型 (4B),短整型 (2B),长整型 (4B),有符号 int,无符号 unsigned int,有符号 short (int),无符号 unsigned short (int),有符号 long (int),无符号 unsigned long (int),2、整型变量的分类,练习: 1、输入一个分钟数,转换成小时和分钟输出。 例如输入200,则输出 200 minutes=3 hours and 20 minutes,2、输入两个整数,分别存放于两个变量中,然后将两个变量的

10、值交换并输出。,课程回顾,1、定义一个整型的变量x,应使用的语句为: 。,int x;,2、C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现的。最基本的输出函数是 ,最基本的输入函数是 。,若已有定义:int x; 则,printf();,scanf();,从键盘输入数据给x应使用的语句为: 。,scanf(”%d”,&x);,若x的值为100,要求输出x=100的语句为: 。,printf(”x=%d”, x);,例题(sy4.c):输入一个小数,将其保留小数位数后两位(进行四舍五入),并输出结果。 例如:输入123.674,则输出123.67 输入123.678,则输

11、出123.68,问题3:怎样输入数据?,问题2:输入的数据怎样存放?,问题4:通过什么运算可以将数据保留至小数位后两位并进行四舍五入?,问题5:怎样将结果保存并输出?,问题1:输入的是什么样的数据?,整型 实型(浮点型)字符型 空类型 枚举型,基本类型,本章讨论的基本类型数据,问题1:输入的是什么样的数据?,答:小数, 实型数据。,2.3.2实型数据,实型数据也叫浮点数(floatingpoint number),一、实型常量,表示形式有两种:,1)十进制小数形式:由数字和小数点组成。而且必须有小数点。,例如:1.2 3.45 .67 100. 等等,2)指数形式:,例如数据 1234.5 可

12、以表示成:,123.45 x 101,123.45e+1,12.345e+2,12.345 x 102,1.2345e+3,1.2345 x 103,12345e-1,12345 x 10-1,规范化的指数形式:小数点前有而且只有一位非零的数字,题解: #include “stdio.h” void main() ,问题2:输入的数据怎样存放?,答:暂存于变量中。,实型变量如何说明?,答:float 变量名称表 例如:float a,b;,float x, y;,分析:程序中用到几个变量?,二、实型变量,1、存放形式:,按指数形式存放。,一般的实型数据占用4个字节。即32位。,2、实型变量的分

13、类,单精度 float 4B 有效位7位,双精度 double 8B 有效位16位,3、输入、输出格式符,单精度 %f,长双精度 long double,问题3:怎样输入数据?,答:scanf函数,格式: scanf(格式控制,地址列表),由%和格式字符组成。 实型数据的格式字符:f,由若干个变量地址组成。(&变量名),题解: #include “stdio.h” void main() float x,y; ,scanf( , );,输入实型数据存放在变量x中,“ ”,%f,&x,问题4:通过什么运算可以将小数四舍五入保留到小数位后两位?,答:算术运算, 100,+0.5,?,(int),

14、100,y=(int)(x*100+0.5),y=(int)(x*100+0.5)/100,x,y=x*100,y=x*100+0.5,?,.,题解: #include “stdio.h” void main() float x,y; scanf(“%f”, ,问题4:通过运算以将小数四舍五入保留到小数位后两位?,y=(int)(x*100+0.5)/100.,2.4.2强制类型转换运算符 可以利用强制类型转换运算符将一个表达式转换成所需类型。例如: (double)a (将a转换成double类型) (int)(x+y) (将x+y的值转换成整型) (float)(5%3) (将5%3的值转

15、换成float型) 一般形式为(类型名)(表达式) (int)x+y 则只将x转换成整型,然后与y相加。,注意: 强制类型转换时,原变量类型未变化。 书写格式 (int) x 不要写成int( x ),float a=5.1,c; int b; b=a%3; c=a*b;,float a=5.1,c; int b; b=(int)a%3; c=a*b,注意:强制类型转换运算符优先级高于算术运算符优先级,C的值是:,10,10.2,练习:设 x=2.5, a=7,y=4.7 计算下列表达式的值,x+a%3*(x+y)%x/4,(int)(x+y)%(int)x/4,错误的表达式,正确的表达式,返

16、回,=2.5+7%3*(int)(2.5+4.7)%(int)2.5/4,=2.5+1*(int)(7.2)%2/4,=2.5+1*7%2/4,=2.5+1/4,=2.5+0.25,=2.75,0,2.5,问题5:怎样将结果输出?,答:printf函数,格式: printf(格式控制,输出项表),由%和格式字符组成。 实型变量的格式字符:f,由若干个变量名或者表达式组成。,题解: #include “stdio.h” void main() float x,y; scanf(“%f”, y=(int)(x*100+0.5)/100.; ,printf(“%f”,y);,例如:输入一个球的半径(

17、整数),分别计算球的周长、截面积和体积,并输出。,main(),float l, s, v;,/*对变量的声明*/,scanf(“%d”,/*输入球的半径*/,l=,/*圆的周长*/,s=,/*圆的截面积*/,2*3.1416*r;,3.1416*r *r;,v=,/*球的体积*/,4*3.1416*r *r*r/3;,#define PI 3.1416,PI,PI,PI,3.14,符号常量,printf(“circumference :%f,area:%f,volum:%fn”,l,s,v);,int r;,2.3.3 字符型数据,一、 字符常量 C的字符常量是用单引号括起来的一个字符。如a

18、,x,d,?, 等都是字符常量。 C还允许用一种特殊形式的字符常量,就是以一个“”开头的字符序列,称为转义字符。 例如, n,它代表一个“换行”符。这是一种“控制字符”,在屏幕上是不能显示的。,转义字符 n 回车换行 t 跳至下一个制表位 b 退格 r 回车不换行 f 换页显示 显示 显示 ” 显示” ddd 1-3位8进制数 xhh 1-2位16进制数,例2.5转义字符的使用。 ain() printf(“ ab ct derftgn“); 程序中没有设字符变量,用printf函数直接输出双引号内的各个字符。其中t等表示转义字符。,例2.5转义字符的使用。 ain() printf(“ ab

19、 ct derftgn“); 第一个printf函数先在第一行左端开始输出“ ab c” 然后遇到“t”,跳到下一个“制表位置”输出 de “ ab c de”,8位字符,例2.5转义字符的使用。 ain() printf(“ ab ct derftgn“); 然后遇到“t”,跳到下一个“制表位置”输出de “ ab c de” 遇到“r”,它代表“回车”(不换行),则返回行首继续输出r后的字符f “fab c de”,例2.5转义字符的使用。 ain() printf(“ ab ct derftgn“); 又遇到“t”,它代表“跳转下一个制表位”,继续输出字符g,然后遇到n换下行继续输出。

20、“f gde”,8个字符,二、 字符变量 字符变量的定义形式如下: char 变量名表 例如:char c1,c2; 注意只能放一个字符。占用1个字节 用下面语句可以对c1、c2赋值: c1=a;c2=b;,三、 字符串常量,a 是什么类型数据? “a”是什么类型数据? 注意区分!,字符串常量:以双引号括起来的字符序列,例如: “CHINA”,“a”, “ 123.45 ”,c规定:在每一个字符串的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。C规定以字符0作为字符串结束标志。0是一个ASCII码值为0的字符,代表一个空操作。,c=a;,定义字符数据: char c;,c=“a

21、“;,c=“CHINA“,c=CHINA,对,错,错,错,a和“a”的区别:,a是字符数据,“a”是字符串数据,一个字符串“CHINA”,实际上在内存中所占的空间不是5个字节,而是6个字节。最后一个字符为0。但在对字符串进行处理和操作时,结束标志0不参与操作。,0字符是系统自动加上的,表示字符串结束标志,四、对字符数据的输入输出格式符为:%c,五、 内存中的存储形式及其使用方法,例如:字符a 、b的内存形式为:,以该字符ASCII码的二进制形式放到存储单元中。,字符a,ASCII码:,内存形式:,97,01100001,ASCII码:,内存形式:,98,01100010,字符b,字符A,内存形

22、式:,01000001,内存形式:,01000010,字符B,ASCII码:,65,ASCII码:,66,例2.6向字符变量赋以整数。 main() char c1,c2; c1=97;c2=98; printf(“%c %cn“,c1,c2); printf(“%d %dn“,c1,c2); ,注意:%c表示什么含义 %d表示什么含义,“%c”是输出字符时必须使用的格式符。,总结:字符变量可用整型数据赋值 字符数据可输出字符,亦可输出整数,例2.7大小写字母的转换。(字符数据运算) main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; prin

23、tf(“%c,%c“,c1,c2); ,总结:字符数据可以进行算术运算,且以字符的ASCII码参与运算。,程序结果:A,B,例题:输入一个小写字母,转换成其对应的大写字母输出。,题解: #inlcude “stdio.h” void main() /*定义变量*/ /*输入字母*/ /*字母转换*/ /*输出*/ ,char c1,c2;,scanf(“%c”,c2=,c1-32;,printf(“%c”,c2);,c1=getchar();,putchar(c2);,练习作业: 1、字母译码:输入一个小写字母,输出其后的第四个字符。(zuoye1.c) 例如:输入a ,输出d; 输入v,输出

24、z; 输入y,输出c; 2、数字字符与数字之间的转换:输入一个数字字符,输出对应的数值。(zuoye2.c) 例如:输入字符9,输出数值9,字符数据与整型数据的关系 1、字符变量可以整型数据赋值 2、字符数据可输出字符,亦可输出整数 3、字符数据可以进行算术运算,且以字符的ASCII码参与运算。,下一页,一、getchar(),作用:从终端接收一个字符,只能接受一个字符,以回车键结束输入。,注:该函数为空参,但括号不可以省略。函数的返回值即为从键盘接收的字符。,常用格式:用赋值运算符将该函数的返回值赋值给字符型变量。,例如:char c; c=getchar();,注:getchar(c);,

25、错误的函数使用,补充:字符数据的输入和输出,返回,补充:字符数据的输入和输出,二、putchar(),作用:向终端输出一个字符。,参数可以为常量、变量、表达式或者函数。,例如 main() char c1=a; putchar(c1); putchar(b); putchar(c1-32); ,#include “stdio.h”,返回,2.4.3赋值运算符和赋值表达式,一、赋值运算符 “=”,作用:将运算符右边的表达式的值赋值给左边的变量。,注:运算符左边只能为变量,不能为常量或者表达式。,例如:x=5 常量5赋给变量x y=3*9+6 把表达式的值33 赋给变量y 以上都是正确的,5=x

26、x+y=3 都是错误的,二. 复合的赋值运算符,赋值运算符与双目运算符连接组成复合赋值运算符。,= 与 + - * / % 连接形成:,+= -= *= /= %= 复合赋值运算符 例如:a+=5,1、其作用相当于变量与运算符右边的表达式进行相应的运算后,再将结果赋值给变量本身。,1、其作用相当于变量与运算符右边的表达式进行相应的运算后,再将结果赋值给变量本身。 上例中:a+=5 就相当于 a=a+5,1、其作用相当于变量与运算符右边的表达式进行相应的运算后,再将结果赋值给变量本身。 上例中:a+=5 就相当于 a=a+5,再如: x*=y+8 相当于 x=x*(y+5),2、结合性:右结合,

27、3、赋值表达式的值:被赋值的变量的值。,练习:若有 int a=3;则下列表达式的值为:,1、a*=5+3,等价于:a=a*(5+3) 所以a的值为24 表达式的值为24,2、a*=a+=5/3,(1)a+=5/3 相当于 a=a+5/3 所以a的值为,4,(2)a*=4 相当于 a=a*4 所以a的值为,16,2.4.5逗号运算符与表达式,1、逗号运算符: ,,2、逗号表达式:由逗号连接起来的多个式子,形式:表达式,表达式,表达式,注:)自左至右依次求取每个表达式的值,最右边表达式的值即为整个逗号表达式的值。,例如:3+5,4*6,5/3,9%6,整个表达式的值为3,2)在所有的运算符中级别最低。,小结:以上三种运算符的优先级为:,算术运算符 * / % + -,赋值运算符 = += -= *= /= %=,逗号运算符 ,,低,高,练习:int a=0,b=0,c=0; c=(a-=a-5),(a=b,a+3) printf(“%d,%d,%dn”,a,b,c);,结果为:0,0,5,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1