C语言程序设计(第五版)-谭浩强.ppt

上传人:xt****7 文档编号:17047454 上传时间:2020-11-07 格式:PPT 页数:533 大小:11.15MB
收藏 版权申诉 举报 下载
C语言程序设计(第五版)-谭浩强.ppt_第1页
第1页 / 共533页
C语言程序设计(第五版)-谭浩强.ppt_第2页
第2页 / 共533页
C语言程序设计(第五版)-谭浩强.ppt_第3页
第3页 / 共533页
资源描述:

《C语言程序设计(第五版)-谭浩强.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计(第五版)-谭浩强.ppt(533页珍藏版)》请在装配图网上搜索。

1、教材、参考书与课时安排 教材 C程序设计 (第二版) 谭浩强编著 清华大学出版社 参考书 C语言程序设计教程 谭浩强 高等教育出版社 C高级实用程序设计 王士元 清华大学出版社 C程序设计试题汇编 谭浩强 清华大学出版社 课时安排 64学时 熟记 C语言的基本概念 熟悉 Turbo C的上机操作环境 会读、会编、会调试 C程序 学习要点 熟记 C语言的语法 学会算法分析与算法设计 课程目的 课程要求 课前请做好预习 保持课堂安静,头脑清醒,思维活跃 认真、独立、按时完成并提交作业 重视上机实践,有效利用宝贵的上机时间 第 1章 C语言概述 第 2章 程序的灵魂 算法 第 3章 数据类型、运算符

2、与表达式 第 4章 最简单的 C程序设计 顺序 程序设计 第 5章 选择结构 程序设计 第 6章 循环控制 第 7章 数组 第 8章 函数 第 9章 预处理命令 第 10章 指针 第 11章 结构体与共用体 第 12章 位运算 第 13章 文件 目 录 C语言发展历史 C语言的特点 简单的 C程序介绍 C程序的上机步骤 第 1章 C语言概述 C语言程序设计 第一章 C语言概述 1.1 C语言发展历史 程序设计语言的发展 机 器 语 言 汇 编 语 言 高 级 语 言 面向过程 面向对象 CPU指令系统,由 0、 1序列构成的指令码组成 如: 10000000 加 10010000 减 用助记符

3、号描述的指令系统,可进行地址、位操作 如 ADD A, B 编写系统软件,直接对硬件操作,可读性,移植性差 面向机器的语言 C语言程序设计 第一章 C语言概述 可读性,移植性好,编写应用程序 一般较难实现汇编语言的某些功能 如:地址和位的操作 C语言兼有高级和低级语言的功能 适合写系统软件和应用软件 又称中级语言 C语言发展过程 产生背景 ALGOL 60CPL 语言 BCPLB 语言,写 UNIX系统 产生过程 时间 :19721973 地点 :美国贝尔实验室 目的 :UNIX操作系统 设计人 : Ken.Thompson和 Dennis.M.Ritchie C标准 标准 C: 1978年

4、K int i; int a10; int f(); int *p; i+=2; i+, +I; BEGIN END IF (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种运算符: 算术运算符: + - * / % + -

5、关系运算符: = != 逻辑运算符:! C语言程序设计 第一章 C语言概述 注释 编译预处理 主函数 语句 输出: This is a c program. 例 1.1 第一个程序 This is a c program . printf语句中的 “ n是 换行 符 例 1.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); pr

6、intf(”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语言概述 例 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

7、 x,int y) int z; if(xy) z=x; else z=y; return(z); scanf语句中 “ sum=0; for(i=1; i10;i+) for(j=1;j10;j+) sum+=i*j ; printf(%dn,sum); 优秀程序员的素质之一 : 使用 TAB缩进 对齐 有足够的注释 有合适的空行 C语言结构特点 函数与主函数 程序由一个或多个函数组成 必须有且只能有一个主函数 main(), 可以放在程序中任一 位臵 程序执行从 main开始,在 main中结束,其它函数通过嵌 套调用得以执行。 程序语句 C程序由语句组成 用 ;作为语句终止符 注释 /*

8、 */为注释 ,不能嵌套 不产生编译代码 例: /*This is the main /* of example1.1*/ */ 非法 编译预处理命令 C语言程序设计 第一章 C语言概述 编辑 链接 编译 执行 1.4 C程序的上机步骤 C程序开发步骤 开 始 编 辑 编 译 连 接 执 行 有错? 结果正确? 结 束 有 源程序 f i l e .c 目标程 序 f i l e . obj 库函数和 其它目标 程序 可执行 目标程 序 无 正确 不正确 file.exe C语言程序设计 第一章 C语言概述 程序代码的录入 , 生成源程序 *.c 语法分析查错,翻译 生成目标程序 *.obj

