《顺序结构程序设计》PPT课件.ppt
《《顺序结构程序设计》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《顺序结构程序设计》PPT课件.ppt(177页珍藏版)》请在三一办公上搜索。
1、第2章顺序结构程序设计,2.1 C程序结构2.2 基本数据类型、变量与常量2.3 赋值运算符与赋值表达式2.4 算术运算符与算术表达式2.5 逗号运算与逗号表达式,主要内容,2.6 运算符的优先级与结合性2.7 混合运算时数据类型的转换2.8 语句和块2.9 数据的输入与输出2.10 顺序结构程序设计综合举例,主要内容(续),2.1 C程序结构,举例介绍C语言的程序结构。例2-1 从键盘输入半径,求圆的周长和面积。,算法思路:radius:存放从键盘输入的半径;计算周长:perimeter=2*radius*PI;计算面积:area=PI*radius*radius,输出perimeter和a
2、rea的值,不确定性,列公式,#include double PI=3.14;void main()int radius;double perimeter,area;printf(Input a radius:);scanf(%d,声明变量radius,提示输入,输入数据赋给radius,计算周长和面积,输出结果,预处理命令,全局变量声明,函数定义,2.1 C程序结构,C源程序由三个要素组成:(1)预处理命令。C编译程序对源程序编译前,先由预处理器对预处理命令进行预处理。(2)全局声明。包括全局变量声明和函数原型声明。(3)函数定义。一个C语言程序由一个或多个函数组成的,其中只能有一个main
3、函数。函数由一组语句组成。比语句更小的语法单位:表达式、变量、常量和关键字等。,2.1.1 C字符集,大小写的英文字母:AZ,az数字字符:09特殊字符:空格!%.,(),2.1.2 词法记号,关键字(Keyword)又称为保留字,C语言预定的具有固定含义的一些单词 例如:数据类型修饰符int,控制语句return等,auto break case char continue const default double do else float for if int long NULL return switch shortsigned true this unsigned void whil
4、e,2.1.2 词法记号,标识符(Identifier)以字母和下划线开始,大小写敏感,最长32个字符。以大写字母、小写字母、下划线或数字09组成。直观,见名知意,便于记忆和阅读最好使用英文单词或其组合,忌使用汉语拼音 不宜混淆 如1与l,o与0不允许使用关键字作为标识符的名字 int,float,for,while,if等,例:判断下列标识符号合法性,并标出不合法的标示符。sum Sum M.D.John day Date 3days student_name#33 lotus_1_2_3 char ab _above$123,M.D.John,3days,#33,char,$123,ab,
5、2.1.2 词法记号,2.1.2 词法记号,运算符(Operator)34种,详见P200页附录A分隔符(Separator)空格、回车/换行、逗号等 其它符号 大花括号和/*和*/是程序注释所需的定界符数据(Data)变量(Variable)常量(Constant),2.2 数据类型、常量和变量,2.2.1 基本数据类型2.2.2 常量2.2.3 变量2.2.4 符号常量2.2.5 指针与指针变量,2.2 数据类型、常量和变量,数据为什么要区分类型?不同类型的数据代表不同的数据表示形式合法的取值范围占用内存空间大小可参与的运算种类,数据类型(Data Type),如何衡量数据类型所占空间大小
6、?,常用的单位如下:b,B,KB,MB,GB,TB bit,中文叫法:位Byte,中文叫法:字节Kilobyte(KB),中文叫法:KMegabyte(MB),中文叫法:兆Gigabyte(GB),中文叫法:GTerabyte(TB),中文叫法:T,1 TB=1,024 GB,1 GB=1,024 MB,1 MB=1,024 KB,1 KB=1,024 B,1 B=8 b,如何衡量数据类型所占空间大小?,一个位有多大?只能是0或者1,这叫二进制一个字节有多大?保存一个字符(英文字母、数字、符号)ASCII(美国标准信息交换码)编码见附录A,常用字符与ASCII码对照表两个字节保存一个汉字GB编
7、码可以表示0255之间的整数,2.2.1 基本数据类型,表2-1 C的基本数据类型(32位机),整型(integer),整型:有符号整数,允许取值为整数 如:123,567整型的分类:整型(int):占4个字节短整型(short int):占2个字节,通常简写为short长整型(long int):占4(8)个字节,通常简写为long,数据类型修饰符,signed用来修饰char、int、short和long,说明他们是有符号的整数(正整数、0和负整数)。有符号数在计算机内以二进制补码形式存储的,最高位表示符号位(0为正数,1为负数)。一般缺省都是有符号的,所以这个修饰符通常省略。,int型:
8、,最大:32767,最小:-32768,数据类型修饰符,unsigned用来修饰char、int、short和long,说明他们是无符号的整数(正整数和0)。无符号型在机内只能存放正数,最高位也来表示数值的。当数据占用同样内存位数时,无符号型数值范围比有符号数扩大一倍。,数据类型修饰符,unsigned int型:,最大:65535,最小:0,扩充的整型类型,有符号基本整型 signed int;无符号基本整型 unsigned int;有符号短整型 signed short int;无符号短整型 unsigned short int;有符号长整型 signed long int;无符号长整型
9、 unsigned long int;,二进制存放与溢出,(1)10=(0000 0000 0000 0001)2,(-1)10=,(1111 1111 1111 1111)2,(65535)10=,(1111 1111 1111 1111)2,当65535按unsigned int型理解时,仍为65535;而当按int型理解时,被当作-1的补码。,字符型(char),字符型char的取值为单个字符。例如:A、用ASCII编码表示一个字符,每个字符占用1个字节,总共可以表示256个不同的字符。char 类型前可用signed和unsigned加以修饰。例如:char ch=127;signed
10、 char ch=-128;unsigned char ch=255;思考:unsigned char 范围?,浮点型(float point),浮点类型:允许取值为带小数的实数双精度浮点型double单精度浮点型float 如 123.46double比float的精度更高(即小数的有效位数更多),表示数据的范围也更大。,2.2.2 常量,常量(Constant)在程序执行过程中其值不变的量。常量包括以下几种:整型常量浮点常量字符常量字符串常量,整型常量(short,int,long),整型常量18、-31long int型常量 123l、123L、123456l、123456Lunsign
11、ed int型常量 123u、123U整型常量的类型根据其值所在范围确定其数据类型在整型常量后加字母l或L,认为它是long int 型常量,整型常量的表示形式,整型常量的表示形式:十进制八进制十六进制,整型常量的表示形式,十进制形式:若干个09的数字 如:100,-50,0 八进制形式:以0开头的若干个07数字 如:0123 表示十进制数 83,-011 表示十进制数-9。010和10大小不一样,整型常量的表示形式,十六进制形式:用0 x或0X开头的若干个 09,af,AF的数字 如:0 x2F 表示十进制的数字47。0 x123 表示十进制数291,-0X12 表示十进制数-18。,例:1
12、2与12L,例:30000 为int型 65536 为long int 型,整型常量的表示形式,例:0524 为int型,在内存中是如何表示的?,01010100,00000001,4,2,5,例:01736L 为long int 型,11011110,00000011,00000000,00000000,6,3,7,1,注意事项,Example:#include void main()short int a;printf(Input:);scanf(%d,运行结果:Input:12345 a=12345 Input:1234567 a=-10617,整型整数 short int 的范围:-3
13、2768+32767,Because:12345的补码是0011000000111001 1234567的补码是100101101011010000111 截去多余部份(超过2个字节的左边部分)后 其原码为 1010100101111001(-10617),可用下图表示:32767 32766 32765-32766-32767-32768,输入(Input:)输出(a=)32767 32767 32768-32768 32769-32767 32770-32766-32768-32768-32769 32767-32770 32766,有趣的结果,何谓类型溢出(Overflow)?,C语言直
14、接提供的任何类型都有取值范围。当向其赋超过此范围的数值,就会产生数值溢出,得到一个不正确的结果。short int的范围是-3276832767如果超出取值范围,给它一个小于-32768或者大于32767的数会如何呢?,小蛇能吞下大象吗?,类型溢出的解决方案?,解决方案:预先估算运算结果的可能范围,采用取值范围更大的类型。1+2+3+1!+2!+3!+13+23+33+如果不需要处理负数,则采用无符号类型。在运算还没开始之前就判断运算数是否在合理的取值范围内。如果超出,则停止运算,转错误处理。,浮点型常量(float,double),浮点型常量:可以含有小数部分的数值常量。根据占用内存长度的不
15、同,分为:单精度浮点常量:占用32位内存,用F、f表示。如:19.4F,3.0513E3f,8701.52f双精度浮点常量:占用64位内存,用带D或d或不加后缀(缺省)的数值表示 如:2.433E-5D,700041.273d,3.1415。long double型常量 123.45l、456.78L、4.5e3L因为字母l和数字1容易混淆,所以当用l做后缀时,常使用大写形式,浮点型常量(float,double),浮点常量两种表示形式:十进制小数形式和指数形式。十进制小数形式:包括符号+与-,09十个数字以及小数点.。如:0.123,1.23,123.0。指数形式:包括符号+与-,09十个数
16、字,小数点.以及e(或E)。如:0.123e3 表示0.123103-35.4E-5 表示-35.410-5,其中e或E之前必须有数字,且e或E后面的指数必须为整数。,如:e-5,1.2E-3.5 不正确,浮点型常量(float,double),例:,/下列程序的功能是将10个实型数0.1进行累加,然后将累加结果输出。#include stdio.hvoid main()int k;/*定义整型变量k*/double x,z;/*定义双精度是型变量x与z*/z=1.0;/*实数1.0赋给变量z*/x=0.0;for(k=0;k10;k+)x=x+0.1;/*10个0.1累加到变量x中*/pri
17、ntf(z=%20.17fn,z);/*输出变量z的值*/printf(x=%20.17fn,x);/*输出变量x的值*/,字符常量(Character),字符常量:用一对单引号括起的单个字符。一个字符用一个字节存储。字符常量的值:该字符的ASCII码值,如:A 65,a 97,0 48,n 10,如:101-A 012-n 376-x61-a 60-0 483-(),例:A-101-x41-65,字符常量(Character),就是一个普通整数,也可以参与各种数学运算每个字符具有一个0255之间的数值,可查ASCII表注意:1和整数1的区别字符1只是代表一个形状为1的符号,在需要时按原样输出
18、,在内存中以ASCII码形式存储,占1个字节整数1是以整数存储方式,占1个字节,0 0 0 0 0 0 0 1,字符常量(Character),转义字符用开头的字符 例如,n,代表1个字符一些特殊字符(无法从键盘输入或者另有它用)用转义字符表示,含义如表2-2。,表2-2 常用转义字符,转义字符举例,例1:void main()printf(101 x42 Cn);printf(C Programn);printf(Turbo C);,运行结果:(屏幕显示)A B CC ProgramTurbo C,转义字符举例,例2:void main()printf(Yb=n);,运行结果:屏幕显示:=打
19、印机输出:,例3:#include void main()printf(How are you?n);printf(I am fine.nn);/*横向跳格符t,使跳到下一个输出区*/printf(How are you?t);printf(I am fine.nn);/*退格符b,使当前的输出位置退一格,即输出的起始位置左移一位*/printf(How are you?n);printf(bI am fine.nn);/*回车符r,使当前输出位置回到本行开头*/printf(I am fine.);printf(rHow are you?nn);/*多个转义字符的混合运用*/printf(n
20、ote:n a stibbkrpn);,什么时候要使用转义字符?,转义字符只在特殊情况下才使用:C程序中需要实现某些特定打印或显示动作时 如 printf(123t56n);C程序中需要打印或显示以下三个字符时(斜杠)(双引号)(单引号)如 printf(Youre a a bad egg!);C程序中需要打印或显示ASCII表中非键盘字符时 如 printf(Look 16 and x80!);,注意:使用转义字符时,后的八进制或十六进制数不应大于char类型所允许的范围(十进制值256)。,字符串常量(String),用双引号括起的一串字符(可以0个)I am a string表示空字符串
21、转义字符也可以在字符串中使用引号只作为字符串开始和结束的标志C语言内部自动用0表示字符串的结束除注释外,是唯一可以出现中文的地方x和x是不同的里定义了一系列专门的字符串处理函数,逻辑(布尔)型常量 boolean,在程序控制中经常用到布尔常量。例如:If(条件)动作1 else 动作2布尔常量的值:true(真)和false(假)。C语言中将布尔类型映射为数值类型:true 用非0的整数表示 false 用0表示,如:3+1=4 结果为true,通常表示1。int a=23 结果为false,通常表示0。,2.2.3 变量,变量在程序执行过程中其值可以改变的量。因此用来记录运算中间结果或保存数
22、据。变量的声明:,数据类型 变量名1,变量名2,变量名n;,决定分配字节数和数的表示范围,合法标识符,short,int,long,float,double,char,unsigned 复合类型,2.2.3 变量,例:int a,b;double data;,编译时,对变量声明语句将根据其类型分配存储空间。变量的名实际上对应空间的地址,变量的值对应空间的内容。在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。,2.2.3 变量,基本类型与变量的分配空间,2.2.3 变量,例如:short s;/给s变量分配
23、两个字节,占用2000-2001单元 s=1234;,图2-1 变量与内存单元的映射关系,2.2.3 变量,变量的使用:先申明,后使用,例1:int student;stadent=19;,变量名和变量值的概念,2.2.3 变量,例2:float a,b,c;c=a%b;,2.2.3 变量,变量定义位置:一般放在函数开头,void main()int a,b=2;float data;a=1;data=(a+b)*1.2;printf(data=%fn,data);,2.2.3 变量,变量的初始化:声明变量的同时指定变量初值格式:数据类型 变量名=初始值;不被初始化的变量,其值为危险的随机数,
24、char esc=a;int i=1;int sum=0;float eps=1.0e-5;,2.2.3 变量,例如:利用变量t交换变量x和y的值t=x;x=y;y=t;,t,y,x,变量的值主要通过赋值运算改变。,使用变量要注意,不要对变量所占的内存空间字节数想当然用sizeof获得变量或者数据类型的长度sizeof运算符:返回操作数存储空间的大小使用形式:sizeof(type)或 sizeof(var_name)求出的结果为表达式值所属类型或者类型占用的字节数sizeof运算符也可以出现在表达式中。例如,x=sizeof(float)-2;printf(%d,sizeof(double)
25、;参见教材P22页例2-2,注意!,为什么要用sizeof获得类型或变量的字长?,因为同种类型在不同的平台其占字节数不尽相同。比如int在16位、32位和64位系统分别占2、4和8个字节。现象与危害:在平台间移植时会出现问题,导致数据丢失或者溢出。解决方案:用,并且只用sizeof获得字长。,变量的类型,整型变量定义形式:int 变量表列;实型变量单精度定义形式:float 变量表列;具有67位有效数字双精度定义形式:double 变量表列;具有1516位有效数字,变量的类型,字符型变量用于存放字符型常量定义方式:char 变量表列;字符变量存放字符ASCII码char与int数据间可进行算术
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 顺序结构程序设计 顺序 结构 程序设计 PPT 课件
链接地址:https://www.31ppt.com/p-5620204.html