基本数据类型及其操作.ppt

上传人:小飞机 文档编号:6559966 上传时间:2023-11-12 格式:PPT 页数:55 大小:262.16KB
返回 下载 相关 举报
基本数据类型及其操作.ppt_第1页
第1页 / 共55页
基本数据类型及其操作.ppt_第2页
第2页 / 共55页
基本数据类型及其操作.ppt_第3页
第3页 / 共55页
基本数据类型及其操作.ppt_第4页
第4页 / 共55页
基本数据类型及其操作.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《基本数据类型及其操作.ppt》由会员分享,可在线阅读,更多相关《基本数据类型及其操作.ppt(55页珍藏版)》请在三一办公上搜索。

1、1,第2章 基本数据类型及其操作,2.1 C语言的基本数据类型2.2 常量与变量2.3 常用运算符与表达式2.4 数据的输入与输出2.5 应用实例本章小结,2,2.1 基本数据类型,一个程序应包括对数据的描述和对数据处理的描述。对数据的描述,即数据结构。在C语言中,系统提供的数据结构,是以数据类型的形式出现的。对数据处理的描述,即计算机算法。算法是为解决一个问题而采取的方法和步骤,是程序的灵魂。实际上,一个程序除了数据结构和算法外,还必须使用一种计算机语言,并采用结构化方法来表示。,3,C语言提供的数据结构,是以数据类型形式出现的。具体分类如下:1.基本类型(分为整型、实型(又称浮点型)、字符

2、型和枚举型四种)。2.构造类型(分为数组、结构体和共用体三种)。3.指针类型。4.空类型,4,1.整数的存储。以二进制形式存储,一个数据占据2/4个字节内存。数据有正、负,负数以补码方式存放,或参与运算。如十进制数100,二进制为0110 0100。,2.实数的存储。采用指数形式存储,一个数占据4个字节内存,数值部分3个字节,指数部分一个字节。也是采用二进制数形式。,3.字符数据的存储。存放字符的ASCII码值,占一个字节。例如,字符A的ASCII码值为65,转换为二进制数为:0100 0001。,5,2.2 常量和变量,一、常量(常量的类型,可通过书写形式来判别)1.常量的概念 在程序运行过

3、程中,其值不能被改变的量称为常量。2.常量的分类(1)整型常量(分十进制、八进制、十六进制):123、67(十进制);056、024(八进制);0 x123、0 x56(十六进制)(2)实型常量:12.56、3.0e+4(指数形式,表示3.0104)(3)字符常量:A、c、6等,也包括转义字符,参见P16表2.1。(4)符号常量:用一个标识符代表一个常量。,6,案例2.1 符号常量的使用。#define PI 3.1415926/*定义符号常量的命令行*/#include/*文件包含预处理命令*/void main()double r,s,v;/*定义双精度浮点型变量r*/r=3.5;/*为半

4、径r赋值*/s=4.0*PI*r*r;/*计算表面积*/v=4.0/3.0*PI*r*r*r;/*计算体积*/printf(“s=%f,v=%fn”,s,v);/*输入计算结果*/该例题中 PI 就是符号常量。使用符号常量需要用命令行定义。,定义符号常量格式为:#define 标识符 常量串例如:#define PI 3.1415926表示把符号常量的值定义为3.1415926,7,二、变量1.变量的概念 在程序运行过程中,其值可以被改变的量称为变量。2.变量的两个要素(1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。(2)变量值。在程序运行过程中,变量值存储在内存中。

5、在程序中,通过变量名来引用变量的值。,8,3.标识符(即名称)命名规则(1)有效字符:只能由字母、数字和下划线组成,且以字母或下划线开头。(2)有效长度:随系统而异,但至少前个字符有效。如果超长,则超长部分被舍弃。(3)C语言的关键字不能用作变量名。注意:C语言对英文字母的大小写敏感,即同一字母的大小写,被认为是两个不同的字符。习惯上,变量名和函数名中的英文字母用小写,以增加可读性。,9,4.变量的定义与初始化在语言中,要求对所有用到的变量,必须先定义、后使用;且称在定义变量的同时进行赋初值的操作为变量初始化。(1)变量定义的一般格式存储类型 数据类型 变量名,变量名2;例如,float ra

6、dius,length,area;(2)变量初始化的一般格式存储类型 数据类型 变量名=初值,变量名2=初值2;例如,float radius=2.5,length,area;,10,2.2.1 整型数据,1.分类 根据占用内存字节数的不同,整型变量又分为类:(1)基本整型(关键字为int)(2)短整型(关键字为short int)(3)长整型(关键字为long int)(4)无符号整型(unsigned)无符号型又分为无符号基本整型(unsigned int)、短整型(unsigned short)和长整型(unsigned long)三种,只用来存储无符号整数。,11,2.占用内存字节数与