9、与其它目标程序或库 链接装配 ,生成可执行 程序 *.exe 源程序 目标程序 可执行程序 内容 程序设计语言 机器语言 机器语言 可执行 不可以 不可以 可以 文件名后缀 .c 或 . c p p . o b j . e x e Turbo C集成开发环境 配臵要求 UNIX,PC-DOS,MS-DOS,UCDOS操作系统 硬盘容量约 2M, 448K RAM运行空间 安装 Turbo C 创建子目录 Install 若不是可安装盘 ,将文件拷贝到对应的目录下 TC *.* INCLUDE LIB *.* SYS *.* C语言程序设计 第一章 C语言概述 进入 Turbo C D:TCTC

10、.exe 主控菜单 文件操作 FILE :New Load Save Write to 编辑操作 EDIT:插入 /修改 块 查找 /替换 编译链接 COMPILE LINK MAKE 执行 RUN 退出 Turbo C Alt +x Alt+F ,Q 帮助 Help F1 Ctrl+F1 C语言程序设计 第一章 C语言概述 基本操作: F10-调用主菜单 F2-存盘 F3-打开 F1-帮助信息 Alt+F9-Compile Ctrl+F9-Run Alt+F5-User Screen Alt+X -退出 Tc 常用热键 文本编辑: -移动光标 PgUp,PgDn-上下翻页 Ctrl+PgUp

11、,Ctrl+PgDn-文件首尾 Home行 首 End行 尾 Ddelete Insert Bkspace 块操作 : Ctrl+KB-块开始标记 Ctrl+KK-块结束标记 Ctrl+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语言概述 课后作业 预习题解与

12、上机指导一书中 P181199页的 14.314.10节 P236页实验 1 教材 P12: 1.5、 1.6、 1.7、 1.8题 。 注意:有关设计程序的作业,必须经过上机 调试! C语言程序设计 第一章 C语言概述 算法的概念 简单算法举例 算法的特性 怎样表示一个算法 第 2章 程序的灵魂 算法 C语言程序设计 第二章 程序的灵魂 算法 结构化程序设计方法 C语言程序设计 第二章 程序的灵魂 算法 程序包括的内容: 数据结构:数据的类型和组织形式 算法:操作步骤的描述 Nikiklaus Wirth提出 : 程序 = 数据结构 +算法 教材认为: 程序 =算法 +数据结构 +程序设计方

13、法 +语言工具和环境 灵魂 加工对象 工具 C语言程序设计 第二章 程序的灵魂 算法 2.1 算法的概念 为解决一个问题而采取的方法和步骤,就成 为算法。例如:歌曲的乐谱,建造房子等。 算法核心是解决做什么和怎么做的 问题。 P15页的例 2.1,求 15 之积。 可以有多种方法,一般采用简单和运算步骤少 的。 准确、高效 计算机算法类别 数值运算算法 非数值运算算法 C语言程序设计 第二章 程序的灵魂 算法 2.2 简单算法举例 例 2.1 方法 1:累乘 方法 2:用循环结构解决,灵活、通用。 例 2.2 通过循环选择打印 例 2.3 判断闰年 例 2.4 累加求级数的和,循环改变正负号和

