选用教材 清华大学 C语言 谭浩强_课件_第1页
选用教材 清华大学 C语言 谭浩强_课件_第2页
选用教材 清华大学 C语言 谭浩强_课件_第3页
选用教材 清华大学 C语言 谭浩强_课件_第4页
选用教材 清华大学 C语言 谭浩强_课件_第5页
已阅读5页,还剩528页未读 继续免费阅读

下载本文档

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

文档简介

1、教材、参考书与课时安排 教材教材 c程序设计程序设计 (第二版)(第二版) 谭浩强编著谭浩强编著 清华大学出版社清华大学出版社 参考书参考书 c语言程序设计教程语言程序设计教程 谭浩强谭浩强 高等教育出版社高等教育出版社 c高级实用程序设计高级实用程序设计 王士元王士元 清华大学出版社清华大学出版社 c程序设计试题汇编程序设计试题汇编 谭浩强谭浩强 清华大学出版社清华大学出版社 课时安排课时安排 64学时学时 熟记熟记c语言的基本概念语言的基本概念 熟悉熟悉turbo c的上机操作环境的上机操作环境 会读、会编、会调试会读、会编、会调试c程序程序 学习要点 熟记熟记c语言的语法语言的语法 学会

2、算法分析与算法设计学会算法分析与算法设计 课程目的 课程要求 课前请做好预习课前请做好预习 保持课堂安静,头脑清醒,思维活跃保持课堂安静,头脑清醒,思维活跃 认真、独立、按时完成并提交作业认真、独立、按时完成并提交作业 重视上机实践,有效利用宝贵的上机时间重视上机实践,有效利用宝贵的上机时间 第1章 c语言概述 第2章 程序的灵魂算法 第3章 数据类型、运算符与表达式 第4章 最简单的c程序设计顺序程序设计 第5章 选择结构程序设计 第6章 循环控制 第7章 数组 第8章 函数 第9章 预处理命令 第10章 指针 第11章 结构体与共用体 第12章 位运算 第13章 文件 目 录 c语言发展历

3、史 c语言的特点 简单的c程序介绍 c程序的上机步骤 第1章 c语言概述 c语言程序设计 第一章第一章 c c语言概述语言概述 1.1 c语言发展历史语言发展历史 程序设计语言的发展程序设计语言的发展 机器语言 汇编语言 高级语言 面向过程 面向对象 cpu指令系统,由0、1序列构成的指令码组成 如:10000000 加 10010000 减 用助记符号描述的指令系统,可进行地址、位操作 如 add a, b 编写系统软件,直接对硬件操作,可读性,移植性差 面向机器的语言 c语言程序设计 第一章第一章 c c语言概述语言概述 可读性,移植性好,编写应用程序 一般较难实现汇编语言的某些功能 如:

4、地址和位的操作 c语言兼有高级和低级语言的功能 适合写系统软件和应用软件 又称中级语言 c语言发展过程语言发展过程 v产生背景产生背景 l algol 60cpl语言语言bcplb语言,写语言,写unix系统系统 v产生过程产生过程 l 时间时间:19721973 l 地点地点:美国贝尔实验室美国贝尔实验室 l 目的目的:unix操作系统操作系统 l 设计人设计人: ken.thompson和和dennis.m.ritchie vc标准标准 l 标准标准c: 1978年年 k int i; int a10; int f(); int *p; i+=2; i+, +i; begin end if

5、 (e) then s; var i :integer; var a:array1.10 of integer; function f():integer; var p: integer; i=i+2; i=i+1; 函数体、分程序、复合语句 条件语句 定义i为整形变量 定义a为一维数组 定义f为返回整形值函数; p为指向整形变量的指针变量; 赋值语句,使i+2赋给i i自增值1,i加1赋给i 34种运算符: 算术运算符:+ - * / % + - 关系运算符: = != 逻辑运算符:! c语言程序设计 第一章第一章 c c语言概述语言概述 注释 编译预处理 主函数 语句 输出: this i

6、s 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 the main program */ void main() int a,b,sum; /*定义变量*/ a=10; b=24; sum=add(a,b); printf(”sum= %dn,sum); /* this function ca

7、lculates the sum of x and y */ int add(int x,int y) int z; z=x+y; return(z); 运行结果: sum=34 函数 语句 预处理命令 注释 c语言程序设计 第一章第一章 c c语言概述语言概述 例例1.3 1.3 从键盘输入两个整数,输出其中较大的数从键盘输入两个整数,输出其中较大的数 #include void main() int max(int x,int y) int a,b,c; scanf(“%d,%d”, c=max(a,b); printf( max = %d,c); int max(int x,int y)