7、值域 上述各类型整型变量占用的内存字节数,随系统而异。在TC中,一般用字节表示一个int型变量,且long型(字节)int型(字节)short型(字节)。显然,不同类型的整型变量,其值域不同。例如,TC编译系统中一个int型变量,其取值范围是-3276832767;一个unsigned型变量的值为:065535。P19表2.2.类型匹配规则 类型匹配规则为:一个整型常量,可以赋给能容纳下其值的整型变量。,12,2.2.2 实型数据,一、实型变量 语言的实型变量,分为两种:(1)单精度型。关键字为float,一般占字节(32位)、提供位有效数字。(2)双精度型。关键字为double,一般占个字节

8、、提供1516位有效数字。二、实型常量.表示形式 实型常量即实数,又称浮点数,其值有两种表达形式:(1)十进制形式。例如3.14、9.8。(2)指数形式:E(e)。例如3.0+5等。,13,案例2.2 计算三门课的平均分。#include void main()int english,math,c;/*定义3个整型变量*/int sum;/*定义整型变量sum*/float average;/*定义单精度浮点类型average*/printf(“请输入英语成绩:”);scanf(“%d”,14,2.2.3 字符型数据,一、字符常量1.字符常量的定义用一对单引号括起来的单个字符,称为字符常量。例

9、如,A、等。2.转义字符语言还允许使用一种特殊形式的字符常量,就是以反斜杠“”开头的转义字符。注意:如果反斜杠或单引号本身作为字符常量,必须使用转义字符:、。,15,二、字符变量字符变量的类型关键字为char,一般占用1字节内存单元。1.变量值的存储 字符变量用来存储字符常量。将一个字符常量存储到一个字符变量中,实际上是将该字符的ASCII码值(无符号整数)存储到内存单元中。P342 附录CASCII码表例如:char ch1,ch2;/*定义两个字符变量:ch1,ch2*/ch1=a;ch2=b;/*给字符变量赋值*/,16,2.特性字符数据在内存中存储的是字符的ASCII码 一个无符号整数

10、,其形式与整数的存储形式一样,所以语言允许字符型数据与整型数据之间通用(0255)。(1)一个字符型数据,既可以字符形式输出,也可以整数形式输出。(2)允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算。,17,案例2.3 将给定的小写字母转换为大写。#include void main()char c1,c2;/*定义两个字符类型的变量*/c1=a;/*将字符常量a赋给字符变量c1*/c2=b;/*将字符常量b赋给字符变量c2*/c1=c1-32;/*求字符a对应的大写字母*/c2=c2-32;/*求字符b对应的大写字母*/printf(“%c%cn”,c1,c2);/*

11、输出字符变量c1、c2的值*/,18,三、字符串常量1.字符串常量的概念和字符串长度字符串常量是用一对双引号括起来的若干字符序列。字符串中字符的个数称为字符串长度。长度为0的字符串(即一个字符都没有的字符串)称为空串,表示为“”(一对紧连的双引号)。例如,“How do you do.”、“Good morning.”等,都是字符串常量,其长度分别为14和13(空格也是一个字符)。,19,2.字符串的存储C语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个0作为字符串的结束标志。注意:在源程序中书写字符串常量时,不必加结束字符0。如果有一个字符串为“CHINA”,则它在内存中的实际存

12、储如下所示:最后一个字符0是系统自动加上的,它占用字节而非字节内存空间。,20,综上所述,字符常量A与字符串常量A是两回事:(1)定界符不同:字符常量使用单引号,而字符串常量使用双引号;(2)长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数;(3)存储要求不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志0。,21,2.3 常用运算符与表达式,在语言中,除控制语句和输入输出函数外,其它所有基本操作都作为运算符处理。1.五种基本算术运算符+、-(减法/取负)、*、/、%(求余数)(1)关于除法运算/C语言规定:两

13、个整数相除,其商为整数,小数部分被舍弃。例如,5/2=2。(2)关于求余数运算要求两侧的操作数均为整型数据,否则出错。,22,【案例2.4】计算表达式1+1/2+1/3+1/4+1/5的值。当“/”左右两边的操作数都是整数时,其结果也为整数。例如:1/2=0。若“/”左右两边的操作数有一个是实数,其结果为实数,1.0/2=0.5#include void main()float x;/*定义一个浮点型变量x*/x=1+1.0/2+1.0/3+1.0/4+1.0/5;printf(“x=%fn”,x);/*输出变量x的值*/,23,2.表达式和算术表达式(1)表达式 用运算符和括号将运算对象(常