14、分母加 1。 例 2.5 判断素数 课后认真思考,加 深什么是算法的概 念 C语言程序设计 第二章 程序的灵魂 算法 2.3 算法的特性 有穷性 在合理范围内可完成 确定性 无歧义性 有零个或多个输入 从外界得到信息 有一个或多个输出 问题的答案 有效性 每步有确定的结果 C语言程序设计 第二章 程序的灵魂 算法 2.4 怎样表示一个算法 自然语言表示 2.2节例。易懂,文字冗长,易歧义性 流程图表示 用流程图符号构成,直观,易懂 N-S流程图表示 伪代码表示 计算机语言表示 顺序结构 选择结构 循环结构 C语言程序设计 第二章 程序的灵魂 算法 传统流程图流向混乱、可读性差,所以应该 采用结

15、构化流程图。 结构化程序设计 基本思想:任何程序都可以用三种基本结构表示, 限制使用无条件转移语句( goto) 结构化程序:由三种基本结构反复嵌套构成的程序 优点:结构清晰,易读,提高程序设计质量和效率 三种基本结构 顺序结构 A B A B 流程图 N-S图 C语言程序设计 第二章 程序的灵魂 算法 P A B 真 假 P B A 真 假 选择结构 k A1 A2 Ai An k=k2 k=k1 k=kn k=ki . . 二分支选择结构 多分支选择结构 C语言程序设计 第二章 程序的灵魂 算法 循环结构 当型循环结构 直到型循环结构 P A 假 真 当 P为真 A A P 真 假 A 直

16、到 P为真 注: A,B,A1.An 可以是一个简 单语句,也可以是一个基本结构 C语言程序设计 第二章 程序的灵魂 算法 三种基本结构的共同特点: 只有一个入口; 只有一个出口; 结构内的每一部分都有机会被执行到; 结构内不存在死循环。 C语言程序设计 第二章 程序的灵魂 算法 2.5 结构化程序设计方法 结构化程序:用三种基本结构组成的程序 基本设计思路: 复杂问题分解成 几个最基本问题,再分别处理。 采用的方法: 自顶向下; 逐步细化; 模块化设计:复杂问题按功能分成多个子模块 结构化编码:正确采用三种基本结构实现 C语言程序设计 第二章 程序的灵魂 算法 课后作业 P36页习题: 2.

17、4、 2.8(结合实验指导读懂答案) 用 N-S图表示 2.4题中 用传统流程图求解以下问题:将一个 16进制数 转化为 10进制数 复习二进制的基本概念 计算机文化基础一书中 P2733页 第 3章 数据类型、运算符与表达式 C语言程序设计 第三章 程序的灵魂 算法 C的数据类型 常量与变量 整型数据 实型数据 字符型数据 变量赋初值 各种数值型数据间的混合运算 算术运算符和算术表达式 赋值运算符和赋值表达式 逗号运算符和逗号表达式 C语言程序设计 第三章 程序的灵魂 算法 3.1 C的数据类型 C 数 据 类 型 基本类型 构造类型 指针类型 空类型 void 字符型 char 整 型 实

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

19、标识符 代表常量 一般用大写字母: PRICE 、 PI 定义格式: #define 符号常量 常量 其值在作用域内不能改变和再赋值。 例 3.1 符号常量举例 #define PRICE 30 #include void main() int num,total; num=10; total=num*PRICE; printf(total=%dn,total); total=300 运行结果: 符号常量的优点是: 见名知意、一改全 改 C语言程序设计 第三章 程序的灵魂 算法 变量 定义:其值可以改变的量。 定义格式: 数据类型 变量名; 变量应该有名字,并在内存中占据一定的存储单元。 变量

20、名和变量值有不同的含义 变量名实为一个符号地址 a 3 例 变量的使用 main() int a; a=3; printf(a=%d,a); 变量名 变量值 存储单元 C语言程序设计 第三章 程序的灵魂 算法 标识符 定义:标识变量名、符号常量名、函数名、数组名、 文件名的字符串序列 名字 。 命名规则: 只能由 字母、数字、下划线 组成,且 第一个字 符必须是字母或下划线 大小写字母含义不同,一般用 小写 不能使用 关键字 TC允许最长 32个字符,建议长度不超过 8个字符 使用: 先定义、后使用 标识符应该 “ 见名知意 ” ,如 total , max 标识符应该 “ 不宜混淆 ” ,如