8、 int z; if(xy) z=x; else z=y; return(z); scanfscanf语句中“ sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(“%dn”,sum); 优秀程序员的素质之一: 使用tab缩进 对齐 有足够的注释 有合适的空行 c语言结构特点语言结构特点 v函数与主函数函数与主函数 l程序由一个或多个函数组成程序由一个或多个函数组成 l必须有且只能有一个主函数必须有且只能有一个主函数main(),可以放在程序中任一可以放在程序中任一 位置位置 l程序执行从程序执行从main开始,在开始,在main

9、中结束,其它函数通过嵌中结束,其它函数通过嵌 套调用得以执行。套调用得以执行。 v程序语句程序语句 lc程序由语句组成程序由语句组成 l用用“;”作为语句终止符作为语句终止符 v注释注释 l/* */为注释为注释,不能嵌套不能嵌套 l不产生编译代码不产生编译代码 例: /*this is the main /* of example1.1*/ */ 非法 v编译预处理命令编译预处理命令 c语言程序设计 第一章第一章 c c语言概述语言概述 编辑 链接 编译 执行 1.4 c程序的上机步骤 c程序开发步骤 开 始 编 辑 编 译 连 接 执 行 有错? 结果正确? 结 束 有 源程序 file.

10、c 目 标 程 序 file.obj 库函数和 其它目标 程序 可执行 目标程 序 无 正确 不正确 file.exe c语言程序设计 第一章第一章 c c语言概述语言概述 程序代码的录入, 生成源程序*.c 语法分析查错,翻译 生成目标程序*.obj 与其它目标程序或库 链接装配,生成可执行 程序*.exe 源程序目标程序可执行程序 内容程序设计语言机器语言机器语言 可执行不可以不可以可以 文件名后缀.c或.cpp.obj.exe turbo c集成开发环境集成开发环境 v配置要求配置要求 lunix,pc-dos,ms-dos,ucdos操作系统操作系统 l硬盘容量约硬盘容量约2m,448

11、k ram运行空间运行空间 v安装安装turbo c l创建子目录创建子目录 linstall l若不是可安装盘若不是可安装盘,将文件拷贝到对应的目录下将文件拷贝到对应的目录下 tc *.* includelib *.*sys *.* c语言程序设计 第一章第一章 c c语言概述语言概述 v进入进入turbo c ld:tctc.exe l主控菜单主控菜单 u文件操作文件操作file :new load save write to u编辑操作编辑操作edit:插入插入/修改修改 块块 查找查找/替换替换 u编译链接编译链接compile link make u执行执行run v退出退出turb

12、o c lalt +x lalt+f ,q v帮助帮助help lf1 lctrl+f1 c语言程序设计 第一章第一章 c c语言概述语言概述 基本操作: f10-调用主菜单 f2-存盘 f3-打开 f1-帮助信息 alt+f9-compile ctrl+f9-run alt+f5-user screen alt+x -退出tc v常用热键常用热键 文本编辑: -移动光标 pgup,pgdn-上下翻页 ctrl+pgup,ctrl+pgdn-文件首尾 home行首 end行尾 ddelete insert bkspace 块操作: ctrl+kb-块开始标记 ctrl+kk-块结束标记 ctr

13、l+kc-块拷贝 ctrl+kv-块移动 ctrl+ky-块删除 ctrl+kh-块隐藏 程序调试: f8-step over f7-trace into f4-goto cursor ctrl+f7-add watch ctrl+f8-toggle breakpoint ctrl+f2-program reset 窗口操作: f5-窗口缩放 f6-窗口切换 c语言程序设计 第一章第一章 c c语言概述语言概述 课后作业课后作业 预习预习“题解与上机指导题解与上机指导”一书中一书中 vp181199页的页的14.314.10节节 vp236页实验页实验1 教材教材p12: 1.5、 1.6、

14、1.7、 1.8题题。 注意:有关设计程序的作业,必须经过上机注意:有关设计程序的作业,必须经过上机 调试!调试! c语言程序设计 第一章第一章 c c语言概述语言概述 算法的概念 简单算法举例 算法的特性 怎样表示一个算法 第2章 程序的灵魂算法 c语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 结构化程序设计方法 c语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 程序包括的内容:程序包括的内容: v数据结构:数据的类型和组织形式数据结构:数据的类型和组织形式 v算法:操作步骤的描述算法:操作步骤的描述 nikiklaus wirth提出提出: 程序程序= = 数据结构数