14、量、变量和函数等)连接起来的、符合语言语法规则的式子,称为表达式。单个常量、变量或函数,可以看作是表达式的一种特例。将单个常量、变量或函数构成的表达式称为简单表达式,其它表达式称之为复杂表达式。(2)算术表达式表达式中的运算符都是算术运算符。例如,3+6*9、(x+y)/2-1等,都是算术表达式。,24,3.运算符的优先级与结合性(1)语言规定了运算符的优先级和结合性。所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。自左至右的结合方向,称为左结合性。反之,称为右结合性。结合性是语言的独有概念。除单目运算符、赋值运算符和条件运

15、算符是右结合性外,其它运算符都是左结合性。,25,4.数据类型转换(1)在语言中,整型、实型和字符型数据间可以混合运算。如果一个运算符两侧的操作数的数据类型不同,则系统按“先转换、后运算”的原则,首先将数据自动转换成同一类型,然后在同一类型数据间进行运算。转换规则如下所示。char,short float int unsigned long double向下的箭头,表示必须的转换。char和short 型必须转换成 int 型,float型必须转换成double型。横向向右的箭头,表示不同类型的转换方向。注意:箭头方向只表示数据类型由低向高转换,不要理解为int型先转换成unsigned型,再

16、转换成long型,最后转换成double型。,精度低,精度高,26,(2)除自动转换外,语言也允许强制转换。数据类型强制转换的一般格式为:(要转换成的数据类型)(被转换的表达式)当被转换的表达式是一个简单表达式时,外面的一对圆括号可以缺省。例如,(double)a(等价于(double)(a)/*将变量a的值转换成double型*/(int)(x+y)/*将x+y的结果转换成int型*/(float)5/2(等价于(float)(5)/2)/*将5转换成实型,再除以2(=2.5)*/(float)(5/2)/*将5整除2的结果(2)转换成实型(2.0)*/注意:强制转换类型得到的是一个所需类型

17、的中间量,原表达式类型并不发生变化。例如,(double)a 只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。,27,5.赋值运算符及其表达式,(1)“=”是一个赋值运算符(2)a=3是赋值表达式。(3)赋值表达式加上一个分号构成语句,如:a=3;if(a=b)0)t=a;红色部分是一个条件 该语句的含义是:先将b的值赋予a,若a的值大于0,则将a的值赋予t。这里的a=b是一个赋值表达式。注意:赋值表达式和赋值语句的差别。,28,2.4 数据的输入与输出,输入/输出以计算机为主体,输入是指从输入设备(键盘等)向计算机输入数据,输出是指从计算机向输出设备(显

18、示器等)输出数据。C语言本身不提供输入输出语句,输入输出操作通过C系统函数库的函数来完成的。如 输入函数:scanf()、getchar();输出函数:printf()、putchar()等。在使用系统函数库的函数时,要用编译预处理命令“#include”将有关的“头文件”包含到用户的源文件中。,29,1.单个字符的输出putchar()函数案例2.5 putchar()函数的格式和使用方法。#include/*编译预处理命令:文件包含*/void main()char ch1=N,ch2=E,ch3=W;putchar(ch1);putchar(ch2);putchar(ch3);/*输出*

19、/putchar(n);putchar(ch1);putchar(n);/*输出ch1的值,并换行*/putchar(E);putchar(n);/*输出字符E,并换行*/putchar(ch3);putchar(n);,程序运行结果如下:NEW N EW,30,putchar()函数的格式:putchar(ch);其中ch可以是一个字符变量或常量,也可以是一个转义字符。putchar()函数的作用是向终端输出一个字符。(1)putchar()函数只用于输出单个字符,且一次只能输出一个字符。另外,从功能角度来看,printf()函数可以完全代替putchar()函数。(2)在程序中使用putc

20、har()函数,务必牢记:在程序(或文件)的开头加编译预处理命令(也称包含命令):#include,31,2.单个字符的输入getchar()函数案例2.6 getchar()函数的使用。#includemain()char r;r=getchar();/*输入一个字符*/putchar(r);/*输出该字符*/putchar(n);a/*键盘输入的字符数据*/a/*屏幕显示的输出数据*/,程序执行时输入一个字符a并按回车键后,在屏幕上看到结果。,32,getchar()函数的格式:getchar();getchar()函数的作用:从系统输入设备(如键盘)输入一个字符。另外,从功能角度来看,s