21、 l与 1 , O与 0 这些标识符合法吗? 1A、 M.D.John、¥ 123、 #33、 Tatol、 int、 max C语言程序设计 第三章 程序的灵魂 算法 3.3 整型数据 整型常量(整常数)的三种表示方法 十进制整数:由数字 09和正负号表示 . 如 123,-456,0 八进制整数:由数字 0开头 ,后跟数字 07表示 . 如 0123,011 十六进制整数:由 0 x开头 ,后跟 09,af,AF表示 . 如 0 x123,0 xff C语言程序设计 第三章 程序的灵魂 算法 补充知识: 字节和位 内存以字节为单元组成 每个字节有一个地址 一个字节一般由 8个二进制位 组成

22、 每个二进位的值是 0或 1 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 9 10 . 7 6 4 3 2 5 1 C语言程序设计 第三章 程序的灵魂 算法 数值的表示方法 原码、反码和补码 原码:最高位为符号位,其余各位为数值本身的绝对值 反码: 正数:反码与原码相同 负数:符号位为 1,其余位对原码取反 补码: 正数:原码、反码、补码相同 负数:最高位为 1,其余位为原码取反,再对整个数加 1 3 12 6 9 1 2 4 5 7 8 10 11 9-5=4 9+7=16=(14)12 C语言程序设计 第三章 程序的灵魂 算法 原码 反码 补码 +7 0000011

23、1 00000111 00000111 -7 10000111 11111000 11111001 +0 00000000 00000000 00000000 -0 10000000 11111111 00000000 数的范围 01111111 11111111 (-127+127) 01111111 10000000 (-127+127) 01111111 10000000 (-128+127) (用一字节表示数) 负数补码转换成十进制数:最高位不动,其余位取反加 1 例 补码: 11111001 取反: 10000110 加 1: 10000111=-7 C语言程序设计 第三章 程序的灵

24、魂 算法 整型变量 整型数据在内存中的存放形式 数据在内存中以二进制补码形式存放 每一个整型变量在内存中占 2个字节 10的原码 反码 补码 -10的原码 取绝对值 反码 补码 00 00 00 00 00 00 10 10 00 00 00 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语言程序设计 第三章 程序的灵魂 算法

25、 整型变量的分类 三类整型变量 有符号 无符号 基本型 ( 简称整型 ) int unsigned int 短整型 short或 short int unsigned short 长整型 long或 long int unsigned long 整数类型和取值范围 TURBO C 所占位数 最小取值范围 int 16 -32768+32767 short 16 -32768+32767 long 32 - 2147483648+21474836 47 unsigned int 16 065535 unsigned short 16 065535 unsigned long 32 0429496

26、7295 C语言程序设计 第三章 程序的灵魂 算法 整型变量的定义 先定义后使用 强制类型定义 int a,b; ( 指定变量 a、 b为整型 ) unsigned 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 00 00 00 00 00 00 00 11 01 00 00 00 00 00 00 11 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 01 00 00 00 00 00

27、 00 11 01 00 00 00 00 00 00 11 01 int 型 short 型 long 型 unsigned 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,

28、b+u= -14 定义与赋值同时进行: int a=12; C语言程序设计 第三章 程序的灵魂 算法 整型数据的溢出 此情况称为 溢出 ,运行时不报错, 编程时要注 意 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语言程序设计

29、 第三章 程序的灵魂 算法 整型常量的类型 整型常量的值在 -32768+32767范围内,编译器认 为是 int类型 整型常量的值超过上述范围,而在 2147483648 +2147483647范围内,编译器认为是 long类型 当系统定义 short int与 int占内存长度相同,则 两种类型常量均可以赋给 int和 short int型变量 在整型常量后面加大写 L或小写 l,则告诉编译器, 把该整型常量作为 long类型处理。例: 123L、 0L 在整型常量后面加 u,则按无符号整型方式存放, 负数转换成补码再按无符号整型方式存放。 C语言程序设计 第三章 程序的灵魂 算法 3.4

