工程类C语言程序设计优秀课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《工程类C语言程序设计优秀课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工程 语言程序设计 优秀 课件
- 资源描述:
-
1、2021/02/2512021/02/252&C语言的发展与特点&C语言的基本程序结构&C语言程序的开发过程&C语言的基本词法&算法2021/02/253l汇编语言依赖于计算机硬件,程序的可读性和可移植性差;l一般高级语言难以实现汇编语言的某些功能如对内存地址的操作、位操作等。2021/02/254l1960年 ALGOL 60;l1963年 英国剑桥大学提出CPL语言;l1967年 Matin Richards提出BCPL语言;l1970年 Ken Thompson提出B语言;l1972-1973 Dennis.M.Ritchie提出C语言;lBrian W.Kernighan 和D.M.R
2、itchie介绍标准C;l1987年美国国家标准化协会提出ANSI C。2021/02/255l简洁、紧凑,使用方便、灵活;l允许直接访问地址,能进行位操作;l运算符丰富;l数据类型丰富;l结构化程序语言,便于实现程序的模块化;l程序执行效率高,可移植性好。2021/02/256lC程序是由函数构成的,每个C程序有且只有一个主函数(main),可包含若干其他函数;l每个函数由首部与函数体组成;首部包括函数类型、函数名、函数参数(形参)、参数类型,int max(int x,int y)函数体包括声明部分和执行部分。2021/02/257lmain函数位置任意,但总是从main函数开始执行,在m
3、ain函数中结束;lC程序书写自由,每个语句后需加一个分号;l主函数可调用任何非主函数,非主函数之间可互相调用,但不能调用主函数;lC语言本身没有输入输出语句;l用/*/进行注释。2021/02/258l编辑l编译l链接 计算机只能识别和执行由0和1组成的二进制的指令,为了使计算机能执行高级语言源程序,必须先用“编译程序”把源程序翻译成二进制形式的“目标程序”,然后将该目标程序与系统的函数库和其他目标程序连接成为可执行的目标程序。2021/02/259l字符集:包括大小写英文字母52个、数字10个、键盘符号33个、转义字符。l标识符:是用户自定义的一组字符序列,用来表示程序中需要辨认的对象名称
4、,如符号常量、变量、数组、函数。规定:n 标识符是由字母或下划线开头的字母、数字、下划线组成的一串符号,最长不能超过32个字符;n大小写字母有区别,大写字母只用来定义宏名,其他都采用小写字母表示。2021/02/2510l保留字:32个,有特殊含义,主要用于构成语句,进行存储类型和数据类型的定义,不允许用户作为自定义标识符使用;l词类:常量、变量、运算符、函数、表达示、保留字;l语句:完成特定的操作,语句的有机组合序列完成指定的功能;2021/02/2511l赋值语句;l函数调用语句;l表达式语句;l流程控制语句;l复合语句;l空语句;2021/02/2512著名计算机科学家沃思提出公式:程序
5、=数据结构+算法v数据结构:对数据的描述即指定数据的类型和数据的组织形式;v算法:对操作的描述即操作步骤。2021/02/2513判定2000-2500年中的每一年是否闰年。设定y为被检测的年份。算法如下:lS1:2000=ylS2:若y不能被4整除,则输出y“不是闰年”,然后转至S6lS3:若y能被4整除,不能被100整除,则输出y“是闰年”,然后转至S6lS4:若y能被100整除,又能被400整除,输出y“是闰年”;否则输出y“不是闰年”,然后转至S6lS5:输出y“不是闰年”lS6:y+1=ylS7:当y2500,算法停止;2021/02/2514l有穷性;l确定性;l有零个或多个输入;
6、l有一个或多个输出;l有效性2021/02/2515l用流程图表示算法;l用伪代码表示算法;l用计算机语言表示算法。2021/02/2516&C语言的数据类型;&C语言的运算符与表达式;2021/02/2517数据类型数据类型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型(void)整型整型(int)字符型字符型(char)实型(浮点型)实型(浮点型)数组类型数组类型结构体类型结构体类型(struct)共用体类型(联合类型)共用体类型(联合类型)(union)枚举类型枚举类型单精度型单精度型(float)双精类型双精类型(double)2021/02/2518 在程序运行过程中,
7、其值不能被改变的量称为常量。C语言中规定的常量类型有以下五种:整型常量、实型常量、字符常量、字符串常量和符号常量。2021/02/2519 1.整型常量的表示方法:l十进制整数:无前缀,数码取值为09,如123,-456。l八进制整数:前缀为0,数码取值为07,如0123,-011。八进制数与十进制数的转换方法如下:(0123)8=1*82+2*81+3*80=64+16+3=(83)102021/02/2520l十六进制整数:前缀0X或0 x,数码取值为09,AF或af,如0 x2A,-0 x12。十六进制数与十进制数转换方法:(-0 x12)16=-(1*161+2*160)=-(16+2
8、)=(-18)102.整型常量的后缀:l加后缀L或l,表示长整型数。l加后缀u,表示无符号数。2021/02/2521n实型常量即实数又称为浮点数,C语言中实数只采用十进制,有两种表示形式:l小数形式:由数码09和小数点组成(注意必须有小数点),如.123,-123.4567;l指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数),如 -2.1e2,2.1e-2。2021/02/2522C语言中,字符常量是用单引号括起来的单个字符,如a,$等。转义字符是一种特殊形式的字符常量,它是以一个“”开头的字符序列。2021/02/2523字符形式含义n换行,将当前位置移到下一行开头t水
9、平制表(跳到下一个tab位置)b退格,将当前位置移到前一列r回车,将当前位置移到本行开头f换页,将当前位置移到下页开头反斜杠字符“”单引号字符”双引号字符ddd1到3位8进制数所代表的ASC字符xhh1到2位16进制数所代表的ASC 字符2021/02/2524main()printf(“abctderftgn”);printf(“htibbjk”);2021/02/2525 程序运行后在打印机上得到以下结果:fabcgdehjik 注意在显示屏上最后看到结果以与上述打印结果不同,是:fgdehjk2021/02/2526 C语言中,字符串变量是由一对双引号括起来的字符序列,如“China”,
10、“$3.232”。注意:不要将字符常量与字符串常量混淆。注意:不要将字符常量与字符串常量混淆。2021/02/2527l字符常量是由单引号括起来的,字符串常量是由双引号括起来的;l字符常量只能是单个字符,字符串常量则可是零个或多个字符;l可把一个字符常量赋予一个字符变量,但不能把一个字符串变量赋予一个字符变量,C语言中没有相应的字符串变量,可用字符数组来存放字符串常量;l字符常量占一个字节的内存,字符串常量占的内存字节数等于字符串中字节数加1,最后一个字节存放字符0作为字符串结束标志。2021/02/2528 C语言中,可用一个标识符来表示一个常量,称为符号常量又称为宏定义,使用前须先定义,其
11、定义规则为:#define 标识符 常量2021/02/2529#define PRICE 30main()int num,total;num=10;total=num*PRICE;printf(“total=%d”,total);使用符号常量的好处:使用符号常量的好处:含义清楚;含义清楚;在需要改变一个常量在需要改变一个常量时能做到时能做到“一改全改一改全改”;2021/02/2530 变量是指在程序运行中其值是变化的量。一个变量应该有一个变量名,在内存中占据一定的存储单元,在该存储单元中存放变量的值。3变量值变量值a变量名变量名存储单元存储单元图图2.12021/02/2531语言中,要求
12、对变量作强制定义,即“先定义,后使用”。l便于发现错误;l为每一个变量指定确定类型,在编译时就能为其分配相应的存储单元。2021/02/2532 整型数据在内存中是以二进制形式存放的。若定义了一个整型变量i:int i=10;图3.2(a)是数据存放的示意图,图3.2(b)是数据在内存中实际存放的情况;i10(a)i0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0(b)图图2.22021/02/2533 实际上,整型数值是以补码表示的。一个正数的补码与其原码相同,求负数的补码方法:将该数的绝对值的二进制形式按位取反再加1。例如求-10的补码:0 0 0 0 0 0 0 0 0 0
13、 0 0 1 0 1 01 1 1 1 1 1 1 1 1 1 1 1 0 1 0 11 1 1 1 1 1 1 1 1 1 1 1 0 1 1 010的原码的原码取反取反再加再加1得得-10的的补码补码2021/02/2534l有符号基本整型signed intl有符号短整型 signed short intl有符号长整型 signed long intl无符号基本型 unsigned intl无符号短整型 unsigned short intl无符号长整形 unsigned long int.整型变量的分类:2021/02/2535类型说明符数的取值范围字节数signed int-3276
14、832767 即-215(215-1)2unsigned int065535 即 0(216-1)2signed short int-3276832767 即-215(215-1)2unsigned short int065535 即 0(216-1)2signed long int-21474836482147483647 即-231(231-1)4unsigned long int04294967295 即 0(232-1)4表表2.1整型数据的所占的内存字节数与取值范围整型数据的所占的内存字节数与取值范围2021/02/2536 类型说明符 变量名标识符,变量名标识符,.;如:int a
15、,b,c;unsigned short x,y;2021/02/2537见教材P34例2.32021/02/2538l单精度型 float 占4个字节内存,提供7位有效数字,l双精度型 double 占8个字节内存,提供16位有效数字。整数没有误差,实数有精度,有误差,提供6位小数,7位有效数字。2021/02/2539格式和书写规则同整型变量说明相同,如:float s,t;double h,k;2021/02/2540main()float a,b;a=123456.789e5;b=a+20;printf(“%f,%f”,a,b);结果:结果:12345678848.000000,1234
16、5678848.0000002021/02/2541 b的理论值应是12345678920,而一个实型变量只能保证的有效数字是7位有效数字,后面的数字是无意义的,并不准确表示该数,从结果看出,把20加在后几位上,是无意义的,应当避免将一个很大的数与一个很小的数直接相加减,否则就会“丢失”小的数。与此类似,用程序计算1.0/3*3的结果并不等于1。2021/02/2542 字符变量用来存放字符常量,只能存放一个字符,占用1个字节内存。字符变量定义如下:char c1,c2;2021/02/2543 将一个字符常量放到一个字符变量中,不是把该字符本身放到内存单元中,而是将该字符的相应的ASC 代码
17、存放在存储单元中,如字符a的ASC 代码为97,b为98,9798c1c20 1 1 0 0 0 0 10 1 1 0 0 0 1 0c1c1图图2.32021/02/2544 在内存中,字符数据以ASC码存储,它的存储形式与整数存储形式类似,C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型量。在输出时,允许把字符变量按整型量输出,也允许把整型变量按字符型量输出。注意:当整形变量按字符型量处理时,只有低八位参与处理。2021/02/2545main()char c1,c2;c1=97;c2=98;printf(“%c,%cn”,c1,c2);printf(“%d,%dn”,c1,c2)
18、;结果:a,b97,982021/02/2546 Turbo C将字符变量中的最高位作为符号位,也就是将字符处理成带符号的整数,即signed char型。它的取值范围是-128127。如果使用ASC码为0127间的字符,由于字节中最高位为0,因此用%d输出时,输出一个正整数。如果使用ASC码为128255间的字符,由于在字节中最高位为1,用%d格式符输出时,就会得到一个负整数。例如:main()char c=130;printf(“%d”,c);得到-126。如果不想按有符号处理,可以将变量定义为unsigned char类型,这时其取值范围是0255。signed char和unsigne
19、d char 相仿,但它只有一个字节。2021/02/2547main()char c1=130;unsigned char c2=130;printf(“c1=%d,c2=%dn”,c1,c2);结果:结果:c1=-126,c2=1302021/02/2548 程序中常需要对一些变量预先设置初值。C语言允许在定义变量的同时使变量初始化,如int a=3;float f=3.56;char c=a;2021/02/2549 也可以使被定义的变量的一部分赋初值,如:int a,b,c=5;如果对几个变量赋予初值3,应写成int a=3,b=3,c=3;不能写成:int a=b=c=3;int a
20、=3;相当于:int a;a=3;2021/02/2550l运算符是一些特定的符号,它用来对数据进行某些特定的操作;l运算对象(操作数)是用来进行运算的数据,包括常量、变量等;l表达式是用运算符将运算对象连接起来的式子。如1+2,1和2为运算对象,而1+2就是表达式。2021/02/2551l算术运算符算术运算符 用于各类数值计算。运算符有:加(+)、减(-)、乘(*)、除(/)、求余(或称模运运算,%)、自增(+)、自减(-)。l关系运算符关系运算符 用于比较运算。运算符主要有:大于()、小于(=)、小于等于(=)和不等于(!=)。1.运算符的种类运算符的种类2021/02/2552l逻辑运
21、算符逻辑运算符 用于逻辑运算。运算符有:与(&)、或(|)、非(!)。l位操作运算符位操作运算符 参与运算的量,按二进制位进行运算。运算符有:按位与(&)、按位或(|)、取反()、按位异或()、左移()。l赋值运算符赋值运算符 用于赋值运算。赋值运算符有:简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)、复合位运算赋值(&=,|=,=,=)等三类。2021/02/2553l条件运算符条件运算符 是一个三目运算符,用于条件求值。运算符有:(?:)。l逗号运算符逗号运算符 用于把若干表达式组合成一个表达式。运算符有:(,)。l指针运算符指针运算符 用于取内容(*)和取地址(&)两种运算
22、。l求字节运算符求字节运算符 用于数据类型所占的字节数(sizeof)。2021/02/2554l强制类型转换运算符强制类型转换运算符 可以利用强制类型转换运算符将一个表 达式转换成所需类型。其一般形式为:(类型名)(表达式)如(double)a;(int)(x+y);(float)(5%3)l其他运算符其他运算符 其他运算符有:括号()、数组下标、成员运算符.和用指针访问结构体成员的指向运算符-。2021/02/2555 C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级低的进行运算。如求表达式x+y*z的值:y的值左侧为加号,右侧为乘号,而乘
23、号优先于加号,因此相当于x+(y*z),即先进行乘法运算,然后再进行加法运算。2021/02/2556 C语言的运算符不仅具有不同的优先级,还有结合性的问题。在表达式的运算过程中,各运算对象参与运算的先后顺序不仅要遵循运算符优先级别的规定,还要受运算符结合性的制约,当一个运算对象两侧的运算符优先级别相同时,需按运算符的结合性来处理,以便确定是自左向右进行运算还是自右向左进行运算。2021/02/2557 C语言中运算符的结合性分为两种:即左结合性(自左向右)和右结合性(自右向左)。例如:算术运算符就是左结合性的运算符算术运算符就是左结合性的运算符 表达式:x-y+z,运算对象y的左侧运算符“-
24、”和右侧运算符“+”优先级相同,应按结合性来进行自左向右的运算,即先执行x-y运算,再执行+z的运算。赋值运算符是右结合性的运算符赋值运算符是右结合性的运算符 表达式:x=y=z,由于赋值运算符“=”的右结合性,所以先执行y=z运算,再执行x=(y=z)运算。2021/02/2558优先级别运算符运算形式结合方向含义1().-(e)aex.yp-x自左至右圆括号数组下标运算符结构体成员运算符指向结构体成员运算符2-+-!(t)*&sizeof-e+x或x+!et(t)e*p&xsizeof(t)自右至左负号运算符自增运算符和自减运算符逻辑非运算符按位取反运算符强制类型转换运算符指针运算符,由地
25、址求内容求变量地址的运算符求某类型变量的长度运算符3*/%e1*e2自左至右乘、除、求余运算符表表2.2 C语言各运算符的优先级别与结合方向语言各运算符的优先级别与结合方向2021/02/25594+-e1+e2自左至右加法、减法运算符5e1e2自左至右左移、右移运算符6 =e1=单目单目运算符算术运算符算术运算符关系运算符运算符逻辑运算符逻辑运算符(不包括不包括!)条件运算符条件运算符赋值运算符赋值运算符逗号运算符逗号运算符 优先级别由上到下递减。优先级别由上到下递减。特殊运算符优先级最高,特殊运算符优先级最高,逗号运算符优先级最低。逗号运算符优先级最低。位运算符的优先级比较分位运算符的优先
展开阅读全文