21、canf()函数可以完全代替getchar()函数。(1)getchar()函数只能用于单个字符的输入,一次输入一个字符。当需要多个字符时,可通过循环输入实现。(2)程序中要使用getchar()函数,必须在程序(或文件)的开头加上编译预处理命令:#include 注意:函数getchar()和putchar(ch)在格式上和应用上的差别。,33,3.格式化输出函数printf()函数,案例2.7 已知圆半径radius=1.5,求圆的周长和面积并输出。#includevoid main()float radius,length,area,pi=3.1415926;radius=1.5;len

22、gth=2*pi*radius;/*求圆周长*/area=pi*radius*radius;/*求圆面积*/printf(“radius=%fn”,radius);/*输出圆半径*/printf(“length=%7.2f,area=%7.2fn”,length,area);,34,printf()函数的作用:向计算机系统默认的输出设备(一般指终端或显示器)输出一个或多个任意类型的数据。printf()函数的一般格式如下:printf(格式控制,输出表列);(1)格式控制 格式控制时用双引号括起来的字符串,也称“转换控制字符串”,可以包含三种信息:格式说明。格式说明的一般形式如下:%格式字符,

23、35,转义字符 例如,中printf()函数中的n就是转义字符,输出时产生一个“换行”操作。普通字符除格式字符和转义字符之外的其它字符。格式字符串中的普通字符,原样输出。例如,printf(“radius=%fn”,radius);(2)输出表列 输出表列是可选的。如果要输出的数据不止1个,相邻2个之间用逗号分开。必须与“输出表列”中、输出项的数据类型一致,否则会引起输出错误。,下面的printf()函数都是合法的:(1)printf(I am a student.n);(2)printf(%d,3+2);(3)printf(a=%f b=%5dn,a,a+3);,是普通字符,36,(3)格式

24、字符 输出不同类型的数据,要使用不同的格式字符。常用的有:格式字符d以带符号的十进制整数形式输出。案例2.8 格式字符d的使用。#include void main()int n1=123;long n2=123456;/*用3种不同格式,输出int型数据n1的值*/printf(n1=%d,n1=%5d,n1=%-5dn,n1,n1,n1);/*用3种不同格式,输出long型数据n2的值*/printf(n2=%ld,n2=%5ldn,n2,n2);printf(n1=%ldn,n1);,37,格式字符f 以小数形式、按系统默认的宽度,输出单精度和双精度实数。案例2.9 显示输出浮点数(左对

25、齐、右对齐)。#include void main()float f=123.456;double d1,d2;d1=1111111.111;d2=2222222.222;printf(%f,%10.2f,%-10.2f,%.2fn,f,f,f,f);printf(d1+d2=%fn,d1+d2);,数据右对齐,数据左对齐,38,对于实数,也可使用格式符%e,以标准指数形式输出:尾数中的整数部分大于等于1、小于10,小数点占一位,尾数中的小数部分占5位;指数部分占4位,其中e占一位,指数符号占一位,指数占2位,共计11位。也可使用格式符%g,让系统根据数值的大小,自动选择%f或%e格式、且不输

26、出无意义的零。,39,格式字符c 输出一个字符(只占一列宽度)。案例2.10 格式字符c的使用。#include void main()char c=A;int i=65;printf(c=%c,%5c,%dn,c,c,c);printf(i=%d,%cn,i,i);需要强调的是:在C语言中,整数可以用字符形式输出,字符数据也可以用整数形式输出。,40,格式字符s 输出一个字符串。案例2.11格式字符s的使用。#include void main()printf(%s,%5s,%-10sn,Internet,Internet,Internet);printf(%10.5s,%-10.5s,%4

27、.5s,Internet,Internet,Internet);运行结果如下:注意:系统输出字符和字符串时,不输出单引号和双引号。,41,(4)使用说明 printf()可以输出常量、变量和表达式的值。但格式控制中的格式说明符,必须按从左到右的顺序,与输出表中的每个数据一一对应,否则出错。格式字符x、e、g可以用小写字母,也可以用大写字母。使用大写字母时,输出数据中包含的字母也大写。除了x、e、g格式字符外,其它格式字符必须用小写字母。例如,%f不能写成%F。格式字符紧跟在“%”后面就作为格式字符,否则将作为普通字符使用(原样输出)。,42,6.格式输入scanf()函数,案例2.12 sca