30、 浮点型数据 浮点型常量的表示方法 浮点数( float)又称为实数( real) 两种表示方法: 十进制小数形式: 必须有小数点 如 0.123 、 .123 、 123.0 、 0.0 、 123. 指数形式: e或 E之前 后 必须有数字;指数必须为整数 如 123.456e0、 12.3456e1 、 1.23456e2 、 0.123456e3 、 0.0123456e4 等 规范化指数形式 只有一位非零整数的指数形式 是指数的输出形式 6.28e-2 表示 6.28 10 -2 -3.0824e4 表示 3.0824 10 4 C语言程序设计 第三章 程序的灵魂 算法 浮点型变量

31、浮点型数据在内存中的存放形式 浮点型数据在内存中占 4个字节( 32位) 在内存中分成 3部分,指数为 2的幂次 + .314159 1 数符 小数部分 指数 浮点型变量的分类 单精度 float 32位 67 双精度 double 型 64位 1516 长双精度 long double型 128位 1819 类 型 位数 有效数字 float x,y; (指定 x、 y为单精度浮点型变量) double z; (指定 z为双精度浮点型变量) long double t; (指定 t为长双精度浮点型变量) C语言程序设计 第三章 程序的灵魂 算法 浮点型数据的舍入误差 数据超过有效位数,则产生

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

33、值 :该字符的 ASCII码 值 定义格式: char 变量名 = 值 转义字符 :反斜线后面跟一个字符或一个代码值表示 如 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 转义字符 含义 换行 垂直制表 回车(不换行) 响铃 单引号 3位 8进制数代表的字符 水平制表(右移 8格) 退格 换页 反斜线 双引号 2位 16进制数代表的字符 例 3.5 转义字符的使用 #inclu

34、de void main( ) printf( ab ct derftgn); printf(htibbj k); f gde h j k 显示结果: 打印结果: fab gde h jik C语言程序设计 第三章 程序的灵魂 算法 字符变量 存放字符常量,占用一个字节,存放 一个 字符 定义形式: 赋值: char c1,c2; c1=a;c2=b; 字符数据在内存中的存储形式及其使用方法 以二进制存放字符的 ASCII码值( 0255整数) 与整数的存储形式类似 以字符或整数形式输出 例 3.6 向字符变量赋整数 #include void main( ) char c1,c2 ; c1=

35、97 ; c2=98 ; printf(%c %c n,c1,c2); printf(%d %d n,c1,c2); a b 97 98 运行结果: 输出形式取决于 printf函数中的格式符 格式符为 “ %c时输出的变量值为 字 符 格式符为 “ %d时输出的变量值为 整 数 C语言程序设计 第三章 程序的灵魂 算法 对字符数据进行算术运算 实质是对其 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

36、 B 运行结果: 字符型与整型间互相赋值 例: 互相赋值 #include void main( ) int c1; char c2 ; c1=a ; c2=98 ; c1=c1-32; c2=c2-32; printf(%c %c ,c1,c2); 小写字母比大写字母的 ASCII码大 (32)10 C语言程序设计 第三章 程序的灵魂 算法 字符串常量 定义:用双引号 ( )括起来的字符序列 How do you do , CHINA , a , $123.45 存储: 每个字符串尾 自动 加一个 0 作为字 符串结束标志 h e l l o 0 例 字符串 “ hello在内存中 例 空串

37、 “” 0 字符常量与字符串常量不同 a a 0 例 a a 例 : char ch; ch=A; 例 har ch=A; 没有字符串变量, 只能用字符数组存放 C语言程序设计 第三章 程序的灵魂 算法 3.6 变量赋初值 变量的使用: 先定义,后使用 变量定义位臵: 一般 放在函数开头 变量初始化 :可以在定义时赋初值 例 : int a=1,b= -3,c; float data=3.67; char ch=A; int x=1,y=1,z=1; int x=y=1;( ) 编译程序根据变量定义为其 分配指定字节的内存单元 . 地址 int a=1, b=-3,c; a b c 2字节 2

38、字节 2字节 地址 地址 . 内存 1 -3 随机数 错! int a=b=c=3 C语言程序设计 第三章 程序的灵魂 算法 3.7 各类数值型数据间的混合运算 整型、实型、字符型数据间可以混合运算 自动转换 什么情况下发生 运算转换 -不同类型数据混合运算时 赋值转换 -把一个值赋给与其类型不同的变量时 输出转换 -输出时转换成指定的输出格式 函数调用转换 -实参与形参类型不一致时转换 运算转换规则 :不同类型数据运算时先 自动 转换 成同一类型 C语言程序设计 第三章 程序的灵魂 算法 double float long unsigned int char,short 低 高 说明 : 必

