《c语言程序设计第三版谭浩强完美.ppt》由会员分享,可在线阅读,更多相关《c语言程序设计第三版谭浩强完美.ppt(535页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、教材、参考书与课时安排教材教材C程序设计程序设计 (第二版)(第二版) 谭浩强编著谭浩强编著 清华大学出版社清华大学出版社参考书参考书C语言程序设计教程语言程序设计教程 谭浩强谭浩强 高等教育出版社高等教育出版社C高级实用程序设计高级实用程序设计 王士元王士元 清华大学出版社清华大学出版社C程序设计试题汇编程序设计试题汇编 谭浩强谭浩强 清华大学出版社清华大学出版社课时安排课时安排64学时(理解熟悉)学时(理解熟悉)熟记熟记C语言的基本概念语言的基本概念熟悉熟悉Turbo C的上机操作环境的上机操作环境会读、会编、会调试会读、会编、会调试C程序程序 学习要点 熟记熟记C语言的语法语言的语法 学
2、会算法分析与算法设计学会算法分析与算法设计课程目的课程目的课程要求课前请做好预习课前请做好预习保持课堂安静,头脑清醒,思维活跃保持课堂安静,头脑清醒,思维活跃认真、独立、按时完成并提交作业认真、独立、按时完成并提交作业重视上机实践,有效利用宝贵的上机时间重视上机实践,有效利用宝贵的上机时间 第第1章章 C语言概述语言概述第第2章章 程序的灵魂程序的灵魂算法算法第第3章章 数据类型、运算符与表达式数据类型、运算符与表达式第第4章章 最简单的最简单的C程序设计程序设计顺序顺序程序设计程序设计第第5章章 选择结构选择结构程序设计程序设计第第6章章 循环控制循环控制第第7章章 数组数组第第8章章 函数
3、函数第第9章章 预处理命令预处理命令第第10章章 指针指针第第11章章 结构体与共用体结构体与共用体第第12章章 位运算位运算第第13章章 文件文件目 录C语言发展历史语言发展历史C语言的特点语言的特点简单的简单的C程序介绍程序介绍C程序的上机步骤程序的上机步骤第1章 C语言概述 C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述1.1 C语言发展历史语言发展历史程序设计语言的发展程序设计语言的发展机器语言机器语言汇编语言汇编语言高级语言高级语言面向过程面向过程面向对象面向对象CPU指令系统,由指令系统,由0、1序列构成的指令码组成序列构成的指令码组成如:如:10000000
4、 加加 10010000 减减用助记符号描述的指令系统,可进行地址、位操作用助记符号描述的指令系统,可进行地址、位操作如如 ADD A, B编写系统软件,直接对硬件操作,可读性,移植性差编写系统软件,直接对硬件操作,可读性,移植性差面向机器的语言面向机器的语言 C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述可读性,移植性好,编写应用程序可读性,移植性好,编写应用程序一般较难实现汇编语言的某些功能一般较难实现汇编语言的某些功能如:地址和位的操作如:地址和位的操作C语言兼有高级和低级语言的功能语言兼有高级和低级语言的功能适合写系统软件和应用软件适合写系统软件和应用软件又称中级
5、语言又称中级语言C语言发展过程语言发展过程v产生背景产生背景l ALGOL 60CPL语言语言BCPLB语言,写语言,写UNIX系统系统v产生过程产生过程l 时间时间:19721973l 地点地点:美国贝尔实验室美国贝尔实验室l 目的目的:UNIX操作系统操作系统l 设计人设计人: Ken.Thompson和和Dennis.M.RitchievC标准标准l 标准标准C: 1978年年 K&R合著合著The C Programming Languagel ANSI C: 1983年年l 87 ANSI C: 1987年年l 1990年国际标准的年国际标准的ANSI C ,1994年再次修订。年再
6、次修订。vC版本版本lMicrosoft C 或称或称 MS-C lTurbo C 或称或称 TC C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述1.2 C语言的特点语言的特点语言简洁、紧凑、灵活语言简洁、紧凑、灵活运算符丰富运算符丰富数据结构、数据类型丰富数据结构、数据类型丰富v链表、树、栈链表、树、栈程序设计结构化、模块化程序设计结构化、模块化v结构化控制语句:结构化控制语句:ifelse、while、switch、forv函数作为模块单位函数作为模块单位语法不严格、程序设计自由度大语法不严格、程序设计自由度大可以访问内存地址、进行位运算可以访问内存地址、进行位运算生
7、成目标代码质量高生成目标代码质量高可移植性好可移植性好 C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述32个关键字个关键字:(auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef unsigned union voidvolatile whileTurbo C扩充了扩充了11个关键字:个关键字:asm_cs_ds_
8、es_sscdeclfarhugeinterruptnearpascal 注意:在注意:在C语言中,关键字都是小写的。语言中,关键字都是小写的。 C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述C语言简洁、紧凑,使用方便、灵活。语言简洁、紧凑,使用方便、灵活。ANSI C一共只有一共只有32个关键字,见个关键字,见365页页 附录附录B 9 9种控制语句种控制语句:if( )elsefor( )while( )dowhile( )continuebreakswitchgotoreturn C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述C语言有语言有 9
9、 种控制语种控制语句,程序书写形式自句,程序书写形式自由,主要用小写字母由,主要用小写字母表示,压缩了一切不表示,压缩了一切不必要的成分。必要的成分。 C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述表表1.1 C语言与语言与Pascal语言比较语言比较通过表通过表1.1 我们可以得出结论:我们可以得出结论:C比比 Pascal简练,因此源程序更短,编程效率高。简练,因此源程序更短,编程效率高。3434种运算符:种运算符:算术运算符:算术运算符:+ - + - * * / % + - / % + -关系运算符:关系运算符: = != = !=逻辑运算符:!逻辑运算符:! &
10、 |& |位运算符位运算符 : | & | &赋值运算符:赋值运算符:= = 及其扩展及其扩展条件运算符:条件运算符:?:?:逗号运算符:逗号运算符:, ,指针运算符:指针运算符:* * & &求字节数求字节数 :sizeofsizeof强制类型转换:强制类型转换:( (类型)类型)分量运算符:分量运算符:. -. -下标运算符:下标运算符:其它其它 :( ) -( ) -注意:各种运算符混合使用,其优先级与结注意:各种运算符混合使用,其优先级与结 合方法是难点,可先预习。合方法是难点,可先预习。 C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述C语言语言运算符丰富(附录运
11、算符丰富(附录C C)C C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void定义类型定义类型typedef数值类数值类型型字符类型字符类型char枚举类型枚举类型enum整整 型型浮点型浮点型单精度型单精度型float双精度型双精度型double短整型短整型short长整型长整型long整型整型int数组数组结构体结构体struct共用体共用体union C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述C语言语言数据结构丰富数据结构丰富 1.3 简单的简单的C程序介绍程序介绍/* example1.1 The first C Progra
12、m*/#include void main() printf(“This is a c program.n”); C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述注释注释编译预处理编译预处理主函数主函数语句语句输出:输出:This is a c program.例例1.1 1.1 第一个程序第一个程序This is a c program . printfprintf语句中的语句中的“nn”是是换行换行符符 例例1.21.2求求俩俩个个数数的的和和/* example1.1 calculate the sum of a and b*/#include /* This is
13、the main program */void main() int a,b,sum; /*定义变量定义变量*/ a=10; b=24; sum=add(a,b); printf(”sum= %dn,sum);/* This function calculates the sum of x and y */int add(int x,int y) int z; z=x+y; return(z);运行结果:运行结果:sum=34函数函数语句语句预处理命令预处理命令注释注释 C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述例例1.3 1.3 从键盘输入两个整数,输出其中较大的数
14、从键盘输入两个整数,输出其中较大的数#include void main() int max(int x,int y) int a,b,c; scanf(“%d,%d”,&a,&b); c=max(a,b); printf( max = %d,c);int max(int x,int y) int z; if(xy) z=x; else z=y; return(z);scanfscanf语句中语句中“&a”的的含义是含义是“取地址取地址”输入:输入:10,20 输出:输出:max = 20声明部分,定义变量声明部分,定义变量调用调用max函数,返回值赋给函数,返回值赋给c定义定义max子函数,
15、函数值子函数,函数值、形参、形参x、y为整型为整型通过通过max函数将函数将z值带回调用处值带回调用处C语言格式特点语言格式特点v习惯用习惯用小写小写字母,大小写敏感字母,大小写敏感v不使用行号,不使用行号,无程序行无程序行概念概念v可使用空行和空格可使用空行和空格v常用常用锯齿形锯齿形书写格式书写格式 C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述main( ) . . . . . . .main( ) int i , j , sum; sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum
16、);优秀程序员的素质之一优秀程序员的素质之一: 使用使用TAB缩进缩进 对齐对齐 有足够的注释有足够的注释 有合适的空行有合适的空行C语言结构特点语言结构特点v函数与主函数函数与主函数l程序由一个或多个函数组成程序由一个或多个函数组成l必须有且只能有一个主函数必须有且只能有一个主函数main(),可以放在程序中任一,可以放在程序中任一位置位置l程序执行从程序执行从main开始,在开始,在main中结束,其它函数通过嵌中结束,其它函数通过嵌套调用得以执行。套调用得以执行。v程序语句程序语句lC程序由语句组成程序由语句组成l用用“;”作为语句终止符作为语句终止符v注释注释l/* */为注释为注释,
17、不能嵌套不能嵌套l不产生编译代码不产生编译代码例:例: /*This is the main /* of example1.1*/ */ 非法非法v编译预处理命令编译预处理命令 C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述编辑编辑链接链接编译编译执行执行 1.4 C程序的上机步骤程序的上机步骤C程序开发步骤程序开发步骤 开 始 编 辑 编 译 连 接 执 行 有错?结果正确? 结 束有源程序 file.c目 标 程序file.obj库函数和其它目标程序可执行目标程序无正确不正确file.exe C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述程序代码
18、的录入程序代码的录入,生成源程序生成源程序*.c语法分析查错,翻译语法分析查错,翻译生成目标程序生成目标程序*.obj与其它目标程序或库与其它目标程序或库链接装配链接装配,生成可执行生成可执行程序程序*.exe源程序目标程序可执行程序内容程序设计语言机器语言机器语言可执行不可以不可以可以文件名后缀.c或.cpp.obj.exeTurbo C集成开发环境集成开发环境v配置要求配置要求lUNIX,PC-DOS,MS-DOS,UCDOS操作系统操作系统l硬盘容量约硬盘容量约2M,448K RAM运行空间运行空间v安装安装Turbo Cl创建子目录创建子目录lInstalll若不是可安装盘若不是可安装
19、盘,将文件拷贝到对应的目录下将文件拷贝到对应的目录下TC*.*INCLUDELIB*.*SYS*.* C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述v进入进入Turbo ClD:TCTC.exe l主控菜单主控菜单u文件操作文件操作FILE :New Load Save Write tou编辑操作编辑操作EDIT:插入插入/修改修改 块块 查找查找/替换替换u编译链接编译链接COMPILE LINK MAKEu执行执行RUNv退出退出Turbo ClAlt +xlAlt+F ,Qv帮助帮助HelplF1lCtrl+F1 C C语言程序设计语言程序设计 第一章第一章 C C
20、语言概述语言概述基本操作:基本操作:F10-调用主菜单调用主菜单F2-存盘存盘F3-打开打开F1-帮助信息帮助信息Alt+F9-CompileCtrl+F9-RunAlt+F5-User ScreenAlt+X -退出退出Tcv常用热键常用热键文本编辑:文本编辑:-移动光标移动光标PgUp,PgDn-PgUp,PgDn-上下翻页上下翻页Ctrl+PgUp,Ctrl+PgDn-Ctrl+PgUp,Ctrl+PgDn-文件首尾文件首尾HomeHome行首行首 EndEnd行尾行尾Ddelete Insert Ddelete Insert BkspaceBkspace块操作块操作:Ctrl+KB-块
21、开始标记块开始标记 Ctrl+KK-块结束标记块结束标记Ctrl+KC-块拷贝块拷贝 Ctrl+KV-块移动块移动Ctrl+KY-块删除块删除 Ctrl+KH-块隐藏块隐藏程序调试:程序调试:F8-Step over F7-Trace intoF4-Goto Cursor Ctrl+F7-Add WatchCtrl+F8-Toggle Breakpoint Ctrl+F2-Program Reset窗口操作:窗口操作:F5-窗口缩放窗口缩放F6-窗口切换窗口切换 C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述 课后作业课后作业预习预习“题解与上机指导题解与上机指导”一书中
22、一书中vP181199页的页的14.314.10节节vP236页实验页实验1教材教材P12: 1.5、 1.6、 1.7、 1.8题题。注意:有关设计程序的作业,必须经过上机注意:有关设计程序的作业,必须经过上机调试!调试! C C语言程序设计语言程序设计 第一章第一章 C C语言概述语言概述算法的概念算法的概念简单算法举例简单算法举例算法的特性算法的特性怎样表示一个算法怎样表示一个算法第2章 程序的灵魂算法 C C语言程序设计语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法结构化程序设计方法结构化程序设计方法 C C语言程序设计语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法
23、程序包括的内容:程序包括的内容:v数据结构:数据的类型和组织形式数据结构:数据的类型和组织形式v算法:操作步骤的描述算法:操作步骤的描述Nikiklaus Wirth提出提出: 程序程序= = 数据结构数据结构+ +算法算法教材认为:教材认为: 程序程序 = =算法算法+ +数据结构数据结构+ +程序设计方法程序设计方法+ +语言工具和环境语言工具和环境 灵魂灵魂加工对象加工对象工具工具 C C语言程序设计语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 2.1 算法的概念算法的概念为解决一个问题而采取的方法和步骤,就成为解决一个问题而采取的方法和步骤,就成为算法。例如:歌曲的乐谱,建
24、造房子等。为算法。例如:歌曲的乐谱,建造房子等。算法核心是解决算法核心是解决“做什么做什么”和和“怎么做怎么做”的的问题。问题。vP15页的例页的例2.1,求,求15之积。之积。v可以有多种方法,一般采用简单和运算步骤少可以有多种方法,一般采用简单和运算步骤少的。的。准确、高效准确、高效计算机算法类别计算机算法类别v数值运算算法数值运算算法v非数值运算算法非数值运算算法 C C语言程序设计语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 2.2 简单算法举例简单算法举例例例2.1v方法方法1:累乘:累乘v方法方法2:用循环结构解决,灵活、通用。:用循环结构解决,灵活、通用。例例2.2v
25、通过循环选择打印通过循环选择打印例例2.3v判断闰年判断闰年例例2.4v累加求级数的和,循环改变正负号和分母加累加求级数的和,循环改变正负号和分母加1。例例2.5v判断素数判断素数课后认真思考,加课后认真思考,加深什么是算法的概深什么是算法的概念念 C C语言程序设计语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 2.3 算法的特性算法的特性有穷性有穷性在合理范围内可完成在合理范围内可完成 确定性确定性无歧义性无歧义性 有零个或多个输入有零个或多个输入从外界得到信息从外界得到信息 有一个或多个输出有一个或多个输出问题的答案问题的答案 有效性有效性每步有确定的结果每步有确定的结果 C
26、C语言程序设计语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 2.4 怎样表示一个算法怎样表示一个算法自然语言表示自然语言表示v2.2节例。易懂,文字冗长,易歧义性节例。易懂,文字冗长,易歧义性流程图表示流程图表示v用流程图符号构成,直观,易懂用流程图符号构成,直观,易懂 N-S流程图表示流程图表示伪代码表示伪代码表示计算机语言表示计算机语言表示q 顺序结构顺序结构q 选择结构选择结构q 循环结构循环结构 C C语言程序设计语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 传统流程图流向混乱、可读性差,所以应该传统流程图流向混乱、可读性差,所以应该采用结构化流程图。采用结构化
27、流程图。 结构化程序设计结构化程序设计v 基本思想:任何程序都可以用三种基本结构表示,基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(限制使用无条件转移语句(goto)v 结构化程序:由三种基本结构反复嵌套构成的程序结构化程序:由三种基本结构反复嵌套构成的程序v 优点:结构清晰,易读,提高程序设计质量和效率优点:结构清晰,易读,提高程序设计质量和效率三种基本结构三种基本结构v 顺序结构顺序结构ABAB流程图流程图N-S图图 C C语言程序设计语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法PAB真真假假PBA真真假假v选择结构选择结构A1A2AiAnk=k2k=k1
28、k=knk=ki.l二分支选择结构二分支选择结构l多分支选择结构多分支选择结构 C C语言程序设计语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法v循环结构循环结构l当型循环结构当型循环结构l直到型循环结构直到型循环结构PA假假真真当当P为真为真AAP真真假假A直到直到P为真为真注:注:A,B,A1.An可以是一个简可以是一个简单语句,也可以是一个基本结构单语句,也可以是一个基本结构 C C语言程序设计语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 三种基本结构的共同特点:三种基本结构的共同特点: v只有一个入口;只有一个入口;v只有一个出口;只有一个出口;v结构内的每一部分
29、都有机会被执行到;结构内的每一部分都有机会被执行到;v结构内不存在结构内不存在“死循环死循环”。 C C语言程序设计语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 2.5 结构化程序设计方法结构化程序设计方法结构化程序:用三种基本结构组成的程序结构化程序:用三种基本结构组成的程序基本设计思路:基本设计思路:v复杂问题分解成复杂问题分解成 几个最基本问题,再分别处理。几个最基本问题,再分别处理。采用的方法:采用的方法:v自顶向下;自顶向下;v逐步细化;逐步细化;v模块化设计:复杂问题按功能分成多个子模块模块化设计:复杂问题按功能分成多个子模块v结构化编码:正确采用三种基本结构实现结构化
30、编码:正确采用三种基本结构实现 C C语言程序设计语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 课后作业课后作业P36页习题:页习题:v2.4、2.8(结合实验指导读懂答案)(结合实验指导读懂答案) v用用N-S图表示图表示2.4题中题中v用传统流程图求解以下问题:将一个用传统流程图求解以下问题:将一个16进制数进制数转化为转化为10进制数进制数 复习二进制的基本概念复习二进制的基本概念v“计算机文化基础计算机文化基础”一书中一书中P2733页页第3章 数据类型、运算符与表达式 C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法C的数据类型的数据类型常量与变
31、量常量与变量整型数据整型数据实型数据实型数据字符型数据字符型数据变量赋初值变量赋初值各种数值型数据间的混合运算各种数值型数据间的混合运算算术运算符和算术表达式算术运算符和算术表达式赋值运算符和赋值表达式赋值运算符和赋值表达式逗号运算符和逗号表达式逗号运算符和逗号表达式 C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 3.1 C的数据类型的数据类型C C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型 void字符型字符型 char整整 型型实实 型(浮点型)型(浮点型)单精度型单精度型 float双精度型双精度型 double数组类型数组
32、类型结构体类型结构体类型共用体类型共用体类型短整型短整型 short长整型长整型 long整型整型 int枚举类型枚举类型 enum数据类型决定:数据类型决定:1. 数据占内存字节数数据占内存字节数2. 数据取值范围数据取值范围3. 可以进行的操作可以进行的操作 C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法常量和符号常量常量和符号常量v定义:程序运行过程中,其值不能被改变的量(常数)定义:程序运行过程中,其值不能被改变的量(常数)v分类:直接常量、分类:直接常量、符号常量符号常量 3.2 常量与变量常量与变量 C C语言程序设计语言程序设计 第三章第三章 程序的灵
33、魂程序的灵魂算法算法l符号常量符号常量: :用用标识符标识符代表常量代表常量u一般用大写字母:一般用大写字母: PRICE 、 PIu定义格式:定义格式: #define 符号常量符号常量 常量常量u其值在作用域内不能改变和再赋值。其值在作用域内不能改变和再赋值。例例3.1 符号常量举例符号常量举例#define PRICE 30#include void main() int num,total; num=10; total=num*PRICE; printf(total=%dn,total);total=300运行结果:运行结果:符号常量的优点是:符号常量的优点是:见名知意、一改全见名知意
34、、一改全改改 C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法变量变量v 定义:其值可以改变的量。定义:其值可以改变的量。v 定义格式:定义格式:数据类型数据类型 变量名;变量名; v 变量应该有名字,并在内存中占据一定的存储单元。变量应该有名字,并在内存中占据一定的存储单元。 v 变量名和变量值有不同的含义变量名和变量值有不同的含义l变量名实为一个符号地址变量名实为一个符号地址 a3例例 变量的使用变量的使用main() int a; a=3; printf(“a=%d,a);变量名变量名变量值变量值存储单元存储单元 C C语言程序设计语言程序设计 第三章第三章 程
35、序的灵魂程序的灵魂算法算法标识符标识符v定义:标识变量名、符号常量名、函数名、数组名、定义:标识变量名、符号常量名、函数名、数组名、 文件名的字符串序列文件名的字符串序列名字名字。v命名规则:命名规则:l只能由只能由字母、数字、下划线字母、数字、下划线组成,且组成,且第一个字第一个字符必须是字母或下划线符必须是字母或下划线l大小写字母含义不同,一般用大小写字母含义不同,一般用小写小写l不能使用不能使用关键字关键字lTC允许最长允许最长32个字符,建议长度不超过个字符,建议长度不超过8个字符个字符v使用:使用:先定义、后使用先定义、后使用标识符应该标识符应该“见名知意见名知意”,如,如 tota
36、l , maxtotal , max标识符应该标识符应该“不宜混淆不宜混淆”,如,如 l l与与1 , O1 , O与与0 0这些标识符合法吗?这些标识符合法吗?1A、M.D.John、¥、¥123、#33、Tatol、int、max C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 3.3 整型数据整型数据整型常量(整常数)的三种表示方法整型常量(整常数)的三种表示方法v十进制整数:由数字十进制整数:由数字09和正负号表示和正负号表示. . 如如 123,-456,0123,-456,0v八进制整数:由数字八进制整数:由数字0开头开头, ,后跟数字后跟数字07表示表
37、示. . 如如 0 0123,123,0 01111v十六进制整数:由十六进制整数:由0 x开头开头, ,后跟后跟09,af,AF表示表示. . 如如 0 x0 x123,123,0 x0 xffff C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 补充知识:补充知识:字节和位字节和位v内存以字节为单元组成内存以字节为单元组成v每个字节有一个地址每个字节有一个地址v一个字节一般由一个字节一般由8个二进制位个二进制位组成组成v每个二进位的值是每个二进位的值是0或或101234567012345678910.7643251 C C语言程序设计语言程序设计 第三章第三章
38、程序的灵魂程序的灵魂算法算法数值的表示方法数值的表示方法原码、反码和补码原码、反码和补码v原码:最高位为符号位,其余各位为数值本身的绝对值原码:最高位为符号位,其余各位为数值本身的绝对值v反码:反码:l正数:反码与原码相同正数:反码与原码相同l负数:符号位为负数:符号位为1,其余位对原码取反,其余位对原码取反v补码:补码:l正数:原码、反码、补码相同正数:原码、反码、补码相同l负数:最高位为负数:最高位为1,其余位为原码取反,再对整个数加,其余位为原码取反,再对整个数加13126912457810119-5=49+7=16=(14)12 C C语言程序设计语言程序设计 第三章第三章 程序的灵魂
39、程序的灵魂算法算法原码原码反码反码补码补码+7000001110000011100000111-7100001111111100011111001+0000000000000000000000000-0100000001111111100000000数的范围数的范围0111111111111111(-127+127)0111111110000000(-127+127)0111111110000000(-128+127)(用一字节表示数)(用一字节表示数)v负数补码转换成十进制数:最高位不动,其余位取反加负数补码转换成十进制数:最高位不动,其余位取反加1例例 补码:补码:11111001 取反:
40、取反:10000110 加加1: 10000111=-7 C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法整型变量整型变量v整型数据在内存中的存放形式整型数据在内存中的存放形式l数据在内存中以二进制补码形式存放数据在内存中以二进制补码形式存放l每一个整型变量在内存中占每一个整型变量在内存中占2个字节个字节 10的原码的原码 反码反码 补码补码-10的原码的原码 取绝对值取绝对值 反码反码 补码补码00 00 00 00 00 00 10 1000 00 00 00 00 00 10 1000 00 00 00 00 00 10 1010 00 00 00 00 00
41、10 1000 00 00 00 00 00 10 1011 11 11 11 11 11 01 0111 11 11 11 11 11 01 10整数的最左二进整数的最左二进制位是符号位,制位是符号位,0正、正、1负负 C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法v整型变量的分类整型变量的分类l三类整型变量三类整型变量 有符号有符号无符号无符号基本型(简称整型)基本型(简称整型)int unsigned int短整型短整型short或或short int unsigned short长整型长整型long或或long intunsigned longl整数类型和取
42、值范围整数类型和取值范围TURBO C所占位数所占位数最小取值范围最小取值范围int16-32768+32767short16-32768+32767long32-2147483648+2147483647unsigned int16065535unsigned short16065535unsigned long3204294967295 C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法v整型变量的定义整型变量的定义l先定义后使用先定义后使用强制类型定义强制类型定义int a,b; ( 指定变量指定变量a、b为整型为整型 )unsigned short c, d;
43、(指定变量(指定变量c、d为无符号短整型为无符号短整型 )long e,f; ( 指定变量指定变量e、f为长整型)为长整型) 00 00 00 00 00 00 11 0100 00 00 00 00 00 00 0000 00 00 00 00 00 11 0100 00 00 00 00 00 11 0100 00 00 00 00 00 00 0000 00 00 00 00 00 11 0100 00 00 00 00 00 11 0100 00 00 00 00 00 11 01int 型型short 型型long 型型unsigned int 型型unsigned int 型型un
44、signed long 型型符号位符号位例例3.2 整型变量的定义与使用整型变量的定义与使用 #include void main()int a,b,c,d; unsigned u ; a=12;b=-24;u=10; c=a+u;d=b+u; printf(“a+u=%d,b+u=%dn,c,d); 指定指定abcd为整型变量为整型变量指定指定u为无符号整型变量为无符号整型变量定义放在函数开定义放在函数开头的声明部分头的声明部分作用域作用域不同类型混合运算,不同类型混合运算,类型自动转换类型自动转换结果:结果:a+u=22,b+u= -14定义与赋值同时进行:定义与赋值同时进行:int a=
45、12; C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法v整型数据的溢出整型数据的溢出l此情况称为此情况称为“溢出溢出”,运行时不报错,运行时不报错,编程时要注意编程时要注意01 11 11 11 11 11 11 11整型变量最大值整型变量最大值3276710 00 00 00 00 00 00 00加加1后是后是 32768的补码形式的补码形式例例3.3 整型数据的溢出整型数据的溢出 #include void main( ) int a , b; a= 32767; b= a+1; printf(%d , %d n ,a,b); 32767 , -32768 运
46、行结果:运行结果:改为:改为:long b;结果是什么?结果是什么? C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法整型常量的类型整型常量的类型v整型常量的值在整型常量的值在-32768+32767-32768+32767范围内,编译器认范围内,编译器认为是为是intint类型类型 v整型常量的值超过上述范围,而在整型常量的值超过上述范围,而在2147483648 2147483648 +2147483647 +2147483647范围内,编译器认为是范围内,编译器认为是longlong类型类型v当系统定义当系统定义short short intint与与intin
47、t占内存长度相同,则占内存长度相同,则两种类型常量均可以赋给两种类型常量均可以赋给 intint和和short short intint型变量型变量v在整型常量后面加大写在整型常量后面加大写L L或小写或小写l l,则告诉编译器,则告诉编译器,把该整型常量作为把该整型常量作为longlong类型处理。例:类型处理。例:123L123L、0L 0L v在整型常量后面加在整型常量后面加u u,则按无符号整型方式存放,则按无符号整型方式存放,负数转换成补码再按无符号整型方式存放。负数转换成补码再按无符号整型方式存放。 C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 3.4
48、 浮点型数据浮点型数据浮点型常量的表示方法浮点型常量的表示方法v浮点数(浮点数(float)又称为实数()又称为实数(real)v两种表示方法:两种表示方法:l十进制小数形式:十进制小数形式:必须有小数点必须有小数点 如如 0.123 、.123 、123.0 、0.0 、123.l 指数形式:指数形式:e或或E之前之前后后必须有数字;指数必须为整数必须有数字;指数必须为整数 如如 123.456e0、12.3456e1 、1.23456e2 、 0.123456e3 、0.0123456e4 等等v规范化指数形式规范化指数形式l只有一位非零整数的指数形式只有一位非零整数的指数形式l是指数的输
49、出形式是指数的输出形式6.28e-2 表示表示 6.28 10 -2-3.0824e4 表示表示 3.0824 10 4 C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法浮点型变量浮点型变量v浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式l浮点型数据在内存中占浮点型数据在内存中占4个字节(个字节(32位)位)l在内存中分成在内存中分成3部分,指数为部分,指数为2的幂次的幂次 + .314159 1数符数符小数部分小数部分指数指数v浮点型变量的分类浮点型变量的分类 单精度单精度 floatfloat 32位位67双精度双精度 doubledouble 型型64
50、64位位1516长双精度长双精度long doublelong double型型128128位位1819类类 型型 位数位数有效数字有效数字float x,y; (指定(指定x、y为单精度浮点型变量)为单精度浮点型变量)double z; (指定(指定z为双精度浮点型变量)为双精度浮点型变量)long double t; (指定(指定t t为长双精度浮点型变量)为长双精度浮点型变量) C C语言程序设计语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法v浮点型数据的舍入误差浮点型数据的舍入误差l数据超过有效位数,则产生误差数据超过有效位数,则产生误差l要避免一个很大的数与一个很小的数加减