第2章c程序设计初步.ppt

上传人:本田雅阁 文档编号:2548678 上传时间:2019-04-06 格式:PPT 页数:56 大小:666.51KB
返回 下载 相关 举报
第2章c程序设计初步.ppt_第1页
第1页 / 共56页
第2章c程序设计初步.ppt_第2页
第2页 / 共56页
第2章c程序设计初步.ppt_第3页
第3页 / 共56页
亲,该文档总共56页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第2章c程序设计初步.ppt》由会员分享,可在线阅读,更多相关《第2章c程序设计初步.ppt(56页珍藏版)》请在三一文库上搜索。

1、第2章 C程序设计的初步知识,C语言的特点: 语法简洁、紧凑 运算符和数据类型丰富,2,2.1简单C语言的构成和格式,例2.1一个只输出一行信息的程序 #include main( ) printf(“This is a C Programn“); ,/*主函数*/,/*命令行*/,/*输出函数*/,运行结果: This is a C Program,3,例2.2求矩形面积,#include main( ) float a,b,area; a=1.2; b=3.6; area=a*b; printf(“a=%f,b=%f,area=%fn”, a,b,area); ,/*说明与定义变量部分*/

2、,/*stdio.h是头文件*/,4,通过以上例子可以看出: 1、C程序是由函数构成的。 每个程序由一个或多个函数组成,并且必须有且仅有一个主函数main( )。 2、一个可执行的C语言程序总是从main函数开始执行,与它在程序中的位置无关。 3、每条语句和数据定义的最后必须有一个分号。,sum( ) ; ,while(total=2000) limit+; total=total+limit; ;,#include “stdio.h” ;,在以下三种情况下不允许有分号: a. 所定义的函数名称后面不使用分号; b. 在右花括号“”后面不使用分号; c. 命令行后面不使用分号。,5,4. C中

3、的输入输出用函数完成。 5. C程序书写格式自由。 一行可写多个语句,一个语句也可分写在多行上。 6. 用/*/对C程序中的任何部分作注释,注释可写在程序的任何位置上,“/*”与“*/”必须成对出现,可以不在同一行上。但不可以嵌套使用。 7.在C语言中,大小写字母是有区别的。 (C语言习惯用小写字母) 8. 书写程序时,最好使用缩进格式的形式。,6,2.2标识符、常量和变量,2.2.1标识符,例 main() int a, b; a=10;b=11; printf(“a=%d,b=%d”,a,b); ,定义:用来标识变量、常量、函数等的字符序列 组成:只能由字母、数字、下划线组成,且 第一个字

4、符必须是字母或下划线 长度:系统不同长度不同 命名原则:见名知意 不宜混淆 如1与I, o与0,练习:判断下列标识符号合法性 sum Sum M.D.John day Date 3days student_name #33 lotus_1_2_3 char ab _above $123,7,标识符,关键字,预定义标识符,用户标识符,8,关键字(附录4),asm auto break case cdecl char const continue default do double else enum extern far float for goto huge if int interrupt

5、long near pascal register return short switch signed sizeof static struct typedef union unsigned void volatile while,9,2.2.2常量,1.定义:在程序运行过程中,始终不改变的量。 2.分类 直接常量 1)整型常量如1,2,50等自然数 2)实型常量如3.0,5.4等小数点的数 3)字符型常量如a,b,1,2(6章中介绍) 4)字符串常量如adfd等(11章中介绍) 符号常量 1)定义:可以用一个符号来代表一个常量,称为符号常量。,10,【例】计算圆的面积,半径为5 程序如下:

6、,#include main( ) double r,s; r=5.0 ; s=3.14159*r*r; printf (“%fn “, s) ; ,11,2.2.3符号常量,定义格式:#define 符号常量 常量,几点说明: 1)符号常量要用#define定义 2)用#define定义符号常量,其值在其作用域内 不能改变 3)符号常量名一般用大写,【例2.2】计算圆的面积 程序如下: #include #define PI 3.14159 main( ) double r,s; r=5.0 ; s=PI*r*r; printf (“%fn “, S) ; ,12,2.2.4变量,1.定义:

7、程序运行过程中其值可以改变的量叫变量,变量用标识符表示,称为变量名。,例 #include main() int a,b; a=10; b=11; printf(“a=%d,b=%d”,a,b); ,定义格式:数据类型 变量1,变量2,变量n;,13,2.变量的实质代表内存中的某个存储单元,10,11,几点说明: 1)变量名与变量值 2)系统为变量分配存储单元大小不固定,由 变量的类型决定 3)变量应先定义后使用,定义时指明类型,14,C语言数据类型,整型 字符型 单精度型 算术类型 实型(浮点型) 基本类型 枚举类型 双精度型 指针类型 数据类型 数组 构造类型 结构体类型 共用体类型,15