39、定的转换 运算对象类型不同时转换 例 char ch; int i; float f; double d; ch/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语言程序设计 第三章 程序的灵魂 算法 强制转换(见 P56强制类型转换运算符部分) 一般形式: ( 类型名 ) ( 表达式) 例: (int)(x

40、+y) (int)x+y (double)(3/2) (int)3.6 说明:强制转换得到 所需类型的中间变量, 原变量类型不变 例 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 运 算 符 算术运算符:( + - * / % + -) 关系运算符:( = !=) 逻

41、辑运算符:(! 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,j=4 /4,j=4 /3,j=4 /c=20,a=4 /c=15,a=4 C语言程序设计 第三章 程序的灵魂 算法 几点说明: 例 -i+ i=3; printf(%d,-i+); -(i+) /-3 + - 不能用于常量和表达式 ,如 5+, (a+b)+ + - 结合方向: 自右向左 优先级: - + - -* / % -+ - (2) (3) (4) 该运算符

42、常用于循环语句中,使循环变量加减 1 有关表达式使用中的问题说明 不同系统对运算符和表达式的处理次序不同,尽可能 写通用性强的语句 不要写有歧义和不知系统如何执行的程序 C语言程序设计 第三章 程序的灵魂 算法 3.9 赋值运算符和赋值表达式 简单赋值运算符 符号: = 格式: 变量标识符 =表达式 作用:将一个数据(常量或表达式)赋给一个变量 左侧必须是变量,不能是常量或表达式 例 a=3; d=func(); c=d+2; 例 3=x-2*y; a+b=3; ( ) C语言程序设计 第三章 程序的灵魂 算法 赋值表达式 形式: 赋值表达式的值与变量值相等 ,且可嵌套 例 : a=b=c=5

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

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

45、过 编程序才可以深入理解。 C语言程序设计 第三章 程序的灵魂 算法 课后作业 P6668页习题: 3.2, 3.5(思考) 3.3, 3.4, 3.9, 3.12(写出答案) 3.6, 3.10(上机验证) 上机:实验教材:实验 2(做好上机准备) 预习第四、第五章 第 4章 最简单的 C程序设计 顺序程序设计 C语言程序设计 第四章 顺序程序设计 C语言概述 赋值语句 数据输入输出的概念及在 C语言中的实现 字符数据的输入输出 格式输入与输出 顺序结构程序设计举例 4.1 C语句概述 C程序结构: 一个 C程序可以由多个源程序文件构成 一个源程序文件由若干函数、预编译命令及全局变量声明部

46、分构成 函数包括数据定义部分和执行部分,执行部分是 C语言语句, 完成对数据的操作 C语言程序设计 第四章 顺序程序设计 源程序文件1 预处理命令 全局变量声明 函数首部 局部变量声明 执行语句 函数体 函数1 函数n 源程序文件2 源程序文件n C程序 C语句分为 5类 控制语句:共 9种 完成一定的控制功能,这些语句能够根据一定的测试条件 决定某些语句是否被执行,如分支、循环、跳转等语句。 C语言程序设计 第四章 顺序程序设计 if( )else (条件语句 ) for( ) while( ) (循环语句 ) dowhile( ) continue (结束本次循环语句 ) switch (

47、多分支选择语句 ) break (终止 switch或循环语句 ) goto (转向语句 ) return (从函数返回语句 ) C语言程序设计 第四章 顺序程序设计 空语句:只有一个 ; ,什么也不做 表达式语句:由表达式加 ; 组成 典型的是赋值语句,由赋值表达式加分号构成,如: y=x+1 是表达式,而 y=x+1;则是赋值语句。实际上函数调用语句也 属于表达式语句。 函数调用语句:由函数加 ; 组 成 printf(This is a C program); a=3 ; i+ ; for(i=0;i100;i+) ; 复合语句: 用 括起来的一组语句,也称作程序块。 一般形式: C语言

48、程序设计 第四章 顺序程序设计 int i=0,sum=0; while(i=100) sum=sum+i; i=i+1; 说明 复合语句 后不加分号 语法上和其它语句相同 复合语句可嵌套 4.2 赋值语句 基本格式: 赋值表达式 + ; 赋值表达式可以包含在其它表达式中,而赋值语句不 可以。 C语言程序设计 第四章 顺序程序设计 例: if (a=b)0) t=a; 不可写为: if (a=b;)0) t=a; C语言程序设计 第四章 顺序程序设计 表达式中允许出现运算符号、变量、数值、函数 序号 语句 含义 右侧表达式包括 1 a=5 常量 5 i=0 x30+255 十进制、十六进制 c

