C语言课件第2章基本数据类型.ppt_第1页
C语言课件第2章基本数据类型.ppt_第2页
C语言课件第2章基本数据类型.ppt_第3页
C语言课件第2章基本数据类型.ppt_第4页
C语言课件第2章基本数据类型.ppt_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,第 2 章,基本数据类型,2,一、数据类型概述 二、标识符、常量和变量 三、基本数据类型整型、实型、字符型 四、数据的输入与输出,主要内容,3,在程序中对用到的 所有数据都必须指 定其数据类型.,?,不同类型的数据,所占 内存的字节数不同, 对 应的操作也不相同。,一、数据类型概述,4,1、标识符 2、常 量 3、变 量,二、标识符、常量和变量,5,1、标识符,标识符 identifier,(1)标识符就是一个名字(如常量名、变量名、函数名)。 (2)组成:只能由字母、数字、下划线组成。且第一个字符必须为字母或下划线。 (3)长度:标识符的有效长度随系统而异,如果超长,则超长部分被舍弃。VC+6.0中规定最大长度为255个字符。 (4)标识符大小写是有区别的。 例如:SUM和sum是不同的标识符 (5)标识符命名的良好习惯见名知意 例如,name(姓名)、age(年龄),6,标识符的分类,根据不同的用处,标识符分为:,(1)关键字,由程序员自己定义的变量名、符号常量名、数组名、函数名等。,(2)预定义标识符,(3)用户标识符,C语言中有特定含义的标识符,主要用于描述库函数名(如printf、scanf等)和编译预处理命令名(如define、include等)。,又叫保留字,是指C语言规定的、有特殊含义和专门用途的标识符,主要用于描述数据类型、存储类型、类型定义和语句控制。C语言中规定的关键字有32个。,用户标识符不能使用关键字,尽量避免使用预定义标识符。,7,下列用户标识符是否合法,为什么? sum a1 b2 s_name 123 #ss a.b.c 1a8bc,思 考 ?,合法,不合法,8,概念,在程序运行过程中,其值不能被改变的量。,分类,字面常量(直接常量): 12 -44.6 a “Hello! “ 符号常量:用一个标识符代表一个常量。,字符串常量,符号常量的定义,格式:#define 符号常量 常量 举例:#define PRICE 100 #define PI 3.14 #define C1 a,习惯上常量名用大写, 变量名用小写。,意义,1、含义清楚。 2、在需要改变一个常量时,能够做到“一改全改”。,符号常量的定义放在 函数外面。,2、常量,9,概念,其值可以改变的量称为变量。,3、变量,要素,(1)变量名。每个变量都必须有一个名字变量名,变量命名遵循标识符命名规则。 (2)变量值。在程序运行过程中,变量值存储在内存中。在程序中,通过变量名来引用变量的值。 (3)变量的数据类型。用来确定变量所占存储空间的大小以及可进行的操作种类。,10,变量的声明,数据类型 变量名, 变量名2;,int a1, a2; float x1, x2; double y1, y2; char c1, c2;,习惯上, 变量名用小写字母。 常量名用大写字母。,11,在声明变量的同时为其赋初值,称为变量的初始化。 例如: int length=100;,变量的初始化,如果要对几个同类型变量赋相同的初值,必须各自分别赋初值,不能连写。,例如: int a=0, b=0; /正确 int a=b=0; /错误,12,举例,include int main() int student,age; int if=adrress=1; float score=90; stadent=2; Age=20.7; printf(“%d %d %d %f“,if,student,age,score); return 0; ,本程序中有几处错误?,undeclared identifier,13,例2.1 常量和变量的使用。,#include “stdio.h“ #define WIDTH 80 /定义符号常量WIDTH int main( ) int length=100, circumference, area; /声明变量 circumference=(length+WIDTH)*2; area=WIDTH*length; printf(“circumference =%d,area=%dn“,area); return 0; ,circumference=360,area=8000,运行结果:,14,1、整型 2、实型 3、字符型,三、基本数据类型,15,Sizes of Fundamental Types in Microsoft C+.,16,十进制: 123, -456, 0 八进制: 0123, -0456 十六进制: 0x123, -0x456,以数字0开头,以0x或0X开头,1、整型,例2.2 以下整型常量哪些是合法的,哪些是非法的。 -297,029,0625,O11,0x35BH, 0XFF,-0x53,0x1F2d,合法的整型常量:-297,0625,0XFF,-0x53,0x1F2d 非法的整型常量:029,O11,0x35BH,(1)整型常量的表示,17,(2)整型变量,整型变量的分类、取值范围,int 32 -231231-1 unsigned int 32 04294967295,short 16 -3276832767 unsigned short 16 065535,long 32 -231231-1 unsigned long 32 04294967295 ( 0232-1),各类型整型变量占用的内存字节数,随系统而异。,18,注意: 整型常量分为基本整型和长整型。,整型常量的分类,基本整型(数据范围与int型一样) 长整型 (在数值后面加“L(l)”, 数据范围与long int型一样),如123l,315L,19,#include int main() long int c,d=9L; unsigned int e=-3 , f; f =5; c=-6; printf(“%ldn%ldn%un%u“,c,d,e,f); return 0; ,举例,-6 9 4294967293 5,运行结果,20,整型数据在内存中是以补码表示的。,(3)整型数据在内存中的存放形式,21,12和-12在内存中的存放形式,22,n位无符号整数的取值范围:,n位带符号整数的取值范围:,即- 2n-1 2n-1-1,即02n-1,23,整数类型溢出举例,#include void main() int a,b; a= 2147483647; b=a+1; printf(“%dn%d“,a,b); ,2147483647 2147483648,运行结果,24,表示方法,十进制小数形式: 123. 34,-0.0045, 0.0 指数形式: E(e) 如0.23e2 ,-0.45e-3, 3.0+5,规范化指数形式,数字和小数点组成,2.实型,关于分类,C编译系统将实型常量作为双精度来处理。一个实型常量,可以赋给一个实型变量(float型或double型)。,(1)实型常量的表示,25,指数形式(数符+小数部分+指数部分),小数部分占的位数越多,数的有效 数字越多,精度越高.指数部分占的 位数越多,表示的数值范围越大.,(2)实型数据在内存中的存放形式,实型数据在内存中是按指数形式存储的。,规范化指数形式:小数部分有且仅有1位非0数字。,IEEE754标准,转换成十进制底计算公式,float,double,s*2(E-127)*(1.M)B,26,分类及取值范围,(3)实型变量,实型常量默认是double类型,27,3、字符型,存储方式,以ASCII码存储,占一个字节,注意:字符型数据与整型数据在存储方式上的相似性使得两者之间可以通用。但字符型数据的表示范围是:0255。,字符变量ch中存放字符a,其ASCII码为97,在内存中以二进制形式存放,其格式如下:,0 1 1 0 0 0 0 1,ch,举例,28,字符常量,用单撇号括起来的一个字符. a A 9 = ? ,n 换行,从当前位置移到下一行开头 t 水平制表(跳到下一个tab位置) 单撇号字符 反斜杠字符 “ 双撇号字符 ddd 13位8进制数所代表的字符 xhh 12位16进制数所代表的字符 ,语言还允许使用一种特殊形式的字符常量,就是以反斜杠 开头的转义字符。,将 后面的字符转换 为另外的意义.即是 一种控制符号.,不同的两个字符,转义字符,表示方法,29,#include int main() printf(“x4Fx4Bx21n“); /* 等价于printf(“OK!n”); */ printf(“x15 xABn”); /* 等价于什么?*/ return 0; ,! ,程序运行结果:,举例,30,字符变量,类型标识符,char,举例,char ch1=a,ch2;,存放数据范围,大小写英文字母、数字、运算符、 标点符号等,31,例 字符变量的字符形式输出和整数形式输出。 #include void main() char ch1,ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn“,ch1,ch2); printf(“ch1=%d,ch2=%dn“,ch1,ch2); ,字符类型举例1,一个字符型数据,既可以字符形式输出,也可以整数形式输出,ch1=a,ch2=b ch1=97,ch2=98,程序运行结果:,32,字符类型举例2,允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算,例字符数据的算术运算(参考教材附录的ASCII码表)。 #include void main() char ch1,ch2; ch1=a; ch2=B; /*字母的大小写转换*/ printf(“ch1=%c,ch2=%cn“,ch1-32,ch2+32); /*用字符形式输出一个大于256的数值*/ printf(“ch1+200=%dn“, ch1+200); printf(“ch1+200=%cn“, ch1+200); printf(“ch1+256=%dn“, ch1+256); printf(“ch1+256=%cn“, ch1+256); ,ch1=A,ch2=b ch1+200=297 ch1+200=) ch1+256=353 ch1+256=a,程序运行结果:,33,概念,字符串常量,用一对双撇号“ “括起来的若干字符序列,字符串长度,字符串中字符的个数。长度为0的字符串(即一个字符都没有的字符串)称为空串,表示为“ (一对紧连的双撇号)。,存储方式,C语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个0作为字符串的结束标志。,举例,“hello“、“a“、“a*b3n“,34,思考?,1、 字符串常量“How do you do.“和“Good morning.“的长度分别是多少?,2、 字符串C:msdosv6.22和I say: “ Goodbye! “在C语言中的字符串常量形式如何表示?,3、 字符串“CHINA“在内存中的实际存储形式是怎样的?占用多少个字节的内存空间?,14和13,“C:msdosv6.22“和“I say:“Goodbye!“,占用字节而非字节内存空间,35,注意: 1、a是字符, “a“是字符串。 2、 不能把一个字符串赋给一个字符变 量。如c=“a“、c=“Hello! “都是错误的。 3、C语言中没有字符串变量,可以用字符数组来表示。,36,总结:字符与字符串的区别有哪些?,定界符不同:字符常量使用单引号,而字符串常量使用双引号; 长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数; 存储要求不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效的字符外,还要存储一个结束标志0。,37,(一)、C的输入与输出 (二)、单个字符的输出 (三)、单个字符的输入 (四)、格式化输出 (五)、格式化输入,四、数据输入与输出,38,说明,1、所谓输入输出是以计算机为主体而言的。 2、输入输出操作是由函数实现的。,标准输入输出函数,putchar( ) getchar( ) puts( ) gets( ) printf( ) scanf( ),预编译命令,在使用C语言库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中。,举例,#include “stdio.h” int main() printf(“Hello!” ); return 0; ,#include ,(一)、C的输入与输出,39,作用,向终端(或系统默认的输出设备)输出一个字符。,(二)、单个字符的输出 putchar函数,显示器,格式,putchar(ch);,?,A,注:其中ch可以是一个字符型(整型)变量、常量或表达式,也可以是一个转义字符, 如 putchar(n)、putchar(101)。,40,#include “stdio.h“ int main( ) char ch1=B,ch2=o,ch3=k; putchar(ch1);putchar(ch2);putchar(ch2);putchar(ch3); putchar(t); putchar(ch1+32);putchar(ch2); putchar(ch2);putchar(ch3); putchar(n); putchar(ch2-32);putchar(ch3-32); return 0; ,例2.2,Book book OK,41,作用,从终端(或系统默认的输入设备)输入一个字符。,键盘,(三)、单个字符的输入 getchar函数,格式,getchar();,getchar函数没有参数,返回值为输入的字符。,#include “stdio.h“ int main( ) char ch; ch=getchar(); putchar(ch); return 0; ,例2.3,输入: a,a,42,#include “stdio.h“ int main( ) char ch1,ch2,ch3,ch4,ch5; ch1=getchar(); ch2=getchar(); ch3=getchar(); ch4=getchar(), ch5=getchar(); putchar(ch1); putchar(ch2); putchar(ch3); putchar(ch4); putchar(ch5); return 0; ,ab cde,ab c,输入:,?,43,格式,printf(“格式控制字符串” ,输出列表);,说明,1、 “格式控制字符串“是用双撇号引起来的字符串,包括三种信息: (1)格式说明:由%和格式字符组成。 (如%d、%7.2f) (2)转义字符: (如t、n、b、r等) (3)普通字符:需要按原样输出的字符。 2、可以没有输出列表,只用来输出字符串常量。 如:printf(“hello world!“); 3、“输出列表”是需要输出的一些数据,可以是表达式。,将输出的数据转换为指定的格式输出。,(四)格式化输出printf函数,作用,向显示器输出若干个任意类型的数据。,44,例2.5,#include int main() int a,b; a=3; b=4; printf(“输出结果为:”); printf(“%d %dn”,a,b); printf(“a=%d, b=%dn”,a,b); printf(“a+b=%d”,a+b); return 0; ,输出结果为:3 4 a=3, b=4 a+b=7 _,举例,printf(“sum=%d n %c”, x, ch);,普通字符,格式说明,转义字符,如果x=100,ch= A ,那么下面的输出语句将输出什么结果?,输出列表,sum=100 A_,45,格式说明必须以开始,以格式字符结束。 一般形式如下: % 标志 宽度 .精度 l 格式字符,输出数据向左靠拢,输出数据最小宽度,对实数:输出小数点位数; 对字符串:截取字符的个数,格式说明的一般形式,46,格式字符,附加格式说明字符,格式字符,47,格式输出举例d格式符,%d,%md,%-md,10020,100,20,100 20,10020,10020,10020,48,#include “stdio.h“ int main( ) float x, y; x = 111111.111; y = 222222.222; printf(“%f“, x+y); return 0; ,输出,333333.328125,整数部分全部输出, 小数部分输出6位,因有效位数为7位,因此 后面数字不准确。,格式输出举例f格式符,%f,例2.6,49,#include “stdio.h“ int main( ) float y=12.6789; printf(“%f,%10f,%10.2f,%.2f,%-10.2f“,y,y,y,y,y); return 0; ,输出,12.678900, 12.678900, 12.68,12.68,12.68,实数最常用的 两种输出格式,格式输出举例f格式符,%.nf %m.nf %-m.nf,例2.7,50,格式输出举例c格式符,#include int main() char c=A; int i=65; printf(“%c,%dn“,ch,ch); printf(“%c,%d“,a,a); return 0; ,A,65 A,65,注意,在C语言中,整数可以用字符形式输出,字符数据也可以用整数形式输出。将整数用字符形式输出时,系统首先求该数与256的余数,然后将余数作为ASCII码,转换成相应的字符输出。,例2.8,51,格式,scanf(“格式控制字符串” ,地址列表);,说明,1、 “格式控制字符串”与printf函数类似。可以包含以下三种类型 的信息: 格式说明:与printf类似,以开始,以一个格式字符结束; 空白字符(空格、t、n):输入多个数据时的缺省分隔符,可以省略,在输入数据时可以以任一种空白字符分隔; 普通字符(照原样输入)。 2、 “地址表列”是由若干个地址组成的列表,各地址之间用逗号分隔。如变量的地址表示为:&变量名。,(五)格式化输入scanf函数,作用,从键盘输入若干个任意类型的数据。,52,int a,b; scanf(“%d%d”,1020 10,20,int a,b; scanf(“%d,%d”,10 , 20 10,20,格式输入举例d格式符,注意,举例,当输入多个数据时,若各个格式说明之间没有其他字符,则系统默认使用空格键、回车键和Tab键进行间隔;若格式说明之间有其他字符,则必须照原样输入。,10 20 10,20,53,int a,b; printf(“P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论