8、,2.3整型数据2.3.1整型常量,1三种表示形式 十进制:09 八进制:07,以 0开头 十六进制:09,AF/af,以 0x或 0X 开头,例如: 10.60 -8 0 +123 010 024 0100 073 0x38 0x10 0X10 0XFF 0x0a,注意: 十六进制常量中可以使用大写字母AF,也可以使用小写字母af。 八进制常量中不能出现数字 8 或 9 例如:018、0921非法,16,2.3.1整型常量,整型常量的类型: 基本整型 int 长整型 long int 短整型 short int 无符号型 unsigned 根据值大小默认类型 整型常量后面加l或L,则认为是l

9、ong int型 无符号整数在数尾加u或U 例如:123L、0L、432l、0x100l,17,2.3.2整型变量,定义 类型名 变量名列表 例如 int i, j; long k, m;,1)int是基本整型类型名 2)在一个定义语句中可同时定义多个变量,变量间用 逗号分隔 3)一般系统为int开辟2个字节的内存单元, VC6.0为int开辟4个字节的内存单元 4)C语言中,可以在定义的同时给变量赋值,也称 为初始化,18,初始化,例如:main() int a=5,b=10; double x=23.568,y ; 表示:定义变量并对变量存储单元赋值。 错误的初始化: main() int

10、 a=3+b,b=5; float m=n=23.16; ,19,2.3.3整型数据的分类,方括号内的单词可以省略 short 分配 2 Byte int 分配 4 Byte long 分配4 Byte,20,2.3.4整数在内存中的存储形式,1、存储单位 位:内存中最小的存储单位,每个位中存放一 个0或1.,字节:8个二进制位构成1个字节,字:若干个字节可组成一个“字”。,最低位:一个字节中最右边一位,最高位:一个字节中最左边一位,符号位:对于有符号数,最高位存放符号, 若为正数,最高位置0;若为负数,最高位置1.,21,计算机中正、负数的表示,正数 正数在内存中以“原码”形式存放。 例如正

11、整数5,在内存中的二进制码为: 00000000 00000101 负数 负数在内存中以“补码”形式存放。 例如负整数-5,在内存中的二进制码为: 11111111 11111011,原码,补码,22,数值的表示方法原码、反码和补码,原码:最高位为符号位,其余各位为数值本身的 绝对值 反码: 正数:反码与原码相同 负数:符号位为1,其余位对原码取反 补码: 正数:原码、反码、补码相同 负数:最高位为1,其余位为原码取反,再对 整个数加1,23,举例1,写出-1原码、反码和补码,+1,24,举例2,求-10的补码。,+1,25,由补码转换成原码,负数补码转换成十进制数:最高位不动,其余位取反转换

12、成十进制,再减1,例 求 补码:11111001的十进制数是多少? 取反:10000110 转换: -6 减 1 : -7,方法2:符号位不动,其余位取反再加1,后转换,取反:10000110 加1: 10000111 转换: -7,short型:,最大:32767,最小:-32768,unsigned 型:,最大:65535,最小:0,用两个字节存放short类型的最大正整数是?,27,通过上面的学习,想想若用4个字节存放的最大、最小整数是多大?请说明一下。,28,2.4实型数据,2.4.1实型常量(实数或浮点数) 表示形式有如下两种: 十进制数形式:由数字和小数点及正负号组成。 (注意:必

13、须有小数点) 如:23.678 .678 23. 指数形式:由数字、小数点、字母e或E及正负号组成。(注:e或E之前必须有数字,且后指数必须为整数)如:2.1e5,1e0 1E2 3.6e3 1.0e6,找错误:3.5E-5 、2e3、e 、E2 、3.6e3.5 .e6,29,2.4.2 实型变量,实型变量可分为: 单精度(float型) 如: float x , y ; 双精度型(double型)如:double a , b , c ; 说明: float 型变量在内存中占4个字节; double 型变量在内存中占8个字节。 2. 单精度实数提供7位有效数字; 双精度实数提供1516位有效

14、数字。 3. 一个实型常量不分float 和 double 型, 一个实型常量可以赋给一个float 型或 double 型变量,并根据变量的类型截取实型常量中相应的有效位数字。,例如: float a; double b; a=123456.789 ; /* a=123456.7*/ b=123456.789 ; /* b=123456.789*/,30,注意: 1、虽然实数有两种表示方式。 但在内存中,实数都是以指数的形式来存放的。 如:3.14159 + .314159 1 2、浮点型数据的舍入误差。 当一个很大的数和一个很小的数相加后可能会丢失很小的数。 如: 123456.789e5