15、据结构+ +算法算法 教材认为:教材认为: 程序程序 = =算法算法+ +数据结构数据结构+ +程序设计方法程序设计方法+ +语言工具和环境语言工具和环境 灵魂灵魂加工对象加工对象工具工具 c语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 2.1 算法的概念算法的概念 为解决一个问题而采取的方法和步骤,就成为解决一个问题而采取的方法和步骤,就成 为算法。例如:歌曲的乐谱,建造房子等。为算法。例如:歌曲的乐谱,建造房子等。 算法核心是解决算法核心是解决“做什么做什么”和和“怎么做怎么做”的的 问题。问题。 vp15页的例页的例2.1,求,求15之积。之积。 v可以有多种方法,一般采用简

16、单和运算步骤少可以有多种方法,一般采用简单和运算步骤少 的。的。准确、高效准确、高效 计算机算法类别计算机算法类别 v数值运算算法数值运算算法 v非数值运算算法非数值运算算法 c语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 2.2 简单算法举例简单算法举例 例例2.1 v方法方法1:累乘:累乘 v方法方法2:用循环结构解决,灵活、通用。:用循环结构解决,灵活、通用。 例例2.2 v通过循环选择打印通过循环选择打印 例例2.3 v判断闰年判断闰年 例例2.4 v累加求级数的和,循环改变正负号和分母加累加求级数的和,循环改变正负号和分母加1。 例例2.5 v判断素数判断素数 课后认真思

17、考,加 深什么是算法的概 念 c语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 2.3 算法的特性算法的特性 有穷性有穷性在合理范围内可完成在合理范围内可完成 确定性确定性无歧义性无歧义性 有零个或多个输入有零个或多个输入从外界得到信息从外界得到信息 有一个或多个输出有一个或多个输出问题的答案问题的答案 有效性有效性每步有确定的结果每步有确定的结果 c语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 2.4 怎样表示一个算法怎样表示一个算法 自然语言表示自然语言表示 v2.2节例。易懂,文字冗长,易歧义性节例。易懂,文字冗长,易歧义性 流程图表示流程图表示 v用流程图符号构成

