c程序设计谭浩强第四版.ppt

上传人:xiao****1972 文档编号:6276968 上传时间:2020-02-21 格式:PPT 页数:536 大小:10.70MB
返回 下载 相关 举报
c程序设计谭浩强第四版.ppt_第1页
第1页 / 共536页
c程序设计谭浩强第四版.ppt_第2页
第2页 / 共536页
c程序设计谭浩强第四版.ppt_第3页
第3页 / 共536页
点击查看更多>>
资源描述
谢晋E mail hbhsxiejin 黄石理工学院 C程序设计 教材 参考书与课时安排 教材C程序设计 第四版 谭浩强编著清华大学出版社参考书C语言程序设计教程谭浩强高等教育出版社C高级实用程序设计王士元清华大学出版社C程序设计试题汇编谭浩强清华大学出版社课时安排理论学时 36学时实验学时 24 熟记C语言的基本概念熟悉TurboC VisualC 的上机操作环境会读 会编 会调试C程序学习要点熟记C语言的语法学会算法分析与算法设计 课程目的 课程要求 课前请做好预习保持课堂安静 头脑清醒 思维活跃认真 独立 按时完成并提交作业重视上机实践 有效利用宝贵的上机时间 第1章C语言概述 C语言程序设计第一章C语言概述 1 1C语言发展历史程序设计语言的发展 CPU指令系统 由0 1序列构成的指令码组成如 10000000加10010000减 用助记符号描述的指令系统 可进行地址 位操作如ADDA B编写系统软件 直接对硬件操作 可读性 移植性差 面向机器的语言 C语言程序设计第一章C语言概述 可读性 移植性好 编写应用程序一般较难实现汇编语言的某些功能如 地址和位的操作 C语言兼有高级和低级语言的功能适合写系统软件和应用软件又称中级语言 C语言发展过程产生背景1960ALGOL60 1963CPL语言 1967BCPL 1970KenThompsonB语言 写UNIX系统产生过程时间 1972 1973地点 美国贝尔实验室目的 UNIX操作系统设计人 Ken Thompson和Dennis M RitchieC标准标准C 1978年K R合著 TheCProgrammingLanguage ANSIC 1983年87ANSIC 1987年1990年国际标准的ANSIC 1994年再次修订 C版本MicrosoftC或称MS CTurboC或称TC C语言程序设计第一章C语言概述 Ada ALGOL60 ALGOL68 Pascal Modula 2 CPL BCPL B C C Java LISP COBOL FORTRAN77 FORTRAN PL 1 Simula67 Smalltalk80 BASIC ANSI BASIC QBASIC VB FORTRAN90 1 2C语言的特点语言简洁 紧凑 灵活运算符丰富数据结构 数据类型丰富链表 树 栈程序设计结构化 模块化结构化控制语句 if else while switch for函数作为模块单位语法不严格 程序设计自由度大可以访问内存地址 进行位运算生成目标代码质量高可移植性好 C语言程序设计第一章C语言概述 32个关键字 由系统定义 不能重作其它定义 autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhileTurboC扩充了11个关键字 asm cs ds es sscdeclfarhugeinterruptnearpascal注意 在C语言中 关键字都是小写的 C语言程序设计第一章C语言概述 C语言简洁 紧凑 使用方便 灵活 ANSIC一共只有32个关键字 见365页附录B 9种控制语句 if else for while do while continuebreakswitchgotoreturn C语言程序设计第一章C语言概述 C语言有9种控制语句 程序书写形式自由 主要用小写字母表示 压缩了一切不必要的成分 C语言程序设计第一章C语言概述 表1 1C语言与Pascal语言比较 通过表1 1我们可以得出结论 C比Pascal简练 因此源程序更短 编程效率高 34种运算符 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 及其扩展条件运算符 逗号运算符 指针运算符 求字节数 sizeof强制类型转换 类型 分量运算符 下标运算符 其它 注意 各种运算符混合使用 其优先级与结合方法是难点 可先预习 C语言程序设计第一章C语言概述 C语言运算符丰富 附录C C语言程序设计第一章C语言概述 C语言数据结构丰富 1 3简单的C程序介绍 example1 1ThefirstCProgram includevoidmain printf HelloWord n C语言程序设计第一章C语言概述 输出 Thisisacprogram 例1 1第一个程序HelloWord printf语句中的 n 是换行符 例1 2求俩个数的和 example1 1calculatethesumofaandb include Thisisthemainprogram voidmain inta b sum 定义变量 a 10 b 24 sum add a b printf sum d n sum Thisfunctioncalculatesthesumofxandy intadd intx inty intz z x y return z 运行结果 sum 34 C语言程序设计第一章C语言概述 printf语句中的 d 是表示 十进制整数类型 C语言程序设计第一章C语言概述 例1 3从键盘输入两个整数 输出其中较大的数 includevoidmain intmax intx inty inta b c scanf d d scanf语句中 a 的含义是 取地址 输入 10 20 输出 max 20 声明部分 定义变量 调用max函数 返回值赋给c 定义max子函数 函数值 形参x y为整型 通过max函数将z值带回调用处 C语言格式特点习惯用小写字母 大小写敏感不使用行号 无程序行概念可使用空行和空格常用锯齿形书写格式 C语言程序设计第一章C语言概述 main main inti j sum sum 0 for i 1 i 10 i for j 1 j 10 j sum i j printf d n sum 优秀程序员的素质之一 使用TAB缩进 对齐有足够的注释有合适的空行 C语言结构特点函数与主函数程序由一个或多个函数组成必须有且只能有一个主函数main 可以放在程序中任一位置程序执行从main开始 在main中结束 其它函数通过嵌套调用得以执行 程序语句C程序由语句组成用 作为语句终止符注释 为注释 不能嵌套不产生编译代码 例 Thisisthemain ofexample1 1 编译预处理命令 C语言程序设计第一章C语言概述 1 4C程序的上机步骤C程序开发步骤 file exe C语言程序设计第一章C语言概述 程序代码的录入 生成源程序 c 语法分析查错 翻译生成目标程序 obj 与其它目标程序或库链接装配 生成可执行程序 exe TurboC集成开发环境配置要求UNIX PC DOS MS DOS UCDOS操作系统硬盘容量约2M 448KRAM运行空间安装TurboC创建子目录Install若不是可安装盘 将文件拷贝到对应的目录下 C语言程序设计第一章C语言概述 进入TurboCD TC TC exe 主控菜单文件操作FILE NewLoadSaveWriteto编辑操作EDIT 插入 修改块查找 替换编译链接COMPILELINKMAKE执行RUN退出TurboCAlt xAlt F Q帮助HelpF1Ctrl F1 C语言程序设计第一章C语言概述 基本操作 F10 调用主菜单F2 存盘F3 打开F1 帮助信息Alt F9 CompileCtrl F9 RunAlt F5 UserScreenAlt X 退出Tc 常用热键 文本编辑 移动光标PgUp PgDn 上下翻页Ctrl PgUp Ctrl PgDn 文件首尾Home行首End行尾DdeleteInsertBkspace 块操作 Ctrl KB 块开始标记Ctrl KK 块结束标记Ctrl KC 块拷贝Ctrl KV 块移动Ctrl KY 块删除Ctrl KH 块隐藏 程序调试 F8 StepoverF7 TraceintoF4 GotoCursorCtrl F7 AddWatchCtrl F8 ToggleBreakpointCtrl F2 ProgramReset 窗口操作 F5 窗口缩放F6 窗口切换 C语言程序设计第一章C语言概述 C程序设计第一章C语言概述 VisualC 实现C程序1 启动 C程序设计第一章C语言概述 2 文件编辑与保存 C程序设计第一章C语言概述 3 编译与链接 C程序设计第一章C语言概述 4 运行 C语言程序设计第一章C语言概述 C程序设计第一章C语言概述 算法的概念 简单算法举例 算法的特性 怎样表示一个算法 第2章程序的灵魂 算法 C语言程序设计第二章程序的灵魂 算法 结构化程序设计方法 C语言程序设计第二章程序的灵魂 算法 程序包括的内容 数据结构 数据的类型和组织形式算法 操作步骤的描述 NikiklausWirth提出 教材认为 程序 算法 数据结构 程序设计方法 语言工具和环境 灵魂 加工对象 工具 C语言程序设计第二章程序的灵魂 算法 2 1算法的概念为解决一个问题而采取的方法和步骤 就成为算法 例如 歌曲的乐谱 建造房子等 算法核心是解决 做什么 和 怎么做 的问题 1 2 100可以有多种方法 一般采用简单和运算步骤少的 准确 高效计算机算法类别数值运算算法非数值运算算法 C语言程序设计第二章程序的灵魂 算法 2 2简单算法举例例2 1方法1 累乘方法2 用循环结构解决 灵活 通用 例2 2通过循环选择打印例2 3判断闰年例2 4累加求级数的和 循环改变正负号和分母加1 例2 5判断素数 课后认真思考 加深什么是算法的概念 C语言程序设计第二章程序的灵魂 算法 2 3算法的特性有穷性 在合理范围内可完成确定性 无歧义性有零个或多个输入 从外界得到信息有一个或多个输出 问题的答案有效性 每步有确定的结果 C语言程序设计第二章程序的灵魂 算法 2 4怎样表示一个算法自然语言表示2 2节例 易懂 文字冗长 易歧义性流程图表示用流程图符号构成 直观 易懂N S流程图表示伪代码表示计算机语言表示 顺序结构选择结构循环结构 C语言程序设计第二章程序的灵魂 算法 传统流程图流向混乱 可读性差 所以应该采用结构化流程图 结构化程序设计基本思想 任何程序都可以用三种基本结构表示 限制使用无条件转移语句 goto 结构化程序 由三种基本结构反复嵌套构成的程序优点 结构清晰 易读 提高程序设计质量和效率 三种基本结构顺序结构 C语言程序设计第二章程序的灵魂 算法 选择结构 二分支选择结构 多分支选择结构 C语言程序设计第二章程序的灵魂 算法 循环结构 当型循环结构 直到型循环结构 注 A B A1 An可以是一个简单语句 也可以是一个基本结构 C语言程序设计第二章程序的灵魂 算法 三种基本结构的共同特点 只有一个入口 只有一个出口 结构内的每一部分都有机会被执行到 结构内不存在 死循环 C语言程序设计第二章程序的灵魂 算法 2 5结构化程序设计方法结构化程序 用三种基本结构组成的程序基本设计思路 复杂问题分解成几个最基本问题 再分别处理 采用的方法 自顶向下 逐步细化 模块化设计 复杂问题按功能分成多个子模块结构化编码 正确采用三种基本结构实现 C程序设计第二章程序的灵魂 算法 第3章最简单的C程序设计 顺序程序设计 C语言程序设计第三章顺序程序设计 C语句 数据输入输出的概念及在C语言中的实现 字符数据的输入输出 格式输入与输出 顺序结构程序设计举例 C数据类型 表达式 C语言程序设计第三章顺序程序设计 C的数据类型 常量与变量 整型数据 实型数据 字符型数据 变量赋初值 各种数值型数据间的混合运算 算术运算符和算术表达式 赋值运算符和赋值表达式 逗号运算符和逗号表达式 3 1C数据类型 表达式 C语言程序设计第三章顺序程序设计 3 1 1C的数据类型 数据类型决定 1 数据占内存字节数2 数据取值范围3 可以进行的操作 C语言程序设计第三章顺序程序设计 常量和符号常量定义 程序运行过程中 其值不能被改变的量 常数 分类 直接常量 符号常量 3 1 2常量与变量 C语言程序设计第三章顺序程序设计 符号常量 用标识符代表常量一般用大写字母 PRICE PI定义格式 define符号常量常量其值在作用域内不能改变和再赋值 例3 1符号常量举例 definePRICE30 includevoidmain intnum total num 10 total num PRICE printf total d n total 符号常量的优点是 见名知意 一改全改 C语言程序设计第三章顺序程序设计 变量定义 其值可以改变的量 定义格式 数据类型变量名 变量应该有名字 并在内存中占据一定的存储单元 变量名和变量值有不同的含义变量名实为一个符号地址 例变量的使用main inta a 3 printf a d a C语言程序设计第三章顺序程序设计 标识符定义 标识变量名 符号常量名 函数名 数组名 文件名的字符串序列 名字 命名规则 只能由字母 数字 下划线组成 且第一个字符必须是字母或下划线大小写字母含义不同 一般用小写不能使用关键字TC允许最长32个字符 建议长度不超过8个字符使用 先定义 后使用 标识符应该 见名知意 如total max标识符应该 不宜混淆 如l与1 O与0 这些标识符合法吗 1A M D John 123 33 Tatol int max C语言程序设计第三章顺序程序设计 3 1 3整型数据整型常量 整常数 的三种表示方法十进制整数 由数字0 9和正负号表示 如123 456 0八进制整数 由数字0开头 后跟数字0 7表示 如0123 011十六进制整数 由0 x开头 后跟0 9 a f A F表示 如0 x123 0 xff C语言程序设计第三章顺序程序设计 补充知识 字节和位内存以字节为单元组成每个字节有一个地址一个字节一般由8个二进制位组成每个二进位的值是0或1 C语言程序设计第三章顺序程序设计 数值的表示方法 原码 反码和补码原码 最高位为符号位 其余各位为数值本身的绝对值反码 正数 反码与原码相同负数 符号位为1 其余位对原码取反补码 正数 原码 反码 补码相同负数 最高位为1 其余位为原码取反 再对整个数加1 9 5 49 7 16 14 12 C语言程序设计第三章顺序程序设计 负数补码转换成十进制数 最高位不动 其余位取反加1 例补码 11111001取反 10000110加1 10000111 7 C语言程序设计第三章顺序程序设计 整型变量整型数据在内存中的存放形式数据在内存中以二进制补码形式存放每一个整型变量在内存中占2个字节10的原码反码补码 10的原码取绝对值反码补码 整数的最左二进制位是符号位 0正 1负 C语言程序设计第三章顺序程序设计 整型变量的分类三类整型变量 整数类型和取值范围 C语言程序设计第三章顺序程序设计 整型变量的定义先定义后使用 强制类型定义inta b 指定变量a b为整型 unsignedshortc d 指定变量c d为无符号短整型 longe f 指定变量e f为长整型 例3 2整型变量的定义与使用 includevoidmain inta b c d unsignedu a 12 b 24 u 10 c a u d b u printf a u d b u d n c d 指定abcd为整型变量 指定u为无符号整型变量 定义放在函数开头的声明部分 不同类型混合运算 类型自动转换 结果 a u 22 b u 14 定义与赋值同时进行 inta 12 C语言程序设计第三章顺序程序设计 整型数据的溢出此情况称为 溢出 运行时不报错 编程时要注意 整型变量最大值32767 加1后是 32768的补码形式 例3 3整型数据的溢出 includevoidmain inta b a 32767 b a 1 printf d d n a b 改为 longb 结果是什么 C语言程序设计第三章顺序程序设计 整型常量的类型整型常量的值在 32768 32767范围内 编译器认为是int类型整型常量的值超过上述范围 而在 2147483648 2147483647范围内 编译器认为是long类型当系统定义shortint与int占内存长度相同 则两种类型常量均可以赋给int和shortint型变量在整型常量后面加大写L或小写l 则告诉编译器 把该整型常量作为long类型处理 例 123L 0L在整型常量后面加u 则按无符号整型方式存放 负数转换成补码再按无符号整型方式存放 C语言程序设计第三章顺序程序设计 3 1 4浮点型数据浮点型常量的表示方法浮点数 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 104 C语言程序设计第三顺序程序设计 浮点型变量浮点型数据在内存中的存放形式浮点型数据在内存中占4个字节 32位 在内存中分成3部分 指数为2的幂次 3141591 数符 小数部分 指数 浮点型变量的分类 floatx y 指定x y为单精度浮点型变量 doublez 指定z为双精度浮点型变量 longdoublet 指定t为长双精度浮点型变量 C语言程序设计第三章顺序程序设计 浮点型数据的舍入误差数据超过有效位数 则产生误差要避免一个很大的数与一个很小的数加减 例3 4浮点型数据的舍入误差 includevoidmain floata b a 123456 789e5 b a 20 printf f n b 舍入误差使1 0 3 3的结果并不等于1 浮点型常量的类型浮点型常量一般按双精度64位处理 数后加F或f按单精度浮点型常量不分float和double C语言程序设计第三章顺序程序设计 3 1 5字符型数据字符常量定义 用单引号括起来的单个字符或转义字符字符常量的值 该字符的ASCII码值定义格式 char变量名 值转义字符 反斜线后面跟一个字符或一个代码值表示 如 a A n t 如 a 97 A 65 n 10 t 9 charch 65与charch A 与char 101 是等效的 C语言程序设计第三章顺序程序设计 例3 5转义字符的使用 includevoidmain printf abc tde rf tg n printf h ti b bjk C语言程序设计第三章顺序程序设计 字符变量存放字符常量 占用一个字节 存放一个字符定义形式 赋值 charc1 c2 c1 a c2 b 字符数据在内存中的存储形式及其使用方法以二进制存放字符的ASCII码值 0 255整数 与整数的存储形式类似以字符或整数形式输出 例3 6向字符变量赋整数 includevoidmain charc1 c2 c1 97 c2 98 printf c c n c1 c2 printf d d n c1 c2 输出形式取决于printf函数中的格式符 格式符为 c 时输出的变量值为字符格式符为 d 时输出的变量值为整数 C语言程序设计第三章顺序程序设计 对字符数据进行算术运算实质是对其ASCII值进行算术运算 例3 7大小写字母的转换 includevoidmain charc1 c2 c1 a c2 b c1 c1 32 c2 c2 32 printf c c c1 c2 字符型与整型间互相赋值 例 互相赋值 includevoidmain intc1 charc2 c1 a c2 98 c1 c1 32 c2 c2 32 printf c c c1 c2 小写字母比大写字母的ASCII码大 32 10 C语言程序设计第三章顺序程序设计 字符串常量定义 用双引号 括起来的字符序列 Howdoyoudo CHINA a 123 45 存储 每个字符串尾自动加一个 0 作为字符串结束标志 字符常量与字符串常量不同 例 charch ch A 没有字符串变量 只能用字符数组存放 C语言程序设计第三章顺序程序设计 3 1 6变量赋初值变量的使用 先定义 后使用变量定义位置 一般放在函数开头变量初始化 可以在定义时赋初值 例 inta 1 b 3 c floatdata 3 67 charch A intx 1 y 1 z 1 intx y 1 错 inta b c 3 C语言程序设计第三章顺序程序设计 3 1 7各类数值型数据间的混合运算整型 实型 字符型数据间可以混合运算 自动转换什么情况下发生运算转换 不同类型数据混合运算时赋值转换 把一个值赋给与其类型不同的变量时输出转换 输出时转换成指定的输出格式函数调用转换 实参与形参类型不一致时转换运算转换规则 不同类型数据运算时先自动转换成同一类型 C语言程序设计第三章顺序程序设计 C语言程序设计第三章顺序程序设计 强制转换 见P56强制类型转换运算符部分 一般形式 类型名 表达式 例 int x y int x y double 3 2 int 3 6说明 强制转换得到所需类型的中间变量 原变量类型不变 例3 8 includemain floatx inti x 3 6 i int x printf x f i d x i 结果 x 3 600000 i 3 精度损失问题 强制类型转换运算符 表达式仅一个变量时 括号可以省略 C语言程序设计第三章顺序程序设计 3 1 8算术运算符和算术表达式 学习运算符应注意 运算符功能与运算量关系要求运算量个数要求运算量类型运算符优先级别结合方向结果的类型 C语言程序设计第三章顺序程序设计 算术运算符和算术表达式基本算术运算符 结合方向 从左向右优先级 2 3 4 说明 可为单目运算符时 右结合性两整数相除 结果为整数 要求两侧均为整型数据 运算的两个数中有一个数为实数 结果是double型 例5 2 5 2 0 例5 2 5 2 1 10 5 1 5 5 2 例5 2 2 5 2 0 2 5 例5 2 1 5 2 11 10 15 1 05 5 2 C语言程序设计第三章顺序程序设计 自增 自减运算符 作用 使变量值加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 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 该运算符常用于循环语句中 使循环变量加减1 有关表达式使用中的问题说明不同系统对运算符和表达式的处理次序不同 尽可能写通用性强的语句不要写有歧义和不知系统如何执行的程序 C语言程序设计第三章顺序程序设计 3 1 9赋值运算符和赋值表达式 简单赋值运算符符号 格式 变量标识符 表达式作用 将一个数据 常量或表达式 赋给一个变量左侧必须是变量 不能是常量或表达式 例a 3 d func c d 2 例3 x 2 y a b 3 类型转换赋值转换规则 使赋值号右边表达式值自动转换成其左边变量的类型 例floatf inti 10 f i 则f 10 0 例inti i 2 56 结果i 2 复合赋值运算符种类 含义 exp1op exp2 exp1 exp1opexp2 C语言程序设计第三章顺序程序设计 赋值表达式形式 赋值表达式的值与变量值相等 且可嵌套 例 a b c 5a 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 1 10逗号运算符和逗号表达式形式 表达式1 表达式2 表达式n结合性 从左向右优先级 15 级别最低逗号表达式的值 等于表达式n的值用途 常用于循环for语句中 例a 3 5 a 4a 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 C语言程序设计第三章顺序程序设计 例 逗号表达式使用main intx y 7 floatz 4 x y y 6 y z printf x d n x 本章的内容散乱而复杂 但却是程序设计的基础 要认真看书 通过编程序才可以深入理解 3 2C语句C程序结构 一个C程序可以由多个源程序文件构成一个源程序文件由若干函数 预编译命令及全局变量声明部分构成函数包括数据定义部分和执行部分 执行部分是C语言语句 完成对数据的操作 C语言程序设计第三章顺序程序设计 C语句分为5类控制语句 共9种完成一定的控制功能 这些语句能够根据一定的测试条件决定某些语句是否被执行 如分支 循环 跳转等语句 C语言程序设计第三章顺序程序设计 3 2 1语句的作用和分类 C语言程序设计第三章顺序程序设计 空语句 只有一个 什么也不做 表达式语句 由表达式加 组成典型的是赋值语句 由赋值表达式加分号构成 如 y x 1是表达式 而y x 1 则是赋值语句 实际上函数调用语句也属于表达式语句 函数调用语句 由函数加 组成 printf ThisisaCprogram a 3 i for i 0 i 100 i 复合语句 用 括起来的一组语句 也称作程序块 一般形式 C语言程序设计第三章顺序程序设计 inti 0 sum 0 while i 100 sum sum i i i 1 说明复合语句 后不加分号语法上和其它语句相同复合语句可嵌套 3 2 2赋值语句基本格式 赋值表达式 赋值表达式可以包含在其它表达式中 而赋值语句不可以 C语言程序设计第三章顺序程序设计 例 if a b 0 t a 不可写为 if a b 0 t a C语言程序设计第三章顺序程序设计 表达式中允许出现运算符号 变量 数值 函数 序号 语句 含义 右侧表达式包括 另一种形式的赋值语句 C语言程序设计第三章顺序程序设计 我们可以理解为 只适合于整型变量 连续赋值语句 C语言程序设计第三章顺序程序设计 inta b c a b c 1 inta b c 1 3 3数据输入输出的概念及在C语言中的实现 C语言程序设计第三章顺序程序设计 标准输入输出函数putchar输出字符 scanf格式输入 puts输出字符串getchar输入字符 printf格式输出 gets输入字符串 所谓数据的输入输出是从计算机角度出发的 C语言本身没有I O语句 所有I O都由函数来实现 C语言的标准库函数由编译系统提供的一系列函数 以库形式存放在系统中 不是C语言文本的组成部分 库函数已编译成目标文件 obj 在连接阶段才与源程序编译成的目标文件相连接 生成可执行文件 调用形式 函数名 参数表 注意在调用C语言库函数时 需要使用编译预处理命令 include 使相应的头文件包含到用户源程序中 include或 include stdio h TurboC2 0可以不加 include命令 常用头文件 stdio h定义输入输出函数string h定义字符串操作函数math h定义sin cos等数学函数 3 3 1字符数据的输入输出putchar函数 单字符输出函数 C语言程序设计第三章顺序程序设计 输出一个字符 格式 putchar 字符 或putchar 字符变量 强调 被输出的单个字符必须被 括起来 运行结果 BOY 例4 1putchar 字符 includevoidmain putchar B putchar O putchar Y 例4 1putchar 字符变量 includevoidmain chara b c a B b O c Y putchar a putchar b putchar c 结果当然还是一样的 输出控制字符 C语言程序设计第三章顺序程序设计 例putchar 控制字符 includevoidmain chara b a O b k putchar a putchar n putchar b 运行结果 Ok 输出转义字符 例putchar 含有转义符 includevoidmain chara a B putchar 101 putchar a 运行结果 AB getchar函数 单字符输入函数 C语言程序设计第三章顺序程序设计 格式 getchar 强调 输入单个字符后 必须按一次回车 计算机才接受输入的字符 include不能少 例4 2 includevoidmain charc c getchar putchar c 运行结果 a a 3 3 2格式输入与输出printf函数 格式输出函数 printf函数的一般格式 C语言程序设计第三章顺序程序设计 格式 printf 格式控制 输出表列 格式控制 用双引号括起来的字符串 包含两种信息格式说明 修饰符 格式字符 指定输出格式普通字符 原样输出输出表列 要输出的数据 可以是变量或表达式 可以没有 多个时以 分隔 例 printf d d a b printf a db d n a b C语言程序设计第三章顺序程序设计 从最简单的学起 includevoidmain printf HelloWorld 运行结果 HelloWorld 调用printf 时可以省略 include命令 格式字符d格式符 输出十进制整数 有3种用法 d格式 按数据实际长度输出 数据范围 32768 32767 C语言程序设计第三章顺序程序设计 d格式的printf 函数使用 includevoidmain inta 3 b 4 printf d d n a b printf a d b d n a b 运行结果 34a 3 b 4 格式说明决定最终输出的格式 格式说明应与输出列表项个数相同 顺序一致 格式说明通常用小写字母表示 md格式 m指定输出字段的宽度数据位数小于m 左端补空格 反之按实际输出 C语言程序设计第三章顺序程序设计 inta 123 b 12345 printf 4d 4d a b ld格式 输出长整型数据可以用 mld格式指定输出列宽 longc 135790printf ld n c printf 8ld c 135790 32767 int型数据的最大值 o格式符 八进制输出整数是将内存中的二进制位整个按八进制输出 所以输出值没有符号 可以指定输出宽度 mo 长整型可以用 lo格式输出 C语言程序设计第三章顺序程序设计 inta 1 printf d o 8o x a a a a 输出 1 177777 177777 ffff x格式符 十六进制输出整数同o格式符 无符号 即无负十六进制数 可以指定输出宽度 mx 长整型可以用 lx格式输出 C语言程序设计第三章顺序程序设计 u格式符 十进制输出unsigned型数据int型可以用 u格式输出 unsigned型也可以用 d o和 x格式输出 例4 3无符号数据的输出 includevoidmain unsignedinta 65535 intb 2 printf a d o x u n a a a a printf b d o x u n b b b b 运行结果 a 1 177777 ffff 65535b 2 177776 fffe 65534 C语言程序设计第三章顺序程序设计 c格式符 输出一个字符值在0 255的整数 可以用 c形式输出为字符 例4 4字符数据的输出 includevoidmain charc a inti 97 printf c d n c c printf c d n i i 运行结果 a 97a 97 C语言程序设计第三章顺序程序设计 s格式符 输出一个字符串有 s ms ms m ns m ns五种用法 例4 5字符串的输出 includevoidmain printf 3s 7 2s 4s 5 3d n CHINA CHINA CHINA CHINA 运行结果 CHINA CH CHIN CHI C语言程序设计第三章顺序程序设计 f格式符 输出实数 f格式 整数部分全部输出 小数6位 可以有非有效数字输出 因为单精度有效位7位 双精度16位 m nf格式 占m列 其中n位小数 左补空格 m nf格式 右补空格 例4 8 f格式输出实数时指定小数位数 includevoidmain flotf 123 456 printf f 10f 10 2f 2f 10 2f n f f f f f 运行结果 123 456001 123 456001 123 46 123 46 123 46 C语言程序设计第三章顺序程序设计 e格式符 指数形式输出实数 e格式 不指定m和n 小数6位 指数部分共5位 其中e和指数符号各1位 指数值3位 m ne和 m ne格式 m n 的含义同前面 没有n时 自动 6 g格式符 输出实数可以自动根据数值大小选择f或e格式 选列少的 不输出无意义的零 C语言程序设计第三章顺序程序设计 inta 100 printf d a inta 255 printf x a inta 8 printf o a inta 100 printf u a chara 65 printf c a printf s ABC floata 567 789 printf e a floata 567 789 printf f a floata 567 789 printf g a printf 100 ff 10 100 A ABC 5 677890e 002 567 789000 567 789 scanf函数 格式输入函数 一般形式功能 按指定格式从键盘读入数据 存入地址表指定的存储单元中 并按回车键结束格式控制 含义同printf函数地址表列 变量地址或字符串地址 地址间 分隔 强调 地址列表中每一项必须以取地址运算符 开头 C语言程序设计第三章顺序程序设计 格式 scanf 格式控制 地址表列 例4 9用scanf函数输入数据 includevoidmain inta b c scanf d d d 输入 3 4 5 输出 3 4 5 C语言程序设计第三章顺序程序设计 例scanf 3d 4d f 输入12345678765 43 则123 k 8765 43 f 例scanf 2d 3d 2d 输入12 345 67 则12 a 67 b 例scanf 3c 2c 输入abcde 则 a c1 d c2 例scanf 4d 2d 2d 输入19991015 则1999 yy 10 mm 15 dd 输入分隔符的指定一般以空格 TAB或回车键作为分隔符输入数据时 遇非法输入则认为数据结束其它字符做分隔符 格式串中两个格式符间有其它字符 则输入时对应位置也要有相同的字符 C语言程序设计第三章顺序程序设计 例scanf d d d 输入12 30 45 则12 h 30 m 45 s 例scanf d c f 输入1234a123o 26 则1234 a a b 123 c 3 4顺序结构程序举例 C语言程序设计第三章顺序程序设计 例4 10输入三角形边长 求面积 include includevoidmain floata b c s area scanf f f f 输入 3 4 6 输出 a 3 00 b 4 00 c 6 00s 6 50area 5 33 C语言程序设计第三章顺序程序设计 例4 11从键盘输入大写字母 用小写字母输出 include stdio h voidmain charc1 c2 c1 getchar printf c d n c1 c1 c2 c1 32 printf c d n c2 c2 输入 A 输出 A 65a 97 C语言程序设计第三章顺序程序设计 include includevoidmain floata b c disc x1 x2 p q scanf a f b f c f 输入 a 1 b 3 c 2 输出 x1 1 00 x2 2 00 通过本章的学习 基本掌握C语言中的基本数据类型 了解常量的表示方法 变量的定义及初始化 运算符与表达式的概念和基本应用 C语句分为控制语句 函数调用语句 表达式语句 空语句 复合语句等五种 C语言允许一行写几个语句 也允许一个语句拆开写在几行上 书写格式无固定要求 本章介绍的几种顺序执行的语句 在执行过程中不会发生流程的控制转移 本章介绍的四种输入输出库函数 是C语言中进行输入输出的最基本函数 掌握不好会浪费大量的调试程序的时间 这部分内容要在自学和在计算机上练习 应当通过编写和调试程序来逐步深入而自然地掌握输入输出的应用 本章小结 第4章选择结构程序设计 C语言程序设计第四章选择结构程序设计 关系运算符和关系表达式 逻辑运算符和逻辑表达式 if语句 switch语句 程序举例 选择结构是三种基本结构之一 其作用是 根据指定的条件所满足的情况转而执行相应的操作 C语言用关系表达式和逻辑表达式通过if语句实现双分支选择 用switch语句实现多分支选择 C语言程序设计第四章选择结构程序设计 4 1关系运算符和关系表达式 关系运算 即 比较运算 是对两个值进行比较 比较的结果是得到真假两种值 A 3 关系表达式 关系运算符 C语言程序设计第四章选择结构程序设计 关系运算符及其优先次序C语言提供6种关系运算符种类 结合方向 自左向右优先级别 大于 大于等于 等于 不等于 优先级6 高 优先级7 低 c a b c a b a b c a b ca bc a b c 关系表达式用关系运算符将两个表达式连接起来的式子 C语言程序设计第四章选择结构程序设计 关系表达式的值 是逻辑值 真 或 假 用1和0表示 a b a b b c 5 3 inta 3 b 2 c 1 d f a b a b cb cbf a b c 表达式值1 表达式值1 表达式值0 d 1 f 0 关系运算几点注意 C语言程序设计第四章选择结构程序设计 例5 2 7 8在C中是允许的 值为 0 例inti 1 j 7 a a i j 4 0 则a 2 例 a 0结果为 A 100结果为 1 0 结合方向自左至右 用ASCII值比较 关系运算中应该注意 C语言程序设计第四章选择结构程序设计 注意区分 与 inta 0 b 1 if a b printf aequaltob elseprintf anotequaltob 应避免对实数作相等或不等于0的判断如1 0 3 0 3 0 1 0可改写为 fabs 1 0 3 0 3 0 1 0 1e 6 4 2逻辑运算符和逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式 逻辑运算符 C语言提供3种逻辑运算符 C语言程序设计第四章选择结构程序设计 和 是双目运算符 是单目运算符 逻辑运算真值表 C语言程序设计第四章选择结构程序设计 例 优先次序 a b x y a b x y a a b 写成a b x y 写成a b x y 写成 a a b 逻辑运算符的优先次序 非 与 或 优先次序 高 2 11 12 低结合方向 从右向左从左向右从左向右 逻辑表达式 C语言程序设计第四章选择结构程序设计 C语言中 运算量 0表示 假 运算结果 0表示 假 非0表示 真 1表示 真 例a 4 b 5 aa ba b a b4 0 25 3 2 8 4 0 c d 值为1 值为0 值为1 值为1 值为1 值为1 5 3 2 8 4 0 值为1 逻辑运算中的注意点 短路特性 逻辑表达式求解时 并非所有的逻辑运算符都被执行 只是在必须执行下一个逻辑运算符才能求出表达式的解时 才执行该运算符 C语言程序设计第四章选择结构程序设计 若a 1 b 2 c 3 d 4 m 1 n 1 则 m a b n c d a b c 只在a为真时 才判别b的值 只在a b都为真时 才判别c的值a b c 只在a为假时 才判别b的值 只在a b都为假时 才判别c的值 结果m 0 n 1 复杂逻辑条件的表述判断某一年year是否为闰年 C语言程序设计第四章选择结构程序设计 判别闰年的条件 intyear 能被4整除 year 4 0能被4整除但不能被100整除 year 4 0 year 100 0 能被400整除 year 400 0综合起来 year 4 0 year 100 0 year 400 0 此表达式为真时是闰年 优化语句 year 4 0 year 100 0 year 400 0 4 3if语句 条件选择语句 If语句的三种形式形式一 格式 if 表达式 语句执行过程 C语言程序设计第四章选择结构程序设计 main intx y x 20 y 10 if x y printf d x 没有 C语言程序设计第四章选择结构程序设计 形式二 格式 if 表达式 语句1else语句2执行过程 main intx y x 20 y 10 if x y printf d x elseprintf d y C语言程序设计第四章选择结构程序设计 形式三 格式 if 表达式1 语句1elseif 表达式2 语句2elseif 表达式3 语句3 elseif 表达式m 语句melse语句n执行过程 例 if number 500 cost 0 15 elseif number 300 cost 0 1 elseif number 100 cost 0 075 elseif number 50 cost 0 05 elsecost 0 必须有 C语言程序设计第四章选择结构程序设计 几点说明 if后面的表达式类型任意 if后面的语句可以是复合语句 必须要加 if a b 考虑下面程序的输出结果 main intx y scanf d d CompileError 后没有 C语言程序设计第四章选择结构程序设计 includevoidmain inta b printf Enterintegera scanf d 例 输入两个数并判断两数是否相等 运行 Enterintegera 12 Enterintegerb 12 a b 运行 Enterintegera 12 Enterintegerb 9 a b C语言程序设计第四章选择结构程序设计 includevoidmain charc printf Enteracharacter c getchar if c 0 例 判断输入字符种类 运行 Enteracharacter Thecharacterisacontrolcharacter 运行 Enteracharacter 8 Thecharacterisadigit 运行 Enteracharacter D Thecharacterisacapitalletter 运行 Enteracharacter h Thecharacterisalowerletter 运行 Enteracharacter F1 Thecharacterisothercharacter C语言程序设计第四章选择结构程序设计 includevoidmain floata b t scanf f f 例4 1 输入两个实数 按由小到大的次序输出两数 输入 3 6 3 2 输出 3 20 3 60 C语言程序设计第四章选择结构程序设计 includevoidmain floata b c t scanf f f f 例4 2 输入三个数 按由小到大的次序输出 输入 3 7 1 输出 1 00 3 00 7 00 If语句的嵌套If语句中又包含一个或多个if语句称为if语句的嵌套 实际上只要将前述if语句的形式1和2中的内嵌语句用一个if语句代替 即成为if语句的嵌套 嵌套的if语句还可以嵌套另一个if语句 形成多重嵌套 一般形式 C语言程序设计第四章选择结构程序设计 if嵌套的几种变形 C语言程序设计第四章选择结构程序设计 注意 else总是与前面最近的if配对 必要时用 限定内嵌if范围 例 输入两个数并判断其大小关系 C语言程序设计第四章选择结构程序设计 includevoidmain intx y printf Enterintegerx y scanf d d Enterintegerx y 12 23 XYEnterintegerx y 12 12 X Y if else配对原则 缺省 时 else总是和它上面离它最近的未配对的if配对 C语言程序设计第四章选择结构程序设计 例考虑下面程序的输出结果 main intx 100 a 10 b 20 intv1 5 v2 0 if a b if b 15 if v1 x 1 elseif v2 x 10 x 1 printf d x 结果 1 C语言程序设计第四章选择结构程序设计 程序1 main intx y scanf d 程序2 main intx y scanf d 程序3 main intx y scanf d 输入 2得到 x 2 y 0 程序3改 main intx y scanf d 请考虑 y 1或y 0时 if语句应该如何写 什么情况下可以不要 条件运算符if语句中 当表达式为 真 和 假 时 都只执行一个赋值语句给同一个变量赋值时 可以用条件运算符处理 C语言程序设计第四章选择结构程序设计 表达式1 表达式2 表达式3 条件运算符是C语言中唯一的三目运算符 条件运算符练习 C语言程序设计第四章选择结构程序设计 例求a b printf a b d n b 0 a b a b 例 a b Y N x 2 1 1 0 x 0 x x c a c z c a A c 条件运算符几点说明 条件运算符可嵌套优先级 13结合方向 自右向左表达式1 表达式2 表达式3类型可以不同 表达式值取表达式2和表达式3中较高的类型 x a b x 0 表达式值为 b x 0 表达式值为 a x y 1 1 5 x y 值为1 0 x y 值为1 5 max a b a b max a b a b 嵌套 x 0 1 x 0 1 0 a b a c d c d a b a c d c d C语言程序设计第四章选择结构程序设计 例4 4输入一个字母 大写转小写 然后输出字母 includevoidmain charch scanf c 输入 A输出 a 4 4switch语句 多分支选择语句 一般形式 C语言程序设计第四章选择结构程序设计 switch 表达式e caseC1 语句1 break caseC2 语句2 break caseCn 语句n break default 语句n 1 break 执行过程 需要跳出switch语句时使用 switch几点说明C1 C2 Cn是常量表达式 且值必须互不相同常量表达式起语句标号作用 必须用break跳出case后可包含多个可执行语句 且不必加 switch可嵌套多个case可共用一组执行语句 C语言程序设
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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