15、+20 3、VC6.0中所有float型数据计算的时候系统都先转化为double型数据,得出结果后,取前7位赋给结果变量。,31,运算符和表达式,表达式 由运算符将运算对象连接成的式子,它描述了一个具体的求值运算过程。,32,学习运算符应注意: 运算符功能 与运算量关系 要求运算量个数 要求运算量类型 运算符优先级别 结合性 结果的类型,优先级 指各种运算符号的运算优先顺序 例如算术运算中先 * / 后 + -,结合性 指运算符号和运算对象的结合方向 分为: 左结合( 从左向右) 和右结合(从右向左),33,2.5算术运算符和表达式,2.5.1基本算术运算符: + - * / % 说明(p14

16、) ()上述运算符均为双目运算符(即有两个操作数) ()“”“”作单目运算符时分别为正值、负值运算符。 ()在“”运算中,若操作数均为整数,则执行整 除运算,舍去小数部分。例如:1/2=0 1.0/2.0=0.5 ()“”要求两侧均为整数,“”运算不能用于 float 和 double 型数据 例如: 2,34,( 5 )没有乘方运算符,要计算a 要写作 a*a*a 的连乘 (6)双目运算符两边运算数的类型不一致时,要先进行转化再运算。见附录5(2.6.3中详解) (7)实数运算以双精度方式进行,若是单精度,在后面添0转化为双精度数。,3,35,算术运算符的优先级,例:若已定义int a=5,

17、b=1,c=2则下式 a*b/c-1.5/a的值是,2.5.2算术运算符的优先级、结合性、算术表达式,结合性 基本运算符从左向右 “+” 和“-” 从右向左,这些算式的值是多少? 1.0/2.0 5/3 5+1/2 (5+1)/2,36,算术表达式,算术表达式 是用算术运算符和括号将操作数连 接起来的,符合语法规则的式子。 运算对象:常量、变量和函数,例如:a + b + a*(b/c) +2.8,运算规则和要求 (1)表达式中,可使用多层括号,括号要配对, 运算时由内向外计算 (2)优先级不同时,则由高向低; 优先级相同时,则按结合方向,37,2.5.3强制类型转换,转换方式 (类型名)(表

18、达式),例如: (int)3.14 (float)(10%3),注意 1)(float) 22/5 与 (float) (22/5) 不同 2)在强制转换时,得到一个所需类型的中间变量, 原来变量的值未发生变化,(float)10%3,错误的类型转换: (int) b=a+5 b= int (3*a),38,2.6.1赋值运算符和赋值表达式,赋值运算符 形式:变量名=常量或表达式 作用:将右边常量或表达式的值赋给左边的变量 例如:a=3 b=c+d 优先级:只高于逗号运算符 结合方向:从右向左 读法:自右向左读 a=10 读作:把常量10赋给变量a b=a 读作:把a中的值赋给变量b 说明 (

19、1)内存中当前数据是最后一次所赋的那个数据。,39,(2)x=y的作用:将变量y里的内容赋给x所代表的 存储单元,x中原有的数据被替换,赋值后y中 的内容不变 (3)x=x的作用: 赋值号右边的x代表存储单元的值 赋值号左边的x代表以x为标识的存储单元 (4)n=n+1 使变量n中值加1后,再放入变量n (5)“=”左侧只能是变量。如a+b=c(F) (6)“=”右边可以是个赋值表达式。 如a=b=7+1(T) 但a=7+1=b(F) (7)赋值表达式的值就是最左边变量的值,40,2.6.2 复合赋值表达式,复合赋值运算符: 在赋值符“=”之前加上其它运算符 共有10种复合赋值运算符 += ,

20、=, ,&, =, |=,a+=3,x*=y+8,x%=3,优先级、结合方向:与赋值运算符相同,41,练习,1、有变量a,其值为9, 计算表达式a+=a-=a+a的值 2、写出顺序执行下列表达式运算后x的值: 1) x=a=b=10 2) x=25%(c=3) 3) x-=x+=x*=x,3、a=12,求a*=2+3,42,2.6.3 赋值运算中的类型转换,赋值过程中的类型转换规则: 使赋值号右边表达式值自动转换成其左边变量的类型,例 int i; i=2.56; /结果i=2;,例 float f; int i; i=10; f=i; 则 f=,引出问题: 如果在表达式 中各运算量类型不同