49、h=ch- A 6 变量、字符常量 7 m=a1+a2 数组变量 8 x=*px+ 指针变量、增 1运算 2 S=pi*r*r 变量、乘号 求圆面积 3 average=(a+b)/2 变量、常数、括号 求平均数 4 x=l*cos(q) 变量、函数 求横坐标 另一种形式的赋值语句 = ; C语言程序设计 第四章 顺序程序设计 示例 含义 a+ = 表达式 a= a + (表达式 ) a % = 表达式 a= a %(表达式 ) a - = 表达式 a= a - (表达式 ) a * = 表达式 a= a * (表达式 ) a / = 表达式 a= a / (表达式 ) 我们可以理解为: =;

50、 只适合于 整型变量 连续赋值语句 C语言程序设计 第四章 顺序程序设计 int a , b , c ; a=b=c=1 ; 连续赋值语句应“ 从右向左 ” 计算 a=b=c=1 ; 等价于: a=(b=(c=1) ); 1. 把常数 1 赋给变量 c, 表达式 (c=1) 的值为 1; 2. 把表达式 (c=1)赋给变量 b, 表达式 (b=(c=1) )的值为 1; 3. 将右侧表达式的值 1赋给 a , a =1 。 步骤: int a=b=c=1 ; 4.3 数据输入输出的概念及在 C语言中的实现 C语言程序设计 第四章 顺序程序设计 标准输入输出函数 putchar 输出字符, sc

51、anf 格式输入, puts 输出字符串 getchar 输入字符, printf 格式输出, gets 输入字符串 所谓数据的输入输出是从计算机角度出发的。 C语言本身没有 I/O语句,所有 I/O都由函数来实现。 C语言的标准库函数 由编译系统提供的一系列函数,以库形式存放在系统中,不是 C语言文本的组成部分。 库函数已编译成目标文件( .obj),在连接阶段才与源程序 编译成的目标文件相连接,生成可执行文件。 调用形式: 函数名(参数表) 注意在调用 C语言库函数时,需要使用编译预处理命令 #include ,使相应的头文件包含到用户源程 序中。 #include 或 #include

52、stdio.h Turbo C 2.0可以 不加 #include命令 常用头文件: stdio.h 定义输入输出函数 string.h 定义字符串操作函数 math.h 定义 sin、 cos等数学函数 4.4 字符数据的输入输出 putchar 函数( 单 字符 输出 函数) C语言程序设计 第四章 顺序程序设计 输出一个字符: 格式: putchar( 字符 ); 或 putchar( 字符变量 ); 强调:被输出的单个字符必须被 括起 来 运行结果: BOY /* 例 4.1 putchar(字符 )*/ #include void main() putchar(B); putchar

53、(O); putchar(Y); 例 4.1 putchar(字符变量 ) */ #include void main() char a,b,c; a=B; b=O; c=Y; putchar(a); putchar(b); putchar(c); 结果当然还是一样的! 输出控制字符 C语言程序设计 第四章 顺序程序设计 /* 例 putchar(控制字符 ) */ #include void main() char a,b; a=O; b=k; putchar(a); putchar(n); putchar(b); 运行结果: O k 输出转义字符 /*例 putchar( ) 含有转义符 * / #include void main() char a; a=B; putchar(101); putchar(a); 运行结果: AB

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!