28、nf()函数用来从键盘向计算机输入数据的。#includevoid main()float x,y,z,aver;scanf(“%f%f%f”,43,在程序中给计算机提供数据,可以用赋值语句,也可以用输入函数。在C语言中,可使用scanf()函数,通过键盘输入,给计算机同时提供多个、任意的数据。(1)scanf()函数的一般格式scanf(格式字符串,输入项首地址表);格式字符串。格式字符串可以包含3种类型的字符:格式字符、空格和修饰字符。格式指示符与printf()函数的相似,空白字符作为相邻2个输入数据的缺省分隔符,非空白字符在输入数据时,必须原样一起输入。,44,输入项首地址表由若干个输

29、入项首地址组成,相邻2个输入项首地址之间,用逗号分开。输入项地址表中的地址,可以是变量的首地址,也可以是字符数组名或指针变量。变量首地址的表示方法:&变量名其中“&”是地址运算符。(2)scanf()函数的功能:从键盘上接收格式化输入。,45,(3)格式字符 格式说明符与输出函数中一样。一般形式为:%格式字符 格式字符 类型字符类似输出。例如案例3.6的scanf()函数语句中,格式字符串“%f”。附加说明符(最好不使用)指定该项输入数据所占列数为n。换句话说,读取输入数据中相应的n位,按需要的位数赋给相应的变量,多余部分被舍弃。例如,scanf(%3c%3c,46,使用scanf()注意事项

30、:1.对应“%d%f%d”从键盘上输入数据时,整型或实型数据可以用空格、回车或Tab键隔开,但对于“%c%c”,输入字符时不需要隔开。2“格式字符串”中出现的普通字符(包括转义字符),务必原样输入。例如,scanf(%d,%d,正确的输入操作为:n1=12,n2=36n,47,4输入数据时,遇到以下情况,系统认为该数据结束:(1)遇到空格,或者回车键,或者Tab键。(2)遇到输入域宽度结束。例如“%3d”,只取3列。(3)遇到非法输入。例如,在输入数值数据时,遇到字母等非数值符号(数值符号仅由数字字符0-9、小数点和正负号构成)。,48,格式化的输入/输出功能强,可以用来输入输出整数、实数、字

31、符和字符串,但是语法较复杂,要求比较严格,尤其是格式输入函数scanf()。输入/输出函数中用到的格式字符较多,请注意区别并应用。格式输入/输出函数scanf()、printf()使用时,系统要求把“stdio.h”头文件包含到用户的源文件中。字符输入/输出函数只能用来输入或输出字符,使用时一定要把“stdio.h”头文件包含到用户的源文件中。,49,案例2.13 输入任意三个整数,求它们的和及平均值。#includevoid main()int n1,n2,n3,sum;float aver;printf(“Please input three numbers:”);scanf(“%d,%d

32、,%d”,思考题:能否将“aver=sum/3.0;”中的3.0改为3?为什么?,50,案例2.14 输入三角型的三边长,求三角形面积。分析:由数学知识可得计算三角形面积公式:s=(a+b+c)/2,,#include#includevoid main()double a,b,c,s,area;printf(Please input three numbers:);scanf(%lf,%lf,%lf,51,案例2.15 求方程ax2+bx+c=0的实数根。a,b,c由键盘输入,a0且b2-4ac0。分析:根据数学知识,当b2-4ac0时,方程有两个实根。#include#include/*为使

33、用求平方根函数sqrt()*/void main()float a,b,c,disc,x1,x2;printf(Input a,b,c:);scanf(%f,%f,%f,52,案例2.16 鸡兔同笼问题。已知笼中鸡兔总头数有35,总脚数为94,计算鸡、兔各多少只?,设头为a,脚为b,鸡为x只,兔为y只。#includevoid main()int a,b,x,y;printf(输入鸡兔总头数和脚数:);scanf(%d%d,53,案例2.17 有面值5元和10元的钞票共100张,总值为800元。编程统计5元和10元的钞票各有多少张。设5元的为x张,10元的为y张,m为总张数,n为总值。根据分析

34、可得:y=(n-5*m)/5,x=m-y。,#include void main()int x,y,n,m;printf(请输入人民币的张数和总值:);scanf(%d,%d,54,本章小结,本章主要掌握内容:1.数据类型分类,重点掌握基本数据类型。,2.算术运算符(+、-、*、/、%)、赋值运算符及其表达式等。,3.输入输出函数的应用scanf()、printf()、putchar()、getchar()。,55,本章作业P36:1,2,3题将答案写在书上;4题改正错误并上机调试;5题自己阅读程序将结果写在书上,并上机验证;6题编程,在实验课时上机调试、验证。本周实验内容P291 实验二 教材中例2.13、2.14、2.15上机练习,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号