21、该如何判别最后值的 类型?,f=10.0,43,例 short ch; int i; float f; double d;,ch/i + f*d - (f+i),44,2.7自增、自减运算符+ 作用:使变量值加1或减1(常用于循环语句 种类: 前置 +i, - -i (先执行i+1或i-1,再使用i值) 后置 i+,i- - (先使用i值,再执行i+1或i-1),例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b;,/k=4,j=4,/k=3

22、,j=4,/4,j=4,/3,j=4,/c=20,a=4,/c=15,a=4,45,说明: + - 不能用于常量和表达式,如5+,(a+b)+ 优先级:- + - -* / % -+ - (2) (3) (4) + -结合方向: 自右向左,如i=3;-i+的值为-3,例 i=3; printf(“%d,%d”,+i,i); /4,3,例 i=3; printf(“%d,%d”, +i,i);,2.7自增、自减运算符+ 作用:使变量值加1或减1(常用于循环语句 种类: 前置 +i, - -i (先执行i+1或i-1,再使用i值) 后置 i+,i- - (先使用i值,再执行i+1或i-1),46,

23、2.7.2逗号运算符和表达式 形式:表达式1,表达式2,表达式n 作用:将两个表达式连接起来 结合性:从左向右 优先级: 最低 逗号表达式的值:等于表达式n的值 用途:常用于循环for语句中,例 a=3*5,a*4 a=3*5,a*4,a+5 例 x=(a=3,6*3) x=a=3,6*a 例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c);,/a=15,表达式值60,/a=15,表达式值20,/赋值表达式,表达式值18,x=18,/逗号表达式,表达式值18,x=3,/1,2,3,/3,2,3,47,4

24、.1.2 关系运算符和关系表达式(P35) 种类:= != 结合方向:自左向右 优先级别:,例 ca+b 相当于c(a+b) ab!=c 相当于(ab)!=c a=bc 相当于a=(bc),48,关系表达式和逻辑表达式都有值(逻辑值) 逻辑值有两个:“真”、“假” 用0表示“假”,非0表示“真” 对于任意一个表达式,其值为0代表“假”值,为非0(无论正数还是负数)代表“真”值,关系表达式及关系表达式的值,int a=3,b=2,c=1,d,f; ab (ab)=c b+cb f=abc,/表达式值1,/表达式值1,/表达式值0,/d=1,/f=0,49,关系运算注意:,例 若a=0; b=0.

25、5; x=0.3; 则 a=x=b的值为,0,例 5278在C中是允许的, 值为,0,例 int i=1, j=7,a; a=i+(j%4!=0); 则a=,2,例 a0 结果为 A100 结果为,1,0,50,关系运算注意:,例 注意区分“=”与“=” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);,例 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0=1.0 结果为,0,51,4.1.3逻辑运算符和逻辑表达式,逻辑运算符 ! (非) &(与) |(或) 逻辑运算符的运算规则

26、,C语言中, 运算对象: 0 表示“假”,非0表示“真” 运算结果: 0 表示“假”, 1 表示“真”,52,例 ab&xy a=b|x=y !a|ab,优先级:,结合方向:,/ (a=x) & (x=b),/(ab)&(xy),/(a=b)|(x=y),/(!a)|(ab),优先级:! 算 术运算符 关系运算符 & | 赋值运算符,高,低,53,逻辑表达式的运算结果或者为1(“真”)或者为0(“假”),优先级:,结合方向:,例 int a=4;b=5; !a a&b a|b !a|b 4&0|2 53&2|84-!0 c&d,值为1,值为0,值为1,值为1,值为1,值为1,/(53)&2|(

27、8(4-(!0) 值为1,54,注意:,对于0x10 数学上表示x小于10且大于0 C语言中,首先运算0x ,无论x为多少 其值为0或1,再运算010或110, 最后值为1 C语言中用0x &x10表示0x10,55,逻辑运算按照从左至右的顺序进行,一旦能够确定逻辑表达式的值,就立即结束运算 逻辑运算的短路性质 若:a=1,b=0,c=-2 a & b & c,(a+) | + b| -c,为 0,运算终止,表达式值为 0,为非0,运算终止,表达式值为 1 且a为2,b为0,c为-2 (b,c保持原值),例 a a+|b+,/结果m=0,n=1,/结果a=1,b=2,/结果a=1,b=3,56,关系与逻辑运算符的应用,表示数学公式abc 判断a, b, c三条线段能否组成一个三角形 a, b不同时为负,a+bc & a+cb & b+ca,(a=0)|(a=0&b=0&b=0) !(a=0 | b=0,ab & bc,

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

当前位置:首页 > 其他


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