18、,直观,易懂用流程图符号构成,直观,易懂 n-s流程图表示流程图表示 伪代码表示伪代码表示 计算机语言表示计算机语言表示 q 顺序结构 q 选择结构 q 循环结构 c语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 传统流程图流向混乱、可读性差,所以应该 采用结构化流程图。 结构化程序设计结构化程序设计 v 基本思想:任何程序都可以用三种基本结构表示,基本思想:任何程序都可以用三种基本结构表示, 限制使用无条件转移语句(限制使用无条件转移语句(goto) v 结构化程序:由三种基本结构反复嵌套构成的程序结构化程序:由三种基本结构反复嵌套构成的程序 v 优点:结构清晰,易读,提高程序设计

19、质量和效率优点:结构清晰,易读,提高程序设计质量和效率 三种基本结构三种基本结构 v 顺序结构顺序结构 a b a b 流程图n-s图 c语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 p ab 真假 p ba 真假 v选择结构选择结构 k a1a2aian k=k2 k=k1 k=kn k=ki . l二分支选择结构二分支选择结构 l多分支选择结构多分支选择结构 c语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 v循环结构循环结构 l当型循环结构当型循环结构 l直到型循环结构直到型循环结构 p a 假 真 当p为真 a a p 真 假 a 直到p为真 注:注:a,b,a1

20、.an可以是一个简可以是一个简 单语句,也可以是一个基本结构单语句,也可以是一个基本结构 c语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 三种基本结构的共同特点:三种基本结构的共同特点: v只有一个入口;只有一个入口; v只有一个出口;只有一个出口; v结构内的每一部分都有机会被执行到;结构内的每一部分都有机会被执行到; v结构内不存在结构内不存在“死循环死循环”。 c语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 2.5 结构化程序设计方法结构化程序设计方法 结构化程序:用三种基本结构组成的程序结构化程序:用三种基本结构组成的程序 基本设计思路:基本设计思路: v复杂问

21、题分解成复杂问题分解成 几个最基本问题,再分别处理。几个最基本问题,再分别处理。 采用的方法:采用的方法: v自顶向下;自顶向下; v逐步细化;逐步细化; v模块化设计:复杂问题按功能分成多个子模块模块化设计:复杂问题按功能分成多个子模块 v结构化编码:正确采用三种基本结构实现结构化编码:正确采用三种基本结构实现 c语言程序设计 第二章第二章 程序的灵魂程序的灵魂算法算法 课后作业课后作业 p36页习题:页习题: v2.4、2.8(结合实验指导读懂答案)(结合实验指导读懂答案) v用用n-s图表示图表示2.4题中题中 v用传统流程图求解以下问题:将一个用传统流程图求解以下问题:将一个16进制数

22、进制数 转化为转化为10进制数进制数 复习二进制的基本概念复习二进制的基本概念 v“计算机文化基础计算机文化基础”一书中一书中p2733页页 第3章 数据类型、运算符与表达式 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 c的数据类型 常量与变量 整型数据 实型数据 字符型数据 变量赋初值 各种数值型数据间的混合运算 算术运算符和算术表达式 赋值运算符和赋值表达式 逗号运算符和逗号表达式 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 3.1 c的数据类型的数据类型 c c 数数 据据 类类 型型 基本类型基本类型 构造类型构造类型 指针类型指针类型 空类型空类型 v

23、oid 字符型字符型 char 整整 型型 实实 型(浮点型)型(浮点型) 单精度型单精度型 float 双精度型双精度型 double 数组类型数组类型 结构体类型结构体类型 共用体类型共用体类型 短整型短整型 short 长整型长整型 long 整型整型 int 枚举类型枚举类型 enum 数据类型决定: 1. 数据占内存字节数 2. 数据取值范围 3. 可以进行的操作 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 常量和符号常量常量和符号常量 v定义:程序运行过程中,其值不能被改变的量(常数)定义:程序运行过程中,其值不能被改变的量(常数) v分类:直接常量、分类:直接常量

24、、符号常量符号常量 3.2 常量与变量常量与变量 类型示例 整型常量 12 、 0 、 -3 实型常量 4.6 、 -1.23 字符常量 a 、 b 符号常量 price 、 pai c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 l符号常量符号常量: :用用标识符标识符代表常量代表常量 u一般用大写字母:一般用大写字母: price 、 pi u定义格式:定义格式: #define 符号常量符号常量 常量常量 u其值在作用域内不能改变和再赋值。其值在作用域内不能改变和再赋值。 例例3.1 符号常量举例符号常量举例 #define price 30 #include void ma

25、in() int num,total; num=10; total=num*price; printf(total=%dn,total); total=300 运行结果: 符号常量的优点是: 见名知意、一改全见名知意、一改全 改改 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 变量变量 v 定义:其值可以改变的量。定义:其值可以改变的量。 v 定义格式:定义格式:数据类型数据类型 变量名;变量名; v 变量应该有名字,并在内存中占据一定的存储单元。变量应该有名字,并在内存中占据一定的存储单元。 v 变量名和变量值有不同的含义变量名和变量值有不同的含义 l变量名实为一个符号地址变量

26、名实为一个符号地址 a 3 例例 变量的使用变量的使用 main() int a; a=3; printf(“a=%d,a); 变量名 变量值 存储单元 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 标识符标识符 v定义:标识变量名、符号常量名、函数名、数组名、定义:标识变量名、符号常量名、函数名、数组名、 文件名的字符串序列文件名的字符串序列名字名字。 v命名规则:命名规则: l只能由只能由字母、数字、下划线字母、数字、下划线组成,且组成,且第一个字第一个字 符必须是字母或下划线符必须是字母或下划线 l大小写字母含义不同,一般用大小写字母含义不同,一般用小写小写 l不能使用不能

27、使用关键字关键字 ltc允许最长允许最长32个字符,建议长度不超过个字符,建议长度不超过8个字符个字符 v使用:使用:先定义、后使用先定义、后使用 标识符应该“见名知意见名知意”,如,如 total , maxtotal , max 标识符应该“不宜混淆不宜混淆”,如,如 l l与与1 , o1 , o与与0 0 这些标识符合法吗? 1a、m.d.john、¥123、#33、 tatol、int、max c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 3.3 整型数据 整型常量(整常数)的三种表示方法整型常量(整常数)的三种表示方法 v十进制整数:由数字十进制整数:由数字09和正负

28、号表示和正负号表示. . 如 123,-456,0 v八进制整数:由数字八进制整数:由数字0开头开头, ,后跟数字后跟数字07表示表示. . 如 0123,011 v十六进制整数:由十六进制整数:由0 x开头开头, ,后跟后跟09,af,af表示表示. . 如 0 x123,0 xff c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 补充知识:补充知识: 字节和位字节和位 v内存以字节为单元组成内存以字节为单元组成 v每个字节有一个地址每个字节有一个地址 v一个字节一般由一个字节一般由8个二进制位个二进制位 组成组成 v每个二进位的值是每个二进位的值是0或或1 01234567 0

29、 1 2 3 4 5 6 7 8 9 10 . 7 6 4 3 2 5 1 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 数值的表示方法数值的表示方法原码、反码和补码原码、反码和补码 v原码:最高位为符号位,其余各位为数值本身的绝对值原码:最高位为符号位,其余各位为数值本身的绝对值 v反码:反码: l正数:反码与原码相同正数:反码与原码相同 l负数:符号位为负数:符号位为1,其余位对原码取反,其余位对原码取反 v补码:补码: l正数:原码、反码、补码相同正数:原码、反码、补码相同 l负数:最高位为负数:最高位为1,其余位为原码取反,再对整个数加,其余位为原码取反,再对整个数加1

30、3 12 6 9 1 2 4 5 7 8 10 11 9-5=4 9+7=16=(14)12 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 原码反码补码 +7000001110000011100000111 -7100001111111100011111001 +0000000000000000000000000 -0100000001111111100000000 数的范围 01111111 11111111 (-127+127) 01111111 10000000 (-127+127) 01111111 10000000 (-128+127) (用一字节表示数) v负数补码转

31、换成十进制数:最高位不动,其余位取反加负数补码转换成十进制数:最高位不动,其余位取反加1 例 补码:11111001 取反:10000110 加1: 10000111=-7 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 整型变量整型变量 v整型数据在内存中的存放形式整型数据在内存中的存放形式 l数据在内存中以二进制补码形式存放数据在内存中以二进制补码形式存放 l每一个整型变量在内存中占每一个整型变量在内存中占2个字节个字节 10的原码的原码 反码反码 补码补码 -10的原码的原码 取绝对值取绝对值 反码反码 补码补码 00 00 00 00 00 00 10 10 00 00 0

32、0 00 00 00 10 10 00 00 00 00 00 00 10 10 10 00 00 00 00 00 10 10 00 00 00 00 00 00 10 10 11 11 11 11 11 11 01 01 11 11 11 11 11 11 01 10 整数的最左二进 制位是符号位, 0正、1负 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 v整型变量的分类整型变量的分类 l三类整型变量三类整型变量 有符号无符号 基本型(简称整型)int unsigned int 短整型short或short intunsigned short 长整型long或long in

33、tunsigned long l整数类型和取值范围整数类型和取值范围 turbo c 所占位数最小取值范围 int16-32768+32767 short16-32768+32767 long32 - 2147483648+2147 483647 unsigned int16065535 unsigned short16065535 unsigned long3204294967295 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 v整型变量的定义整型变量的定义 l先定义后使用先定义后使用强制类型定义强制类型定义 int a,b; ( 指定变量指定变量a、b为整型为整型 ) un

34、signed short c, d; (指定变量(指定变量c、d为无符号短整型为无符号短整型 ) long e,f; ( 指定变量指定变量e、f为长整型)为长整型) 00 00 00 00 00 00 11 01 00 00 00 00 00 00 00 0000 00 00 00 00 00 11 01 00 00 00 00 00 00 11 01 00 00 00 00 00 00 00 0000 00 00 00 00 00 11 01 00 00 00 00 00 00 11 01 00 00 00 00 00 00 11 01 int 型 short 型 long 型 unsign

35、ed int 型 unsigned int 型 unsigned 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=12; c语言程序设计 第三章第三章 程序的灵魂程序

36、的灵魂算法算法 v整型数据的溢出整型数据的溢出 l此情况称为此情况称为“溢出溢出”,运行时不报错,运行时不报错,编程时要注意编程时要注意 01 11 11 11 11 11 11 11 整型变量最大值32767 10 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 运行结果: 改为:long b; 结果是什么? c语言程序设计 第三章第三章 程序的灵

37、魂程序的灵魂算法算法 整型常量的类型整型常量的类型 v整型常量的值在整型常量的值在-32768+32767-32768+32767范围内,编译器认范围内,编译器认 为是为是intint类型类型 v整型常量的值超过上述范围,而在整型常量的值超过上述范围,而在2147483648 2147483648 +2147483647 +2147483647范围内,编译器认为是范围内,编译器认为是longlong类型类型 v当系统定义当系统定义short intshort int与与intint占内存长度相同,则占内存长度相同,则 两种类型常量均可以赋给两种类型常量均可以赋给 intint和和short i

38、ntshort int型变量型变量 v在整型常量后面加大写在整型常量后面加大写l l或小写或小写l l,则告诉编译器,则告诉编译器, 把该整型常量作为把该整型常量作为longlong类型处理。例:类型处理。例:123l123l、0l 0l v在整型常量后面加在整型常量后面加u u,则按无符号整型方式存放,则按无符号整型方式存放, 负数转换成补码再按无符号整型方式存放。负数转换成补码再按无符号整型方式存放。 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 3.4 浮点型数据浮点型数据 浮点型常量的表示方法浮点型常量的表示方法 v浮点数(浮点数(float)又称为实数()又称为实数(r

39、eal) 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是指数的输出形式是指数的输出形式 6.28e-2 表示 6.28 10 -2 -3.0824e4 表示 3.0824

40、10 4 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 浮点型变量浮点型变量 v浮点型数据在内存中的存放形式浮点型数据在内存中的存放形式 l浮点型数据在内存中占浮点型数据在内存中占4个字节(个字节(32位)位) l在内存中分成在内存中分成3部分,指数为部分,指数为2的幂次的幂次 + .314159 1 数符小数部分指数 v浮点型变量的分类浮点型变量的分类 单精度 单精度 floatfloat 32位 67 双精度双精度 doubledouble 型型6464位位1516 长双精度长双精度long doublelong double型型128128位位1819 类类 型型 位数 位

41、数有效数字有效数字 float x,y; (指定(指定x、y为单精度浮点型变量)为单精度浮点型变量) double z; (指定(指定z为双精度浮点型变量)为双精度浮点型变量) long double t; (指定(指定t t为长双精度浮点型变量)为长双精度浮点型变量) c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 v浮点型数据的舍入误差浮点型数据的舍入误差 l数据超过有效位数,则产生误差数据超过有效位数,则产生误差 l要避免一个很大的数与一个很小的数加减要避免一个很大的数与一个很小的数加减 例例3.4 浮点型数据的舍入误差浮点型数据的舍入误差 #include void mai

42、n( ) float a , b; a= 123456.789e5; b= a+20; printf(%f n,b); 舍入误差使舍入误差使1.0/3*3 的的 结果并不等于结果并不等于1 ! 12345678848.000000 运行结果: 浮点型常量的类型浮点型常量的类型 l浮点型常量一般按双精度浮点型常量一般按双精度64位处理,数后加位处理,数后加f或或f按单精度按单精度 l浮点型常量不分浮点型常量不分float和和double c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 3.5 字符型数据字符型数据 字符常量字符常量 v定义定义: :用用单引号单引号括起来的括起来的单个

43、单个字符字符或或转义字符转义字符 v字符常量的字符常量的值值:该字符的:该字符的ascii码码值值 v定义格式:定义格式:char 变量名变量名 = 值值 v转义字符转义字符: :反斜线后面跟一个字符或一个代码值表示反斜线后面跟一个字符或一个代码值表示 如 a a n t 如 a97 ,a65 n10, t9 char ch=65 与 char ch=a 与char=101是等效的 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 表表3.3 转义字符及其含义转义字符及其含义 转义字符含义 n v r a ddd t b f “ xhh 转义字符含义 换行 垂直制表 回车(不换行)

44、响铃 单引号 3位8进制数代表的字符 水平制表(右移8格) 退格 换页 反斜线 双引号 2位16进制数代表的字符 例例3.5 转义字符的使用转义字符的使用 #include void main( ) printf(“ ab ct derftgn”); printf(“htibbj k”); f gde h j k 显示结果:显示结果: 打印结果: fab gde h jik c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 字符变量字符变量 l存放字符常量,占用一个字节,存放存放字符常量,占用一个字节,存放一个一个字符字符 l定义形式:定义形式: 赋值:赋值: char c1,c2;

45、 c1=a;c2=b; 字符数据在内存中的存储形式及其使用方法字符数据在内存中的存储形式及其使用方法 l以二进制存放字符的以二进制存放字符的ascii码值(码值(0255整数)整数) l与整数的存储形式类似与整数的存储形式类似 v以字符或整数形式输出以字符或整数形式输出 例例3.6 向字符变量赋整数向字符变量赋整数 #include void main( ) char c1,c2 ; c1=97 ; c2=98 ; printf(“%c %c n,c1,c2); printf(“%d %d n,c1,c2); a b 97 98 运行结果:运行结果: 输出形式取决于printf函数中的格式符

46、格式符为“%c”时输出的变量值为字字 符符 格式符为“%d时输出的变量值为整整 数数 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 对字符数据进行算术运算对字符数据进行算术运算 l实质是对其实质是对其ascii值进行算术运算值进行算术运算 例例3.7 大小写字母的转换大小写字母的转换 #include void main( ) char c1,c2 ; c1=a ; c2=b ; c1=c1-32; c2=c2-32; printf(“%c %c ,c1,c2); a b运行结果:运行结果: 字符型与整型间互相赋值字符型与整型间互相赋值 例:例: 互相赋值互相赋值 #includ

47、e void main( ) int c1; char c2 ; c1=a ; c2=98 ; c1=c1-32; c2=c2-32; printf(“%c %c ,c1,c2); c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 字符串常量字符串常量 v定义:用双引号定义:用双引号(“ ”)括起来的字符序列括起来的字符序列 “how do you do” , “china” , “a” , “$123.45” v存储:存储:每个字符串尾每个字符串尾自动自动加一个加一个 0 作为字作为字 符串结束标志符串结束标志 h e l l o 0 例例 字符串字符串“hellohello”在内

48、存中在内存中 例例 空串空串 “”“” 0 v字符常量与字符串常量不同字符常量与字符串常量不同 a a 0例例 a“a” 例: char ch; ch=“a”; 例: char ch; ch=a; c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 3.6 变量赋初值变量赋初值 v变量的使用:变量的使用:先定义,后使用先定义,后使用 v变量定义位置:变量定义位置:一般一般放在函数开头放在函数开头 v变量初始化变量初始化: :可以在定义时赋初值可以在定义时赋初值 例: int a=1,b= -3,c; float data=3.67; char ch=a; int x=1,y=1,z=1

49、; int x=y=1;( ) 编译程序根据变量定义为其 分配指定字节的内存单元 . 地址 int a=1, b=-3,c; a b c 2字节 2字节 2字节 地址 地址 . 内存 1 -3 随机数 int a=b=c=3 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 3.7 各类数值型数据间的混合运算各类数值型数据间的混合运算 v整型、实型、字符型数据间可以混合运算整型、实型、字符型数据间可以混合运算 自动转换自动转换 v什么情况下发生什么情况下发生 l运算转换运算转换-不同类型数据混合运算时不同类型数据混合运算时 l赋值转换赋值转换-把一个值赋给与其类型不同的变量时把一个值

50、赋给与其类型不同的变量时 l输出转换输出转换-输出时转换成指定的输出格式输出时转换成指定的输出格式 l函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换 v运算转换规则运算转换规则: :不同类型数据运算时先不同类型数据运算时先自动自动转换转换 成同一类型成同一类型 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 doublefloat long unsigned intchar,short 低 高 说明说明: 必定的转换必定的转换 运算对象类型不同时转换运算对象类型不同时转换 例例 char ch; int i; float f; double d; c

51、h/i + f*d - (f+i) int int double double double double double double int int double double double double double double 10+a +i*f - d/l 例例 int i; float f; double d; long l; c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 强制转换(见强制转换(见p56p56强制类型转换运算符部分)强制类型转换运算符部分) v一般形式:一般形式:(类型名类型名)(表达式)表达式) 例:例:(int)(x+y)(int)(x+y) (i

52、nt)x+y (int)x+y (double)(3/2) (double)(3/2) (int)3.6 (int)3.6 v说明:强制转换得到说明:强制转换得到 所需类型的中间变量,所需类型的中间变量, 原变量类型不变原变量类型不变 例例3.8 #include main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); 结果:结果:x=3.600000,i=3 较高类型向较低类型转换时可能发生 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 3.8 算术算术运算符和算术表达式运算符和算术表达式 c 运 算 符

53、 算术运算符:(+ - * / % + -) 关系运算符:( = !=) 逻辑运算符:(! k=+j; j=3; k=+j; j=3; k=j+; j=3; k=j+; j=3; printf(j=3; printf(“%d%d”,+j); ,+j); j=3; printf(j=3; printf(“%d%d”,j+); ,j+); a=3;b=5;c=(+a)a=3;b=5;c=(+a)* *b; b; a=3;b=5;c=(a+)a=3;b=5;c=(a+)* *b; b; /k=4,j=4/k=4,j=4 /k=3,j=4/k=3,j=4 /4,j=4/4,j=4 /3,j=4/3,j

54、=4 /c=20,a=4/c=20,a=4 /c=15,a=4/c=15,a=4 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 l几点说明:几点说明: 例例 - -i+i+ i=3; printf( i=3; printf(“%d%d”,-i+);,-i+); -(i+) -(i+) /-3/-3 u+ - + - 不能用于常量和表达式不能用于常量和表达式, ,如如 5+5+,( (a+b)+a+b)+ u+ - + - 结合方向:结合方向: 自右向左自右向左 u优先级:优先级:- + - -* / % -+ - (2) (3) (4)(2) (3) (4) u该运算符常用于循环

55、语句中,使循环变量加减该运算符常用于循环语句中,使循环变量加减1 1 v有关表达式使用中的问题说明有关表达式使用中的问题说明 l不同系统对运算符和表达式的处理次序不同,尽可能不同系统对运算符和表达式的处理次序不同,尽可能 写通用性强的语句写通用性强的语句 l不要写有歧义和不知系统如何执行的程序不要写有歧义和不知系统如何执行的程序 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 3.9 赋值运算符和赋值表达式赋值运算符和赋值表达式 v简单赋值运算符简单赋值运算符 l符号:符号: = = l格式:格式: 变量标识符变量标识符= =表达式表达式 l作用:将一个数据(常量或表达式)赋给一个

56、变量作用:将一个数据(常量或表达式)赋给一个变量 l左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式 例 a=3; d=func(); c=d+2; 例 3=x-2*y; a+b=3; () c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 v赋值表达式赋值表达式 l形式:形式: l赋值表达式的值与变量值相等赋值表达式的值与变量值相等,且可嵌套且可嵌套 例: a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) /表达式值为5,a,b,c值为5 / b=5;a=5 /表达式值11,c=6,a=11 /表达式值

57、10,a=10,b=4,c=6 /表达式值5,a=5,b=10,c=2 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 3.10 逗号运算符和逗号表达式逗号运算符和逗号表达式 v形式:形式:表达式表达式1,表达式表达式2,表达式表达式n v结合性结合性:从左向右从左向右 v优先级优先级: 15,级别最低级别最低 v逗号表达式逗号表达式的值:等于表达式的值:等于表达式n的值的值 v用途:用途:常用于循环常用于循环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,%

58、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 c语言程序设计 第三章第三章 程序的灵魂程序的灵魂算法算法 例例: 逗号表达式使用逗号表达式使用 main() int x,y=7; float z=4; x=(y=y+6,y/z); printf(x=%dn,x); x=3 运行结果:运行结果: 本章的内容散乱而复杂,但却是 程序设计的基础,要认真看书,通过 编程序才可以深入理解。 c语言程序设计

59、第三章第三章 程序的灵魂程序的灵魂算法算法 课后作业课后作业 p6668页习题:页习题: v3.2, 3.5(思考)(思考) v3.3, 3.4, 3.9, 3.12(写出答案)(写出答案) v3.6, 3.10(上机验证)(上机验证) 上机:实验教材:实验上机:实验教材:实验2(做好上机准备)(做好上机准备) 预习第四、第五章预习第四、第五章 第4章 最简单的c程序设计 顺序程序设计 c语言程序设计 第四章第四章 顺序程序设计顺序程序设计 c语言概述 赋值语句 数据输入输出的概念及在c语言中的实现 字符数据的输入输出 格式输入与输出 顺序结构程序设计举例 4.1 c语句概述语句概述 c程序结

60、构:程序结构: v一个一个c c程序可以由多个源程序文件构成程序可以由多个源程序文件构成 v一个源程序文件由若干函数、预编译命令及全局变量声明部一个源程序文件由若干函数、预编译命令及全局变量声明部 分构成分构成 v函数包括数据定义部分和执行部分,执行部分是函数包括数据定义部分和执行部分,执行部分是c c语言语句,语言语句, 完成对数据的操作完成对数据的操作 c语言程序设计 第四章第四章 顺序程序设计顺序程序设计 源程序文件1 预处理命令全局变量声明 函数首部 局部变量声明执行语句 函数体 函数1函数n 源程序文件2源程序文件n c程序 c语句分为语句分为5类类 v控制语句:共控制语句:共9种种

温馨提示

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

评论

0/150

提交评论