




已阅读5页,还剩601页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计 大学计算机公共基础课 2 课程介绍 课程性质 大学计算机公共基础课 必修 课程内容C语言程序设计的基本方法和技巧预备知识 计算机基础 教材 C语言程序设计教程 汪同庆张华杨先娣主编机械工业出版社 C语言程序设计实验教程 汪同庆关焕梅汤洁主编机械工业出版社 C语言程序设计 3 授课计划 C语言程序设计 4 考试与考核办法 学分 3学分学时 72 讲课36 实验36 总评成绩 平时成绩 期末考试成绩 平时成绩 实验 单元测验 期末考试成绩 C语言程序设计 第一讲C语言概述 C语言程序设计 6 第一讲C语言概述 预备知识计算机组成和工作原理计算机语言和程序C语言的简史为什么学习和使用C语言C语言程序的开发过程C语言编程环境C语言编程实验环境 C语言程序设计 7 计算机 计算机 Computer 能进行计算和逻辑判断的设备在一组指令 instructions 程序 programs 的控制下处理数据硬件 Hardware 组成计算机的各种物理部件键盘 鼠标 显示器 内存 硬盘 光驱等等软件 Software 计算机中运行的程序和数据 C语言概述 8 计算机的组成 计算机包括六大部件输入单元 Inputunit 从输入设备 键盘 鼠标 获得数据输出单元 Outputunit 把数据输出到输出设备 显示器 打印机等 内存 Memoryunit 临时存储正在处理的数据和运行的程序可以快速地访问容量不大 C语言概述 9 计算机的组成 中央处理单元 Centralprocessingunit CPU 算术逻辑单元 Arithmeticandlogicunit ALU 进行算术运算和逻辑判断控制器 Controlunit 管理和协调计算机的其它部件辅助存储器 Secondarystorageunit 保存需长期存储的数据和非活动的程序保存时间长价格便宜 容量大例如硬盘 光盘 磁带 C语言概述 10 计算机的工作原理 六大部件紧密协作 C语言概述 11 计算机的工作原理 CPU负责执行程序从内存中读取一条指令执行该指令从内存中读取下一条指令并执行 一个主频为1GHz的CPU可以在一秒钟内进行大约一亿次这样的操作CPU有自己的工作区 包括若干个寄存器 Registers CPU只能理解有限的指令 CPU的指令集 指令能够完成的任务是具体的例如 把一个数从内存移动到某一个寄存器 C语言概述 12 计算机程序和语言 存储在计算机中的一切内容都是二进制的数字形式数据 数 字符 图片 声音 动画等等指令计算机程序确切告诉计算机如何完成某项任务的指令序列就是一套程序计算机语言用来编写程序 C语言概述 include includevoidmain floata b c p disc q x1 x2 scanf f f f 001100110011011001100110011011 13 机器语言 数字形式的指令码就是机器语言 Machinelanguage 用机器语言编写的程序能够被计算机直接理解和执行但是 编写程序非常费力例如 编写程序完成两个数相加的任务需要以下几步把地址为2000的内存单元中的数复制到寄存器1 把地址为2004的内存单元中的数复制到寄存器2 把寄存器2中的数与寄存器1中的数相加 结果保留在寄存器1中 把寄存器1中的数复制到地址为2008的内存单元中 C语言概述 001100110011011 14 汇编语言 符号化的指令码就是汇编语言 Assemblylanguage 例如 完成两个数相加的汇编语言程序汇编语言程序必须被翻译成机器语言程序才能被执行汇编程序 Assembler 充当 翻译 C语言概述 ldregn1 r1把变量n1的值复制到寄存器1 r1 ldregn2 r2把变量n2的值复制到寄存器2 r2 addr1 r2把r2中的数与r1中的数相加 结果保留在r1中 storer1 sum把r1中的数复制到变量sum 15 高级语言 高级语言 High levellanguage 使用数学符号和类似英语的单词例如 完成两个数相加的C语言程序从多方面提高了编程效率不必考虑CPU的指令集不必考虑CPU实现特定任务的精确步骤采用接近人类思考问题的方式去书写程序高级语言程序必须被编译程序 Compiler 翻译成机器语言程序才能被执行 C语言概述 sum n1 n2 16 C语言的简史 C语言的起源美国贝尔实验室的DennisRitchie在1972年开发的用于设计UNIX操作系统其前身是B语言 KenThompson于1970年为第一个UNIX系统开发的语言 C语言的标准美国国家标准化组织 ANSI 于1983年成立了一个委员会 X3J11 以确定C语言的标准 该标准 ANSIC 于1989年被正式采用 即C89 最新的标准是C99标准 目前 大多数C语言编译器没有完全实现C99的所有修改 C语言概述 17 为什么学习和使用C语言 C语言的特点C语言是一种强大而灵活的语言 可以用来编写任意复杂的程序 C语言简洁 紧凑 使用方便 灵活 C语言程序效率高 运行速度快 C语言是可移植的 C语言很适合结构化程序设计 因而要求用户以功能模块的方式来思考问题 C语言具有自我扩展能力 C语言概述 18 为什么学习和使用C语言 C与C C加加 see plus plus 贝尔实验室于二十世纪八十年代在C语言的基础上开发的 C 是C语言的超集 包含了C语言的所有内容 同时增加了面向对象编程方面的内容 C与Java 爪哇 Sun公司于1995年发布的面向对象编程语言 Java也是基于C语言的 C与C see sharp 微软在2000年6月与 NET平台一同推出 C 也是从C语言派生的一种面向对象语言 C语言概述 19 C语言程序的开发过程 一般分成五个步骤定义程序目标设计程序编写代码编译运行 测试和调试程序 C语言概述 20 C语言程序的开发过程 定义程序目标在开始解决问题之前 程序的开发人员必须彻底了解问题的是什么 对即将要创建的程序要做的事情有个清晰的想法 这需要仔细考虑以下问题程序需要什么信息程序需要执行哪些计算和操作程序应该报告什么信息例如 计算任意一个圆环的面积提出问题 明确目标圆环是什么 如何计算 计算精度 C语言概述 21 C语言程序的开发过程 设计程序决定程序如何去解决问题 需要考虑如何给程序提供必要的数据程序中如何表示数据用什么方法来处理数据程序如何组织程序怎样报告结果完成这个程序需要多长时间应该用一般的概念考虑设计中的问题 而不是考虑具体的代码 C语言概述 22 C语言程序的开发过程 编写代码编写代码来实现前面的设计 即用某一门语言来表示程序设计 需要开发人员熟练掌握该语言的知识 可以在草稿纸上勾画自己的想法或书写代码 但最终必须将代码输入计算机 输入代码所采用的机制则取决于具体的编程环境 一般来说 需要使用文本编辑器 例如Windows的记事本程序 来创建一种文件 称为源文件源文件包含程序设计的C语言表示形式 称为源程序或源代码 C语言概述 23 C语言程序的开发过程 编译把C语言源程序转换成机器语言表示的程序 这种程序可以直接被计算机理解和执行 所以称之为可执行程序 放在可执行文件中 编译的具体细节取决于使用的编程环境 C语言分两步完成这一工作 编译和链接 编译器将源代码转换为目标代码 并存在目标文件中 链接器将目标代码与其他代码结合起来生成可执行文件 这种把编译和链接分开来做的方法便于程序的模块化 可以分别编译程序的各个模块 然后用链接器把编译过的模块结合起来 这样 如果需要改变一个模块 则不需要重新编译所有其他模块 C语言概述 24 C语言程序的开发过程 运行 测试和调试程序运行包含可执行程序的文件 观察运行的结果 在不同的系统中运行程序的方式可能不同 例如 Windows的控制台和资源管理器 应该对程序进行仔细的检查 看程序是否在做该做的事 比较好的做法是为验证程序的正确性设计一个测试计划 越早做越好 因为它有助于理清程序员的思路 程序中的错误被称为bug 调试 Debug 就是要发现并修正错误 C语言概述 25 C语言的编程环境 开发程序的具体操作取决于使用的编程环境因为C语言是可移植的 所以它在许多环境中都是可用的 例如UNIX Linux Windows和MS DOS C语言编程环境包括一系列程序 编辑器编译器链接器运行和调试环境 C语言概述 26 C语言的编程环境 编辑器使用一个文本编辑器程序输入源代码 并将代码保存在源文件中 一般 C程序的源文件名称的扩展名是 c例如welcometoyou c和Hello c 该名称应该遵循特定的操作系统的命名规则 例如 MS DOS要求基本名包含的字符数不能大于8 所以welcometoyou c不是合法的DOS文件名 Windows允许长文件名 所以welcometoyou c是合法的Windows文件名 C语言概述 27 C语言的编程环境 编译器编译器接收源文件 生成目标文件 扩展名为 obj或 o 编译器还会检查输入的程序是否是有效的C语言程序 如果编译器发现错误 就会报告出错 且不能生成可执行程序 这时就必须修改错误 然后再编译 显然 为了能迅速找到错误 理解特定编译器的报错信息是一项有用的技能 C语言概述 28 C语言的编程环境 链接器目标代码虽然已经是机器代码 但还不能被执行 缺少下面两个东西启动代码 相当于程序和操作系统之间的接口 库函数的代码 库文件中包含许多函数的目标代码 链接器的作用就是将这三个元素 目标代码 启动代码和库代码 结合起来 并将它们放在一个文件中 即可执行文件 扩展名为 exe或 out C语言概述 29 Windows的C语言编程环境 Windows的C语言编程环境Windows并不包含C编译器 所以需要获得并安装一个C编译器 许多现代的编译器都是集成开发环境 或叫IDE 的一部分 包括一个编辑器 编译器 链接器和包括一个符号调试程序在内的运行支持系统 许多软件厂商都提供了基于Windows的集成开发环境Microsoft公司的VisualC C Borland公司的C C BuilderMetrowerks公司的CodeWarrior目前 大多数IDE把C和C 编译器结合在一起 C语言概述 30 DOS的C语言编程环境 DOS的C语言编程环境基于DOS的IDEBorland公司的TurboCBorland公司的BorlandC 许多Windows上的IDE也提供了在DOS命令行环境中编程的命令行工具 C语言概述 31 C语言编程实验环境简介 上机实验环境简介举例演示VisualC 6 0的基本操作启动创建源文件构建工程 编译 链接 运行程序 C语言概述 32 小结 C是一种通用的程序设计语言 具有许多突出的优点 程序设计的初学者应该严格按照C语言程序的开发过程进行训练 以便尽快掌握程序设计的基本原则 C是一种需要编译的高级语言 进行C语言编程的具体操作依赖于所使用的编程环境 程序设计是一门实践性很强的课程 在学习过程中必须十分重视实验环节 C语言概述 第二讲C语言快速入门 34 第二讲C语言快速入门 C语言程序的基本结构C语言的字符集和关键字VisualC 6 0编程环境 C语言程序设计 35 C语言程序的基本结构 一个简单的C语言程序问题 在屏幕上显示一行文字 HelloWorld 源程序运行结果 C语言快速入门 在屏幕上显示HelloWorld includevoidmain 定义主函数 printf HelloWorld n HelloWorld 36 C语言程序的基本结构 一个简单的C语言程序程序结构分析 C语言快速入门 在屏幕上显示HelloWorld includevoidmain 定义主函数 printf HelloWorld n 注释部分以增加程序的可读性 不被执行 37 C语言程序的基本结构 一个简单的C语言程序程序结构分析 C语言快速入门 在屏幕上显示HelloWorld includevoidmain 定义主函数 printf HelloWorld n 预处理命令程序中包含某一文件内容 stdio h 为标准输入输出函数头文件名 38 C语言程序的基本结构 一个简单的C语言程序程序结构分析 C语言快速入门 在屏幕上显示HelloWorld includevoidmain 定义主函数 printf HelloWorld n 函数C程序由函数组成 一个C程序有且仅有一个主函数 main函数 39 C语言程序的基本结构 一个简单的C语言程序程序结构分析 C语言快速入门 在屏幕上显示HelloWorld includevoidmain 定义主函数 printf HelloWorld n 函数说明说明函数类型 函数名和函数参数 40 C语言程序的基本结构 一个简单的C语言程序程序结构分析 C语言快速入门 在屏幕上显示HelloWorld includevoidmain 定义主函数 printf HelloWorld n 函数体包括变量说明和语句执行部分 41 C语言程序的基本结构 一个简单的C语言程序程序结构分析 C语言快速入门 在屏幕上显示HelloWorld includevoidmain 定义主函数 printf HelloWorld n 函数调用语句格式输出函数printf 输出 Helloworld HelloWorld 42 C语言程序的基本结构 含有算术运算的C语言程序问题 求方程的根 设 源程序 C语言快速入门 include includevoidmain floata b c p disc q x1 x2 scanf f f f 43 C语言程序的基本结构 含有算术运算的C语言程序程序结构分析 C语言快速入门 include includevoidmain floata b c p disc q x1 x2 scanf f f f 预处理命令 44 C语言程序的基本结构 含有算术运算的C语言程序程序结构分析 C语言快速入门 include includevoidmain floata b c p disc q x1 x2 scanf f f f 函数一个主函数 main函数 45 C语言程序的基本结构 含有算术运算的C语言程序程序结构分析 C语言快速入门 include includevoidmain floata b c p disc q x1 x2 scanf f f f 函数说明部分 46 C语言程序的基本结构 含有算术运算的C语言程序程序结构分析 C语言快速入门 include includevoidmain floata b c p disc q x1 x2 scanf f f f 函数体变量说明部分执行部分 47 C语言程序的基本结构 含有算术运算的C语言程序程序结构分析 C语言快速入门 include includevoidmain floata b c p disc q x1 x2 scanf f f f 运行程序键盘输入a b c的值 屏幕显示x1和x2的值 10 4x1 2 000000 x2 2 000000 48 C语言程序的基本结构 包含多个函数的C语言程序问题 求 a b 的值 源程序 C语言快速入门 includefloatabsv floatx floaty y x 0 x x returny voidmain floata b c printf inputa b n scanf f f 49 C语言程序的基本结构 包含多个函数的C语言程序程序结构分析 C语言快速入门 includefloatabsv floatx floaty y x 0 x x returny voidmain floata b c printf inputa b n scanf f f 程序由两个函数组成 absv函数main函数 50 C语言程序的基本结构 包含多个函数的C语言程序程序结构分析 C语言快速入门 includefloatabsv floatx floaty y x 0 x x returny voidmain floata b c printf inputa b n scanf f f 调用absv函数求绝对值 51 C语言程序的基本结构 包含多个函数的C语言程序程序结构分析 C语言快速入门 includefloatabsv floatx floaty y x 0 x x returny voidmain floata b c printf inputa b n scanf f f 运行程序屏幕显示提示信息 键盘输入a b的值 屏幕显示a b绝对值之和 inputa b 513 a b 18 000000 52 C语言程序的基本结构 C语言程序的基本结构小结 C语言快速入门 一个C程序由一个或多个函数组成 但有且仅有一个主函数 main函数 main函数是程序执行的入口 可置于程序的任何位置 程序中可以有预处理命令 如 include命令 预处理命令通常放在程序的最前面 每个语句以分号结尾 预处理命令 函数头和花括号 之后不能加分号 函数包括函数的说明部分和函数体 函数体包括变量说明部分和执行部分 函数体由一对花括号 括起来 括在 内的文本为注释 一行可以写几个语句 一个语句也可以写在多行上 程序区分大小写字母 一般变量 语句等用小写字母书写 符号常量 宏名等用大写字母书写 标识符和保留字之间须加空格以示分隔 53 C语言的字符集 C语言源程序中使用的字符来自C语言的字符集 字符集 Characterset 来自ASCII表52个大小写字母 Letters ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz10个数字 Digits 0123456789空白符 Blanks 空格符 制表符 回车符 换行符图形符号 Graphiccharacters C语言快速入门 54 C语言的关键字 关键字 Keywords 是C语言中的词汇 也称为保留字 Reservedwords 类型说明int long short float double char unsigned signed const void volatile enum struct union语句定义if else goto switch case do while for continue break return default typedef存储类别说明auto register extern static长度运算符sizeof C语言快速入门 55 C语言的标识符 标识符 Identifiers 是程序中引用对象的名称 用来标识变量 符号常量 数组 函数 结构体 共用体 自定义类型等 命名规则只能包括大小写字母 数字和下划线 首字符必须是字母或下划线 一般内部标识符的前31个字符有效 而外部标识符的前6个字符有效 视具体编译器的规定 不能与关键字相同 C语言快速入门 56 VisualC 6 0编程环境 举例演示VisualC 6 0的基本操作创建工作区创建工程 程序 并添加到工作区创建源文件并添加到工程构建工程 编译 链接 运行程序 C语言快速入门 57 程序的测试与调试 程序错误语法错误未遵循C的语法规则 编译器可以检查 运行时错误在程序运行时执行了无法处理的操作 逻辑错误程序不能按照预期的方式运行 不能产生预期的结果 C语言快速入门 58 程序的测试与调试 程序测试审查和运行程序 检测程序是否存在错误 测试步骤在编译前仔细检查程序的源代码 看看是否有明显的错误 查看编译器发现的语法错误 对于运行时错误和逻辑错误可以采用正确输出测试 想找出所有错误是不切实际的 C语言快速入门 59 程序的测试与调试 程序调试隔离和修正错误 调试方法采用手工方式来跟踪程序 在程序中的关键点放置输出语句来显示变量的值 使用调试器 C语言快速入门 60 小结 C程序的基本结构C语言程序是由一个或多个函数组成的 函数可以是标准库函数和自定义的函数 C语言的语句可以包含一个表达式 也可以包含一个函数调用 以一个分号作为结束标志 C语言中的变量在使用之前必须先声明 通过声明语句中为变量指定一个名字和数据类型 可以通过赋值运算改变变量的值 C语言可以使用scanf 函数和printf 函数输入和输出数据 C语言快速入门 61 小结 编译器可以发现程序中的语法错误 但是程序中的运行时错误和逻辑错误只有在程序运行时才表现出来 检测运行时错误和逻辑错误的一种简单实用的方法是跟踪程序的运行状态 即程序每执行一步之后所有或主要变量的值 C语言快速入门 第三讲基本数据类型 63 第三讲基本数据类型 引例变量与常量预备知识内储存器的组织数据类型基本数据类型整数类型字符浮点类型 C语言程序设计 64 引例 引例问题计算任意一个圆的面积 源程序 cw02 01 c 基本数据类型 includevoidmain floatr area 定义变量scanf f 输出 1area 3 140000 area r area r2 65 变量与常量 数据 Data 程序需要使用数据 数据是信息的载体 数据有多种形式 数 字符 图片等 常量 Constants 在程序运行之前可以预先设定 并在整个运行过程中没有变化的数据 例如引例中的圆周率3 14 变量 Variables 在程序运行过程中可能变化或被赋值的数据 例如引例中的半径和面积 基本数据类型 66 数据类型 数据类型的作用决定数据的存储方式和占用的存储空间的大小 决定可以进行的操作 C语言的数据类型基本类型整型 integer 字符型 character 浮点型 floating point 枚举类型 enumeration 构造类型结构体 structure 共用体 union 数组 array 指针类型 pointer 空类型 void 基本数据类型 67 位 字节和字 内存储器的组织 基本数据类型 位 bit 最小的存储单位 可以容纳两个值之一 即0或1 2000 2001 2002 字节 Byte 基本的存储单位 8位 字 word 自然的存储单位 包含若干个字节 例如32位机的一个字就是32位 地址 以字节为单位从0开始编号 68 整数的存储方式 有符号的正整数在内存中以二进制补码形式存放 正整数的补码与原码相同 例如 10 基本数据类型 符号位 数轴 0 215 1 32767 可表示的数的范围 215 32768 69 整数的存储方式 有符号的负整数在内存中以二进制补码的形式存放 例如 10 基本数据类型 符号位 70 整数的存储方式 无符号整数所有二进制位都存放数值 例如 65535 基本数据类型 0 216 1 65535 可表示的数的范围 71 整数的类型 C语言提供多种整数类型为程序员提供了针对不同用途的多种选择 基本数据类型 C标准只规定 short int long最大最小值参考 仅供参考 实际值与所使用的操作系统 编译系统 机器有关 72 整型常量 整型常量有三种形式 十进制 decimal 整数126565535八进制 octal 整数 带前缀0 zero 01401010177777十六进制 hexadecimal 整数 带前缀0 x或0X0 xc0 x410 xffff默认类型是int 即有符号的基本整型 可以加上后缀u或U表示无符号整数 或者l或L表示长整数 0 xb5Lu 基本数据类型 73 整型变量 声明变量 Declaration 变量在使用之前必须被声明 声明语句的格式 举例 基本数据类型 intcounter intwidth height shortx y longnumber 变量声明创建了变量 为变量分配了存储空间 height 74 整型变量 初始化 Initialize 变量为变量赋一个初始值 可以在声明语句中初始化变量 举例变量获得值的方法直接赋值输入初始化 基本数据类型 intcounter 0 intwidth 352 height 288 初始化式 288 height 75 整型变量 输出变量的值可以使用printf 函数 与int类型对应的格式说明符是 d 举例 cw02 02a c 基本数据类型 includevoidmain inta b a 32767 b 32768 printf a d b d n a b a 32767 b 32768 76 整数的溢出 溢出整数太大 超出了整数类型的数值范围 使用printf 时与unsignedint类型对应的格式说明符是 u 举例 cw02 02b c 基本数据类型 includevoidmain inta b unsignedc d a 2147483647 b a 1 c 4294967295 d c 1 printf a d b d n a b printf c u d u c d a 2147483647 b 2147483648c 4294967295 d 0 77 整数的溢出 溢出结果分析结论a 1的结果 2147483648 超出了基本整型变量b所能容纳 表示 的数值范围 2147483648 2147483647 请分析d的结果 基本数据类型 01111111 1111111 10000000 0000000 a 2147483647 10000000 0000000 a 1 2147483648 b 2147483648 12 加正数 减正数 78 字符的存储方式 字符编码计算机使用一种数字编码 整数 来表示字符 每一个字符都对应一个特定的整数 常用的编码是ASCII 美国信息交换用标准码 7位二进制数 十进制码值范围从0到127 一般用一个字节保存 最高位为0 字符的存储方式与整数相同举例字母A的ASCII码值为65 那么在内存中以65的二进制形式存储 且占一个字节 基本数据类型 79 字符的类型和字符变量 C语言的字符类型 char占一个字节 可视为一个有符号的整数 举例 cw02 03 c 基本数据类型 includevoidmain charc1 c2 声明字符变量c1 97 把一个整数赋值给字符变量c2 c1 32 字符变量可以进行算术运算printf c1 c c2 c n c1 c2 printf c1 d c2 d n c1 c2 c1 a c2 Ac1 97 c2 65 80 字符常量 字符常量用单引号括起来的一个字符 x 9 C语言将字符常量视为int类型 举例 cw02 04 c 如果int类型为16位 char类型为8位 那么对于 bc 将把 b 和 c 的ASCII码值存储在两个字节中 并把 c 赋值给变量c2 注意 不同系统处理方式不同 结果不同 基本数据类型 charc1 c2 c1 a c2 bc 01100001 c1 01100011 c2 01100011 01100010 bc L H 97 99 99 98 81 字符常量 转义字符 escapecharacter 指代一些特殊的字符 打印不出来的字符 举例 cw02 05 c 基本数据类型 a警报 反斜杠 b退格 问号 f走纸 单引号 n换行 双引号 r回车 ooo八进制值 o表示一个八进制数字 t水平制表符 xhh十六进制值 h表示一个十六进制数字 v垂直制表符 includevoidmain printf a tb nc bd 100 x40 n a bd 82 浮点数的存储方式 浮点数浮点型数据在内存中按指数形式存放 例如 314 15 3 1415 102 基本数据类型 由此可见 尾数部分的宽度决定了有效数字的个数 即精度 阶码部分的宽度决定了数值范围 科学计数法允许使用少量的数字表示很大范围的数和很小的数 83 浮点数的类型 浮点数也有多种类型类型名称及典型大小 基本数据类型 S 1参考 仅供参考 实际值与所使用的操作系统 编译系统 机器有关 数轴 0 可表示的正数 可表示的负数 84 浮点型常量 浮点型常量有两种形式 十进制形式12 3 650 指数形式 1 2e 2 1E57E01 2 10 20 1 1057 0 100默认类型是double 可以加上后缀f或F表示float类型 或者l或L表示longdouble类型 否则该常量是double类型 2 3f1 2L 1E5f 基本数据类型 85 浮点型变量 浮点型变量的声明和初始化举例 基本数据类型 floatradius doublex 0 0 y 0 0 不能写成 doublex y 0 0 86 浮点型变量 浮点数的输出使用printf 函数float和double对应的格式说明符为 f e 举例 cw02 06 c 基本数据类型 includevoidmain floatf doubled f 33333 33333f d 33333 3333333333 printf f f nd f f d f 33333 332031d 33333 333333 有效数字位数是有限的 在可表示的有效位之外的数字被舍去 因此可能会产生误差 87 浮点数的舍入误差 浮点数的舍入误差举例 cw02 07 c 基本数据类型 includevoidmain floata b a 123456 789e5 b a 20 printf a f nb f a b a 12345678848 000000b 12345678848 000000 88 浮点数的舍入误差 浮点数的舍入误差结果分析 基本数据类型 a 123456 789e5 b a 20 a 20的理论值应该是 12345678920但是 一个实型变量能够保证的有效数字是7位 后面的数字将被舍去 是没有意义的 因此 最后得到b 12345678848 000000 应当避免一个很大的数和一个很小的数直接相加或相减 否则就会 丢失 较小的数 89 浮点数的溢出 上溢举例 cw02 08 c 若某系统中的最大float值为3 4e38 进行如下操作得到结果下溢举例 假设 10是最小的指数 能够保留四位有效数字如果把数0 1234e 10除以10 将得到结果0 0123e 10 但损失了一位有效数字 基本数据类型 floattoobig 3 4e38 100 0f printf toobig f toobig inf 无穷大 infinity 90 小结 C语言有多种数据类型 基本的数据类型包括两大类 整数类型浮点类型开发程序时 应当注意所需变量及其类型的选择 一般使用int和float表示数 用char表示字符 在使用变量的函数的可执行语句之前声明该变量 并为它选择有意义的名字 初始化变量使用的常量应当与变量的类型相匹配 基本数据类型 第四讲输入输出和库函数 92 第四讲输入输出和库函数 引例字符串常量符号常量格式化输入输出字符输入输出库函数 C语言程序设计 93 引例 引例问题 计算任意一个球体的体积 源程序 cw03 01 c 输入输出和库函数 include include definePI3 14159 定义符号常量voidmain doubler volume printf Pleaseinputtheradiusofaball scanf lf 按格式输出 Pleaseinputtheradiusofaball 1Volume 4 18879 volume 4 3 r3 94 字符串常量 字符串常量用双引号括起来的字符序列 thisisastring x 12345 字符串常量的存储方式字符串中的字符存放在相邻的存储单元中 每个字符占用一个单元 在最后加上一个空字符 0 作为结束标识符 举例 输入输出和库函数 每个字符占一个字节 结束标记 95 字符串常量 字符串常量和字符常量的区别字符 x 是基本型数据 字符串 x 是构造型数据 占用的存储空间大小不同 输入输出和库函数 96 符号常量 符号常量符号常量是用一个标识符表示的常量 定义规则 define举例 输入输出和库函数 defineMAXSIZE20 defineWELCOME Welcometoyou definePI3 14 编译预处理器将会用3 14替换以后出现的PI标识符 97 符号常量 为什么需要符号常量名字比数字包含的信息多 便于维护如果需要在多个地方用到同一个常量 而且必须改变它的值 则只需要修改其符号常量的定义 另一种定义符号常量的方法使用const把一个变量声明转换成常量声明 举例 输入输出和库函数 constintMAX NUMBER 30 MAX NUMBER是只读的 98 输入输出 输入输出是以计算机主机为主体而言的 输出 Output 从主机向外部输出设备输出数据 输入 Input 从外部通过输入设备向主机输入数据 输入输出和库函数 输入 输出 99 输入输出流 流 stream 按直线排列的字符序列每个序列包括0个或多个字符 并用换行符结尾ANSIC支持至少254个字符的序列所有的输入 输出都是用流来进行的 输入输出和库函数 100 标准输入输出流 开始执行程序时 3个流自动连接到程序上标准输入流 standardinput 对应的源端设备 keyboard标准输出流 standardoutput 对应的目的端设备 screen标准错误流 standarderror 对应的目的端设备 screen操作系统允许这些流重定向到其它设备 输入输出和库函数 typemyprog c prn 输出重定向符 myprog data txt 输入重定向符 101 输入输出函数 C语言中数据的输入 输出是由函数来实现的 字符输入函数 getchar 字符输出函数 putchar 格式输入函数 scanf 格式输出函数 printf 它们都属于标准输入输出库函数 其原型 prototype 都在stdio h头文件 headerfile 中 输入输出和库函数 102 字符输入输出 putchar 函数getchar 函数使用说明程序中必须包含stdio h头文件 输入输出和库函数 include 103 字符输出 putchar使用形式putchar character 向标准输出流输出一个字符character使用说明character可以是以下数据 字符型数据整型数据转义字符 输入输出和库函数 104 字符输出 举例 cw0302 c 输入输出和库函数 includevoidmain chara intb a B b 79 putchar a putchar n putchar b putchar n putchar Y BOY 105 字符输入 getchar使用形式variable getchar 从标准输入流读取一个字符 使用说明只读取一个字符 该字符可赋给字符变量 整型变量或作为表达式的一部分 输入输出和库函数 106 字符输入 举例 cw0303 c 输入输出和库函数 includevoidmain charc c getchar putchar c aa abca 989 1 2 3 107 格式输入输出 printf 函数scanf 函数使用说明程序中可以不明确指定包含stdio h头文件 输入输出和库函数 include 可以省略此命令 108 格式输出 printf使用形式printf 按格式控制字符串规定的格式 向指定的输出设备输出输出列表中的输出项 使用说明格式控制字符串由双引号括起来的字符串 用于指定输出格式输出列表需要输出的数据列表 彼此间用逗号分隔输出项可以是任意合法的表达式 输入输出和库函数 109 格式输出 格式控制字符串举例 输入输出和库函数 printf n 5d f 5 2f n 3 6 235 普通字符原样输出 格式说明符 转换规则 修饰符 格式字符指定数据的输出格式 n 3 f 6 24 110 格式输出 格式字符 输入输出和库函数 111 格式输出 格式修饰符 输入输出和库函数 112 格式输出 格式说明符小结 输入输出和库函数 要输出 就用 113 格式输出 举例 cw0304 c 输入输出和库函数 voidmain inta 97 b 1 floatf 123 4 printf d c n a a printf d o x u n b b b b printf f e gEND f f f 97 a 1 177777 ffff 65535123 400002 1 234000e 02 123 4END 11111111 11111111 BC 114 格式输出 举例 cw0305 c 输入输出和库函数 voidmain inta 1 b 2 c 3 printf d d d d n a b c printf d d d n a b c a b c 1 2 3 8981 2 3 格式说明符和输出项在数量和类型上应该一一对应 115 格式输入 scanf使用形式scanf 按格式控制字符串规定的格式 从指定的输入设备读入数据 并存放到地址列表中的各地址项指定的变量中使用说明格式控制字符串由双引号括起来的字符串 用于指定输入格式地址列表由若干个变量的地址组成 输入输出和库函数 116 格式输入 地址列表取地址运算符 得到变量在内存中的地址 输入输出和库函数 scanf d d a b 117 格式输入 格式字符 输入输出和库函数 118 格式输入 格式修饰符 输入输出和库函数 119 格式输入 格式说明符小结 输入输出和库函数 120 格式输入 举例 cw0306 c 输入输出和库函数 voidmain chara b c scanf c c c abca a b b c c abca a b c b abca a b c b aba a b c b 1 2 3 4 用c格式字符输入字符时 若格式控制字符串中无普通字符 那么认为所有输入的字符 包括空格 制表符 换行符 均为有效字符 121 格式输入 输入过程分析 输入输出和库函数 ab2 3 4 输入缓冲区 scanf getchar 输入流 输入流 122 格式输入 用c格式字符输入字符时 若格式控制字符串中加入空格作为分隔符 那么输入时各数据之间可以加任意多个空格 制表符或回车符 例 scanf c c c 输入 abc 则a a b b c c在下列情况下可认为数据输入结束 遇到空格 回车 制表符按指定的宽度结束遇非法输入 输入输出和库函数 123 数学库函数 使用标准库中的数学函数包含数学函数库的头文件 include常用的数学函数的原型intabs intn doublefabs doublex doublepow doublex doubley doublesqrt doublex 使用举例intn abs 21 doublev pow r 3 0 输入输出和库函数 124 小结 C语言中的字符串常量C语言中的符号常量C语言中常用的输入输出函数使用标准库中的数学函数 输入输出和库函数 第五讲运算符和表达式 126 第五讲运算符和表达式 引例算术运算符运算符的优先级和结合性类型转换自增自减运算符逗号运算符 C语言程序设计 127 引例 引例问题输入一个四位的正整数 反序输出该四位数的四个数字字符 设计用一个无符号整型变量number保存输入的四位正整数 依次分解出个位数字 十位数字 百位数字和千位数字 并分别放到字符变量c1 c2 c3和c4中 怎么分解 利用除法 取模等运算 顺序输出变量c1 c2 c3和c4中的字符 运算符和表达式 128 引例 引例源程序 cw04 01 c 运算符和表达式 includevoidmain unsignednumber charc1 c2 c3 c4 printf 请输入一个四位的正整数 scanf u 请输入一个四位的正整数 12344321 129 算术运算符 常用的算术运算及运算符说明取模运算 结果是两个整数相除的余数 例如 7 5 2 2 3 2 运算符和表达式 130 算术运算符的优先级和结合性 运算符的优先级某些运算符先于其他运算符被执行 例如 x y 4 先乘除后加减 必要时可以用圆括号 改变计算顺序 例如 求三个数的平均值 错误的写法 a b c 3正确的写法 a b c 3运算符的结合性当出现并列的运算优先级别相同的运算符时 由运算符的结合性决定计算的次序 例如 x y z 运算符和表达式 131 算术运算符的优先级和结合性 常用的算术运算符的优先级和结合性 运算符和表达式 132 算术表达式 算术表达式算术表达式 是由算术运算符和括号将运算对象 也称为操作数 连接起来的式子 运算对象包括常量 变量 函数等 举例 运算符和表达式 7 5x y z f1 2 f2 0 5sqrt a sqrt b 表达式有自己的值 计算结果 其值的类型就是表达式的类型 133 算术表达式 举例 cw0402 c 运算符和表达式 includevoidmain doublef1 doublef2 f1 1 3 f2 1 0 3 0 printf f1 f nf2 f n f1 f2 f1 0 000000f2 0 333333 整数相除结果还是整数 134 类型转换 在算术表达式中允许不同类型的数据参与运算 例如 10 a 1 5 65 4 b 在进行运算时 不同类型的数据要先转换成同一类型 然后进行运算 转换方式有两种 自动转换 数据类型自动由低级向高级转换 强制转换 将表达式的值强制转换成指定的数据类型 运算符和表达式 135 自动类型转换 这种类型转换由编译系统自动完成 转换规则 运算符和表达式 说明 1 横向的箭头表示必做的转换 2 纵向的箭头表示当运算对象类型不同时转换的方向 136 强制类型转换 类型转换运算符 将一个表达式的值转换成指定的类型 属单目运算符 优先级 2 结合性 从右往左 举例 double a int x y int x y float 5 3 1 0 运算符和表达式 137 类型转换 下面表达式的类型是什么 10 a 1 5 87 1 b 举例 cw0403 c 运算符和表达式 includevoidmain doublef inti f 3 6 i int f printf f f ni d n f i f 3 600000i 3 f的类型并未因此而改变 138 赋值运算 赋值运算符简单赋值运算符 复合赋值运算符 优先级 14结合性 从右往左赋值表达式d 23作用 将表达式的值赋给变量 赋值表达式的值就是被赋值的变量的值 运算符和表达式 139 简单赋值运算 简单赋值运算符 举例类型转换如果赋值运算符右边表达式的类型与左边变量的类型不一致 则把右边表达式值的类型按左边变量的类型进行转换 然后再赋值 例如 intn 3 6 n的值为3 运算符和表达式 c a ba b c d 10 x a 5 b 8 a a b a b c d 10 a 5 b 8 x a b 140 复合赋值运算 复合赋值运算符 简化了赋值表达式 由下面的表达式简化而来 举例 运算符和表达式 a 5x y 7x x x x a a 5x x y 7 x x x x x x x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年环保行业绿色环保技术应用前景研究报告
- 嵊泗县2025浙江舟山市嵊泗县事业单位紧缺专业人才招聘15人笔试历年参考题库附带答案详解
- 山东省2025年山东聊城经济技术开发区事业单位公开招聘教师(16人)笔试历年参考题库附带答案详解
- 姚安县2025云南楚雄州姚安县农业农村局农业紧缺专业技术人才招聘4人笔试历年参考题库附带答案详解
- 呼伦贝尔市2025内蒙古呼伦贝尔市陈巴尔虎旗“就在北疆”“职引未来”高校毕业生退役笔试历年参考题库附带答案详解
- 南昌市2025江西南昌市劳动保障事务代理中心招聘劳务派遣人员1人笔试历年参考题库附带答案详解
- 云南省2025云南文山州丘北县事业单位紧缺岗位第二次招聘(7人)笔试历年参考题库附带答案详解
- 上海市2025上海华东师范大学法学院财务秘书招聘1人笔试历年参考题库附带答案详解
- 2025重庆机电控股集团机电工程技术有限公司招聘市场营销安全员等岗位共11人笔试参考题库附带答案详解
- 卸车工安全培训课件
- 农业现代化种植技术培训课件
- 中城汽车(山东)有限公司审计报告
- 大学博士竞赛试题及答案
- 钢结构彩钢瓦施工工艺与技术交底
- 2025版煤矿安全规程宣贯培训课件
- 梁启超家教家风课件
- DB31∕T 1545-2025 卫生健康数据分类分级要求
- 大学生创新创业基础(创新创业课程)完整全套教学课件
- 初中毕业证在哪里查询
- 名词语法讲解
- GB/T 5796.4-2022梯形螺纹第4部分:公差
评论
0/150
提交评论