C语言程序设计课件.ppt_第1页
C语言程序设计课件.ppt_第2页
C语言程序设计课件.ppt_第3页
C语言程序设计课件.ppt_第4页
C语言程序设计课件.ppt_第5页
已阅读5页,还剩271页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计 教材分析 本书内容共有11章 可分为三部分 第1 2章为第一部分 为初学者的入门知识 使读者对c语言编写程序的步骤 方法和程序结构及算法描述有一个大致的了解 第3 第5章为第二部分 是程序设计的基础部分 使读者详细了解c语言的基本数据类型和表达式以及c语言的控制结构 掌握了第一 二部分的内容 读者可以完成简单的程序设计 第6章 第11章为第三部分 讲述了模块化程序设计的概念和实现的方法 为程序设计提供了更多 更方便的途径 为进行综合程序设计奠定了基础 每一个章节里都有详细的程序范例来说明程序的设计思想 语句的概念 作用 含义和使用方法 使学生能够由浅入深系统地学习c语言的知识 同时掌握一定的编程方法 成绩考核 成绩考核方法 期末成绩 平时成绩20 期末考试80 注 平时成绩包括 上课情况 作业情况 上机作业完成情况等 学习C的忠告 上机实践 编程 Try C语言程序设计教程 第1章引言第2章程序的简单算法制定第3章基本程序语句第4章选择结构第5章循环结构第6章函数与编译预处理第7章数组第8章指针第9章构造数据类型第10章文件第11章位运算 C语言程序设计 课程的任务 1 指导学生掌握C程序设计语言的基础知识 2 培养学生综合分析并编制程序解决实际应用问题的能力 3 培养学生契而不舍的解决问题的精神以及认真的学习态度 通常我们把设计 书写及检查调试程序的过程称为程序设计 应当指出 简单的程序设计应包括以下几个部分 确定数据结构确定算法编写代码调试并运行整理并写出文档资料 第一章引言 1 1C语言的特点1 2简单的C语言程序介绍1 3C语言程序的结构1 4C程序设计语言的执行 1 1C语言的特点 C语言有9种控制语句 32个关键字 运算符丰富 共有34种运算符数据结构类型丰富 具有结构化的控制语句语法限制不太严格 程序设计自由度大 C语言允许直接访问物理地址 能进行位操作 可以直接对硬件进行操作 生成目标代码质量高 程序执行效率高 C语言编写的程序可移植性好 1 2简单的C语言程序介绍 ex101 c 在屏幕上输出ThisisaCprogram includevoidmain printf ThisisaCprogram n 注释 ex101 c 在屏幕上输出ThisisaCprogram C程序中的 之间的内容称为注释 是程序编写者给程序阅读者留下的一些说明 注释 以帮助阅读者理解程序 编译器不对注释进行编译 只将它们当作空白看待 本程序的第1行中的注释为 ex101 c 是说明本书编写时将这个程序保存在文件ex101 c中 库函数与文件包含命令include include 库函数 系统提供的标准函数 程序可直接使用 使用库函数必须将其有关说明信息写入程序 为了用户方便 系统定义库函数时 把一类相关库函数的说明信息 分别写在一些文件中 本例中使用了库函数printf 其有关说明信息写在文件stdio h中 所以在程序的开始加入了 include使用C语言的库函数 要在程序前面加上类似 include的预处理命令 main函数 任何C程序都必须有且只能有一个主函数main 它是程序的入口 也是程序的出口 其中 main是函数名 内可以包含一些参数 的内容称为函数体 其包含若干条C程序语句 不同语句之间用分号分隔 一般情况下 每个程序都由一至多个函数组成 voidmain printf ThisisaCprogram n 演示ex101 语句printf ThisisaCprogram n C语言的主函数体由一些语句组成 每个语句由一个分号结束 如本例中 主函数的一个语句 printf ThisisaCprogram n 说明 函数printf是系统提供的一个库函数 printf函数的功能是向显示器输出一段信息 具体内容括在双引号内 参数中的 n 代表一个命令 输出完这行字符后换行 不是要求显示的文字 例2写出以下程序的运行结果 写出以下程序的输出结果 includevoidmain printf Hello n printf world n 演示ex102 例3四则运算编程 includeintadd intx inty main inta b c scanf d d 演示ex103演示ex104讨论减 乘 除的编程 输入函数Scanf 函数说明 函数定义 1 4C程序设计语言的执行 对于C语言程序来说 这一过程一般分为4步 第1步 编辑源程序 第2步 编译 第3步 链接 第4步 执行 整个过程如下图 filename c filename obj filename exe 出错 出错 出错 出错 调试debug 编译 编译就是把用C语言描述的程序翻译成计算机可以直接理解并执行的机器语言命令组成的程序 C语言的编译过程分为两个阶段 首先是编译预处理 系统要先扫描程序 处理所有预处理命令 如把文件包含命令要求的文件包含 嵌入 到程序中 然后才开始编译 编译后得到的文件称为目标文件 目标文件就是用机器语言描述的文件 C语言的目标文件的后缀为 obj 目标文件的主文件名 一般与源程序文件名相同 在编译过程中 还要对源程序中的语法和逻辑结构进行检查 编译任务是由称做编译器 compiler 的软件完成的 程序在编译过程中 也可能发现错误 这时要重新进入编辑器进行编辑 链接 链接是将与当前程序有关的 已经有的几个目标模块链接在一起 形成一个完整的程序代码文件 这些已经有的目标模块有 库函数 如前面使用的printf 对于大的程序 常常分成几个模块 分别编写 编辑和编译 形成不同的目标模块 经正确链接所生成的文件才是可执行文件 可执行文件的文件名后缀为 exe 有的系统为 out 完成链接过程的软件称为链接器 linker 程序在连接过程中 也可能发现错误 这时也要重新进入编辑器进行编辑 执行 链接后得到的可执行文件名 对操作系统来说 相当于一条命令 在操作系统提供的命令界面上打入这个命令 就可以开始执行这个程序 C语言的集成开发环境 Turboc2 0Turboc 选用 Vc 等 1 打开Turboc 运行环境 界面如图 从图可以看到在集成环境的上部 有一行 主菜单 其中包括下面10个菜单项 FileEditSearchRunCompileProjectOptionsDebugWindowHelp分别代表 文件操作 编辑 查找 运行 编译 项目文件 选项 调试 窗口 帮助等功能 用户可通过以上菜单项来选择使用TurboC集成环境所提供的各项主要功能 2 编辑源程序 在File菜单下选择NEW子菜单项命令 系统的光标处于等待输入C源程序状态 输入完源程序后 选择File菜单下选择Saveas子菜单项命令进行保存 在随后弹出的保存文件对话框中 输入文件名 c后按 3 编译源程序选择Compile主菜单项并在其下拉子菜单中选择Compile命令 则进行编译 若源程序无语错误 生成可执行文件EXE 若源程序有语法错误 在Message窗口显示错误信息 此时没有生成可执行文件 应回到第2步 修改程序的错误 直到无语法错误 生成可执行文件 返回 4 连接程序在Compile菜单中 选择Link子菜单项命令 程序将被连接成可执行程序 注 按F9键 可一次完成编译和连接 5 执行程序 选择Run子菜单命令 或按快捷键Ctrl F9 6 看结果 程序运行后看结果必须选择File菜单下的DOSShell命令或者按快捷键Alt F5 才能看到运行的结果 如程序未得到预期的结果 应回到第2步 修改程序的错误 7 退出TurboC File Quit菜单命令或按Alt X 总结 简单C语言程序设计步骤 分析问题 设计解决方案了解和编写C语言程序代码 上机调试 编辑 编译 链接 执行 理论课的主要内容 实验课的主要内容上述每个步骤都可能出现很多错误 具体有三种错误 语法错误 逻辑错误 运行错误 总之 出现错误就要进行调试 作业 1 在屏幕上输出如下图形 25 要求 写出程序 并上机调试 尽量保证程序能够得到正确结果 复习本讲内容 第一章 预习教材第二章 第二章程序的简单算法制定 2 1结构化程序的算法制定2 2结构化程序的算法描述2 3算法制定的范例 2 1结构化程序的算法制定 利用计算机处理问题简述 2 1结构化程序的算法制定 例2 1从键盘输入3个数 找出其中最小的那个数 分析 1 需变量的个数 3个2 先比较a b的值 把小的存在min中 3 再用min与c比较 把数值小的存放在min中 如果a b则min a 否则min b 如果c min则min c 否则不变 画出对应的流程图 演示程序ex201 例 让某学生解方程ax2 bx c 0求解过程 分析问题这是一个一元二次方程 代数问题 须中学代数知识 确定处理方案用求根公式 确定解题步骤确定a b c的值求出b2 4ac的值如果b2 4ac 0 双实根 X1 X2 如果b2 4ac 0 单实根 X1 X2 如果b2 4ac 0 双复根 X1 X2 根据上述步骤计算 写出答案 整理 分析结果 2 2结构化程序的算法描述 什么是算法为解决一个问题所采取的方法和步骤称为算法 算法的特性有穷性 确定性 有零个或多个输入 有一个或多个输出 有效性 算法有两个很重要的方面 1 按什么顺序或步骤执行 2 用什么语句来实现 2 2结构化程序的算法描述 自然语言特点 易懂 冗长 易产生歧义流程图N S结构化流程图PAD图伪代码计算机语言 伪码语句示例之一ifstudent sgradesgreaterthanorequalto60display Passed elsedisplay Failed 伪码语句示例之二如果学生成绩大于或等于60显示 及格 否则显示 不及格 C语言源程序段示例if grade 60 printf Passed elseprintf Failed 算法可采用自然语言 流程图 N S图 PAD图 伪代码等方法来描述 示例 根据学生成绩输出评定结果 一 算法 algorithm 二 算法与流程图 传统流程图 特点 直观形象 使用流线 缺点 占面积大 使用流线任意转移 易出现 乱麻 现象 造成编程与阅读程序困难 二 算法与流程图 N S结构化流程图 77年美学者I Nassi和B Scheiderman提出 特点 取消流线 不允许流程任意转移 只能从上而下顺序执行 规定三种基本结构的流程图单元 由这些基本结构象搭积木似的组成各种算法 结构化设计 优点算法清晰 流程不会无规律乱转移 二 算法与流程图 三种基本结构 通常情况下 程序中的语句是以所编写的顺序一句接一句地执行 这种执行方法称为 顺序执行 许多C语句能够让程序员指定不按编写顺序执行下一条执行语句 这种执行方法称为 控制转移 Bohm和Jacopini的研究证实 所有的程序都能够只用三种控制结构编写 即 顺序结构 选择结构 selectionstructure 循环结构 repetitionstructure 顺序结构是C语言的基本结构 除非指示转移 否则计算机自动以语句编写的顺序一句一句地执行C语句 任何C语言程序都是由七种控制结构 顺序结构 三种选择结构和三种循环结构 构成的 二 算法与流程图 三种基本结构 顺序结构A块 B块顺序执行 每块代表一个或一组操作 二 算法与流程图 三种基本结构 选择结构条件p成立时执行a块 否则执行b块 if选择结构条件为真时执行某个指定的操作 条件为假时跳过该操作 单路选择 if else选择结构条件为真时执行某个指定的操作 为假时执行另一个指定的操作 双路选择 switch选择结构根据表达式的值执行众多不同操作中的某个指定的操作 多路选择 二 算法与流程图 三种基本结构 循环结构分当型和直到型两类 当型先判断 只要条件为真就反复执行A块 为假则结束循环 直到型先执行A块 再判断条件是否为真 为真则继续执行循环体 为假则结束循环 C语言提供了三种循环结构 即while循环结构 do while循环结构和for循环结构 2 2 3PAD图 PAD ProblemAnalysisDiagram 另一种被广泛使用的一种算法的图形表示法 PAD图可以看成是二维的 它能展现算法的层次结构 顺序结构很简单 在此未画图 2 3算法制定范例 例2 4把从键盘输入的大写字母转换成小写字母 输出结果 问题 1 描述算法2 根据算法编写C程序3 运行检查程序是否正确 演示ex202 2 3算法制定范例 例2 5已知实数a和b 计算u的值 u r s 2 其中 当a b时 r a2 b2 s a b 当a b时 r b2 a2 s a b 4 算法 自然语言描述 从键盘输入实数a和b 如果a b 则r a2 b2 s a b 否则 r b2 a2 s a b 4 计算u的值 u r s 2 输出u的值 开始 输入a b a b T F r a a b b s a b r b b a a s a b 4 结束 u r s r s 输出u的值 流程图 输入实数a b a b F T r a a b bs a b r b b a as a b 4 计算的值 u r s r s 输出u的值 N S图 输入实数a b a b r a a b b s a b r b b a a s a b 4 计算u r s r s 输出u的值 PAD图 例2 5 includemain floata b r s u printf 请输入变量a b的值 scanf f f C语言描述 小结 本章主要介绍了程序算法的制定方法 自然语言 流程图 N S图和PAD图 通过用这些方法表示解题思路 作业 用流程图 N S图和PAD图描述问题的算法 从键盘输入3个整数a b c 输出其中的最大的数 第三章基本程序语句 C语言的数据类型简介几个基本概念C语言的三种基本数据类型基本运算符和表达式C基本语句数据的输出数据的输入简单程序设计举例 3 1C语言的数据类型简介 C语言的数据结构 3 2几个基本概念 3 2 1标识符1 标识符概念 是用来标识名称的 可以用来标识变量名 符号常量名 函数名 类型名 数组名 文件名等 C语言规定标识符只能由字母 数字和下划线组成 且第一个字符必须是字母或下划线 如 Day month student name 1 s2 12 t13注意 C语言中大写字母和小写字母被认为是两个不同的字符 大写字母 A 与小写字母 a 则表示不同的标识符 采用 见名知义 的原则 3 2几个基本概念 3 2 1标识符2 标识符的分类关键字 代表固定含义 不能另做他用 书P21 分为三类预定义标识符 有特定含义 包括C语言库函数名和变异预处理命令允许另做他用 但标识符失去原义 用户标识符 用户自己定义 不能使用关键字 可以使用预定义标识符 建议不要使用预定义标识符 3 2几个基本概念 3 2 2常量在程序运行中 其数值不能被改变的量1 直接常量 是在程序中直接引用的数据2 符号常量 符号常量是用标识符来代表一个数据符号常量的定义形式 define符号常量标识符常量数据例如 definePI3 14159 3 2几个基本概念 3 2 3变量变量是指以标识符为名字 其值可以改变的量 变量分为整型 实型 字符型等 3 2几个基本概念 3 2 3变量2 变量初始化在说明变量的同时给变量一个初始值 inta 5 b 3 inta b c a b c 3 inta b c 3 例如 注意 在同一程序块中 变量不能被重复定义 使用变量时必须 先定义 后使用 3 3C语言的三种基本数据类型 3 3 1整型数据1 整型常量 1 十进制形式 与数学上的整数表示相同 例如 12 100 0 2 八进制形式 在数码前加数字0 例如 012 1 81 2 80 10 十进制 3 十六进制形式 在数码前加0X 数字0和字母X 例如 0 x12 1 161 2 160 18 十进制 八进制的数码范围为0 7 018 十六进制的数码除了数字0 9外 还使用英文字母a f 或A F 表示10 15 如 0 x1e 注意 3 3C语言的三种基本数据类型 2 整型变量 整型变量分类根据数据所占的二进制位数分为 int short long 同样存储长度的数据又分unsigned signed 故可组合出六种类型 整型数据的存储方式数据在内存中是以二进制形式存储的 C语言中 一个int型数据通常用两个字节存放 其中最高位用来存放整数的符号 若最高位为0则表示该数为正数 若最高位为1则表示该数为负数 如 inti 1 则存放形式为 3 3C语言的三种基本数据类型 3 值域 变量允许存放的数值范围由机器中数据的存储长度决定 VC6 0所支持的整型数据 3 3C语言的三种基本数据类型 例3 1 P24思考 运行结果是否正确 说明理由 includemain inta b c d unsignedu v a 1 b 3 c 6 d 7 u a b v c d printf u d v u n u v 3 3C语言的三种基本数据类型 3 3 2实型数据1 实型常量 1 十进制小数形式 由数字和小数点组成 例如 3 4 4 3 2 指数形式 十进制小数 e 或E 十进制数整数 例如 12 5e 6表示12 5 10 6 规范化指数形式 小数点不能单独出现 0 0 e或E的两边必须有数 且其后面必须为整数 如 6E0 2 e5 2 实型变量 分类和值域 关键字字节数取值范围精度 位 float43 4 10 38 3 4 10387double81 7 10 308 1 7 1030815 注意 3 3C语言的三种基本数据类型 3 3 3字符型数据1 常量 1 用单引号括起来的一个字符 如 A 1 等 2 用单引号括起来的由反斜杠 引导的转义字符 字符形式功能 n换行 t横向跳格 b退格 r回车 反斜杠字符 单引号字符 ddd8进制数表示的ASCII码对应的字符 xhh16进制数表示的ASCII码对应的字符例如 字符A的ASCII码为 65D 十进制 41H 十六进制 101Q 八进制 字符A可以表示为 A x41 101 includemain charc1 a c2 b c3 c c4 101 c5 116 printf a cb c tc c tabc n c1 c2 c3 printf t b c c c4 c5 转义字符的应用 演示ex304 3 3C语言的三种基本数据类型 2 变量的分类和值域 分类 char和unsignedchar 值域 每个字符型数据在内存中占一个字节 包括ASCII字符表中的所有字符 可显示字符和非显示字符 3 字符串常量 是用一对双引号括起来的字符序列 如 SHANGHAI FGHijk CHINA 字符串常量的存放 每个字符均以其ASCII码存放 且在最后加一个 空字符 a 与 a 的区别 注意 3 4基本运算符和表达式 3 4 1C运算符简介按操作功能运算符大致可分为算术运算符 关系运算符 逻辑运算符 按位运算符以及其它运算符如赋值运算符 条件运算符 逗号运算符等 表达式是由操作数和运算符组成的序列 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 逗号运算符 指针运算符 和 求字节数运算符sizeof强制类型转换运算符分量运算符 下标运算符 其它运算符号 3 4基本运算符和表达式 3 4 2算术运算符和算术表达式1 基本的算术运算符 加 3 4 3 减 3 5 5 乘 3 5 除 5 2的值为2 5 0 2的值为2 5 取余 5 3的值为2 5 3的值为 2 5 3 的值为2 5 3 的值为 2 12 3 3 若a能被b整除 则有 a b 0整型数据相除 结果整型 5 3为1求余运算两侧为整型数据参与运算的数有一个是实型 则结果为实型 3 4基本运算符和表达式 2 算术表达式用算术运算符和括符将操作数连接起来的式子 优先级 结合性 从左至右 表达式的值 数值型 int long unsigned double 例如 已知 floata 2 0 intb 6 c 3 求解 a b c 1 5 a b 5 floata 2 0 intb 6 c 3 a b c 1 5 a b 5 12 0 3 1 4 0 1 5 2 5 97 int 99 5 1 100 5 double 3 4基本运算符和表达式 3 4 3赋值运算符和赋值表达式1 赋值运算符 2 赋值表达式 用赋值运算符将变量和表达式连接起来的式子一般形式为 赋值运算符优先级 赋值运算符的优先级比算术运算符低 结合性 自右至左 右结合性 求值规则 先计算 右边表达式的值 再将其值赋给左边的变量 表达式的值 赋值号左边变量的值即为赋值表达式的值 例如 1 x y 12 4y值为12 x值为3 表达式的值为3 2 x y 12 4y值为3 x值为3 表达式的值为3 3 x y 12 4 y值为3 x值为3 表达式的值为3 4 x y 12 4 3 4基本运算符和表达式 3 复合赋值运算符 等注意 复合运算符是一个运算符 但功能上 是两个运算符功能的组合 例如 1 a b相当于a a ba b相当于a a ba b c相当于a a b c 而不是a a b c 2 设a 12 计算表达式a a a 12和a a a 12的值 3 4基本运算符和表达式 4 赋值时的类型转换实型数据赋给整型 字符型 变量 去掉小数部分 如 intf 23 457 变量f的值为23 整型 字符型 数据赋给实型变量 补足有效位 字符型数据赋给整型变量 将字符数据 8位 放到整型变量的低8位中 高8位进行 符号扩展 一个int short long unsigned型数据赋给一个char型变量 截取低8位赋给字符型变量 带符号的整型数据 int型 赋给long型变量 进行符号扩展 带符号的long型数据赋给int型变量时 只截取低16位赋给int变量 unsignedint型数据赋给longint变量 高位补0 int型数据赋给unsignedint变量 内存情况不变 但若是负数 其符号位也作为数值赋给unsigned型变量 3 4基本运算符和表达式 5 自增与自减运算符单目运算符 运算对象是变量 不是表达式或者常量 i i 先使变量i的值增1 或减1 再使用变量i的值作为整个表达式的值来参加其它的运算 i i 先使用变量i的值进行其它运算 再使变量i的值增1 或减1 1 i i 2 i 3 j i 3 i 3 j i 等价于i i 1 j i i 所以i的值为4 j的值为3 i j i 所以i的值为4 j的值为4 例如 3 4基本运算符和表达式 5 自增与自减运算符结合性 自右至左 如 i 2 j i 等价于 j i 即 j i i 与 是同优先级所以i的值为3 j的值为 2 注意 或 自增与自减运算符的使用 设i 3 k i i i k 设i 3 k i i i k 设i 3 j 4 k i j k 设i 3 printf d d i i 结果为 3 4基本运算符和表达式 3 4 4关系运算符和关系表达式1 6种关系运算符 2 关系表达式 用关系运算符将表达式连接起来的式子 优先级 结合性 自左至右 表达式的值 若为真 则结果为1 若为假 则结果为0 3 5的值为0 32的值为0 3 43的值为1 a h 的值为1算术运算符优先级高于关系运算符关系运算符优先级高于赋值运算符 例如 3 4基本运算符和表达式 3 4 5逻辑运算符和逻辑表达式1 3种逻辑运算符 逻辑量 可以是整型 实型 字符型和指针类型 0 假非0 真 如 0 0 0 0 NULL都代表假 2 逻辑表达式 用逻辑运算符将表达式连接起来的式子 优先级 结合性 自左至右 表达式的值 若为真 则结果为1 若为假 则结果为0 3 4基本运算符和表达式 inta 5 floatb 3 5 a 0 a0 0 a0 1 例如 结论 只要有一个为假 结果则为假 只要有一个为真 结果则为真 高算术运算符关系运算符 和 赋值运算符低 4 0 1 2 8 4 1 0 1 5 3 2 8 4 5 3 4基本运算符和表达式 注意 在逻辑表达式的求解中 并不是所有的逻辑运算符都被执行 只是在必须执行下一个逻辑运算符才能求出表达式的解时 才执行该运算符 例如 1 a 0 b 1 c a 结果 a为0 b为0 c为0 d为1 3 4基本运算符和表达式 逻辑表达式一般用于控制语句中的条件 例如 1 n是小于m的偶数 2 year是闰年 能被4整除但不能被100整除或能被400整除 n m n 2 0 year 4 0 year 100 0 year 400 0 3 4基本运算符和表达式 3 4 6条件运算符1 条件运算符 和 它们与三个操作数组成三目运算 2 形式为 3 求值规则和表达式的值 真 非0 求解表达式2求解表达式1条件表达式的值假 0 求解表达式3 例如 intmax a 5 b 3 max a b a ba b a b 1 又如 a b a b a a 1 4 3 b b 1 a b a为4b为404 b b 1 表达式值为4b为5 a值为4 b值为5 条件表达式的值为4 4 优先级 逻辑 条件 赋值 验证 printf d d n a b a b b 运行结果 45 3 4基本运算符和表达式 5 结合性 自右至左 y x 10 x 10 x 0 x x 等价于 y x 10 x 10 x 0 x x 思考 当x的值为15时 表达式的结果为 当x的值为5时 表达式的结果为 1 5 3 4基本运算符和表达式 3 4 7逗号运算符 形式 逗号表达式1 逗号表达式2 逗号表达式n求值规则 从左至右依次计算各表达式的值 优先级 最低 结合性 自左至右 表达式的值 最后一个表达式的值 3 4基本运算符和表达式 例如 aby表达式y a 4 b 5 a b 4549y a 4 b 5 a b 4599y a 4 b 5 a b 4559y a 4 b 5 a b 55510注意 C语言常用逗号作为分隔符 例如 inta 3 b 4 c 5 printf d d d a b c printf d d d a a b c c 结果为3 5 5 3 4基本运算符和表达式 3 4 8强制类型转换运算符强制类型转换 指将表达式的类型强制转换为指定的类型 其一般形式为 类型名 表达式其作用 将表达式的结果的类型强制转换为类型名所指的类型 例如 int 3 4 2 8 的值为6强制类型转换时 得到所需类型的中间变量 而原来变量的类型不会改变 注意 3 4基本运算符和表达式 例如 inta 2 b 5 floatx 4 4 则有 表达式结果b a2 float b a2 5 float b a 2 0 int x a x4 4 int x a x 不合法 3 5C基本语句 C语言的语句可分为以下四类 简单语句 包括输入 输出语句 空语句复合语句流程控制语句 3 5C基本语句 3 5 1简单语句1 表达式语句就是一个表达式加上一个分号 如 a x 1 函数调用语句由函数调用表达式加分号构成 printf d a 3 空语句用一个分号表示 其一般形式为 3 5C基本语句 C语言有丰富的标准函数库 可提供各类函数供用户调用 完成预先设定好的操作 include includemain inta 2 b 4 floatx y x a 2 sqrt b x 3 0 a a 3 y x a y 9 0 printf x 6 2f y 6 2f x y 3 5C基本语句 常用标准库函数求数学函数值 fabs x 求x的绝对值 pow x y 计算x的y次幂 sin x cos x exp x 求ex log x 求lnx 等 调用标准库函数要注意以下几点 在程序中要包含相应的头文件例如 要使用标准的输入 输出函数printf 等需包含头文件 include要使用数学函数sqrt 等需包含头文件 include调用规则 函数名 参数表 3 5C基本语句 3 5 2复合语句用一对花括号 将多条语句组合在一起 在语法上相当于一条语句 1 一般形式 内部数据说明 语句1 语句n 注意 1 在复合语句中说明的变量 是局部变量 仅在复合语句中有效 2 复合语句的 之后 不能有分号 3 5C基本语句 复合语句 程序块 示例 例3 3 main intx 1 intx 2 intx 3 printf x d x printf x d x printf x d x 3 6数据的输出 1 格式输出函数printf 格式 printf 输出项1 输出项2 输出项n 例 printf x d y f n x x 3 格式控制 用双引号括起来 控制输出项的格式和输出一些提示信息 输出表列 用逗号分隔的数据组 可选项 格式控制分为两个部分 普通字符 原样输出 转义字符按表3 4输出 格式说明 格式字符 替换输出 格式说明的一般形式 0m nl 或h 格式字符 左对齐输出0数字前的空位填0m输出域宽 长度 包括小数点 如数据的位数小于m 则左端补以空格如数据的位数大于m 则按实际位数输出n输出精度 小数位数 l或h长度修正符l长整型及双精度注 long型的数据宜用 ld double型宜用 lfh表示短整型如 hd hx 3 6数据的输出 格式字符 规定了输出的数据形式 d输出十进制整数 x以十六进制无符号形式输出整数 o以八进制无符号形式输出整数 u以无符号十进制数形式输出整数 f输出小数形式浮点数 double型用 lf s输出字符串 c输出单字符 3 6数据的输出 例1 求运行结果 main inta 30 printf d o x u c a a a a a 结果 30 36 1e 30 结论 格式字符与对应输出项类型要一致 否则正确的运算结果不能得到正确的显示结果 3 6数据的输出 例 若floaty 1234 9999 printf d y 则输出结果为何 printf函数使用注意事项 在格式控制字符串中 格式说明与输出项从左到右在类型上必须一一对应匹配 在格式控制字符串中 格式说明与输出项的个数应该相同 如果要输出百分号 则在格式控制串中用两个连续的百分号 来表示 在调用printf函数时 输出项有自增 自减 运算时 计算输出项的顺序从右至左 3 6数据的输出 例 格式输出函数示例程序 includemain inti 97 charch a printf i d c n i i 输出结果 i 97 a两个输出项都是变量i 但以不同的格式输出 一个是输出的整型数 一个输出的是字符a 其格式是由 d与 c控制的 3 6数据的输出 字符输出函数格式 putchar c 其中c为字符型或整型的常量 变量及其表达式功能 每次向屏幕输出一个字符供显示 例 求以下程序运行结果 includemain charx a putchar x putchar b putchar x 2 putchar b 2 结果 abcd 1 格式输入函数scanf 格式 scanf 3 7数据的输入 格式控制 需要输入数据的类型 地址列表 简单变量要用 开头 格式说明的一般形式 ml 或h 格式字符 求地址的运算符 a表示该变量所占空间的首地址 抑制字符 虚读 即读入数据后不送给任何变量 注意 scanf 函数没有输出功能 即不会向屏幕显示任何字符 也不能规定小数位数 m n 典型错误 scanf a d b d c d n 3 7数据的输入 正确语句 printf Inputa b c scanf d d d scanf 注意事项 字符输入函数格式 getchar 功能 从键盘上读入一个字符 getchar 包含在stdio h中 3 7数据的输入 例一 includemain chara b a getchar b getchar printf a c b c n a b 运行时 如果 输入 Student输出结果为a S b t 例3 13输入圆的半径 输出圆的周长和面积 分析 1 定义实型变量r l s用于存放半径 周长 面积 2 调用输入函数 输入r 3 分别利用周长公式和面积公式求出l s 4 调用输出函数输出l s 3 8程序举例 例3 10输入圆的半径 输出圆的周长和面积 includevoidmain floatr l s scanf f r 输入一个浮点数据 存入地址 r l 2 3 14159 r 计算周长 赋值给l s 3 14159 r r 计算面积 赋值给s printf nl 8 4f l 周长占8个字符宽 4位小数 printf ns 8 4f s 输出面积 数据共占8个字符宽 4位小数 3 8程序举例 3 8程序举例 例3 12从键盘输入一个学生的3门课程的成绩 求其平均并输出 保留一位小数 例3 11从键盘输入一个小写字母 用大写形式输出该字母 例3 13从键盘输入两个整数给两个变量x和y 交换变量x和y的值 然后输出 程序流程控制 顺序结构程序设计 顺序结构 自顶向下顺序执行语句例 交换两个数的值 before x 3 y 4 after x 4 y 3 includemain intx 3 y 4 t printf before x d y d n x y t x x y y t printf after x d y d n x y 例 从键盘输入一个小写字母 输出其对应的大写字母及其相应的ASCII码值 程序如下 includemain charch1 ch2 ch1 getchar ch2 ch1 32 printf nletter c ASCII d ch1 ch1 printf nletter c ASCII d ch2 ch2 scanf c 运行结果为 a letter a ASCII 97letter A ASCII 65 第四章选择结构程序设计 if语句 1 单分支if语句2 双分支if语句3 多分支if语句 选择结构有两种 switch语句 按给定条件进行判断 按判断后的不同情况进行不同处理 形式二 一般形式 格式 if expression statement1elsestatement2执行过程 if语句常用的两种形式形式一 缺省形式 格式 if expression statement执行过程 例 if x y printf d x 例 if x y max x elsemax y if语句 条件分支语句 例4 1 在两个数中取大数 main intnum1 num2 max printf ninputtwonumbers scanf d d main intnum1 num2 printf ninputtwonumbers scanf d d 如 if a b else要与if配对使用if后面的表达式类型任意 语句可以是复合语句同一个条件的多种表达方式如 if x if x 0 if x if x 0 例考虑下面程序的输出结果 includemain intx y scanf d d CompileError 说明 错误信息 misplacedelseinfunctionmain 如 if a b r a a b b s a b else r b b a a s a b 4 includemain intx y printf Enterintegerx scanf d 运行 Enterintegerx 10 whenX 10 f x 21Enterintegerx 1 whenX 1 f x 0 例求分段函数的值 includemain intx y printf Enterintegerx scanf d 运行 Enterintegerx 10 whenX 10 y 1Enterintegerx 0 whenX 0 y 1 例 多分支if语句 if elseif 其格式为 if 表达式1 语句1elseif 表达式2 语句2 elseif 表达式n 语句nelse语句n 1 例3 3 将学生成绩由百分制转化为等级制 规则如下 85分 含 以上为A级 70分 含 以上且85分以下为B级 60分 含 以上且70分以下为C级 60分以下为D级 main floatscore printf npleaseinputascore scanf f 程序运行结果如下 pleaseinputascore 89 thescore89 000000isA if语句嵌套 例 include stdio h main intx 4 y 5 z 2 max max x if z y if z x max z elseif y x max y printf max d max 结果 缺省 时 else总是和它上面离它最近的未配对的if配对 if else配对原则 main intx 100 y 10 a 30 b 20 k1 10 k2 6 if a b if b 10 if k1 x 1 elseif k2 x 10 elsex 20 printf x d n x 运行结果 x 10 例 if a b if b c printf a b c elseprintf a b 修改 if a b if b c printf a b c elseprintf a b 实现if else正确配对方法 加 实现if else正确配对方法 注意 书写格式不能代替程序逻辑 if语句嵌套一般形式 main intx y printf ninputx scanf d x if x 0 y 1 else if x 0 y 0 elsey 1 printf x d y d n y includemain intx y printf Enterintegerx y scanf d d 运行 Enterintegerx y 12 23 XYEnterintegerx y 12 12 X Y 例输入两数并判断其大小关系 switch语句 开关语句 一般形式 执行过程 switch case case case default 的值与某一case后面的值匹配时 则执行此case后面的所有的 直至遇到break语句或switch的结束 否则 执行default后的 一般是一个整数表达式 或字符表达式 说明 case后面是常量表达式 且值必须互不相同case和常量表达式之间要有空格case后可包含多个可执行语句 且不必加 常量表达式起语句标号作用 跳出必须用break语句多个case可共用一组执行语句switch可嵌套完全可以用if语句或if语句的嵌套来实现 如 switch z case A case B case C printf score 60 n break case F 如 switch z case A i k printf A n break case F 例switch score case5 printf Verygood case4 printf Good case3 printf Pass case2 printf Fail default printf dataerror 运行结果 score为5时 输出 Verygood Good Pass Fail dataerror 例 输入1 7中的数字 将其转换成相应的星期英文单词 main intnum scanf d 若无break 例4 6 编写程序测试是数字 空白 还是其他字符 main intc switch c case 0 case 1 case 2 case 3 case 4 case 5 case 6 case 7 case 8 case 9 printf thisisadigit n break case case n case t printf thisisablank n break default printf thisisacharacter n break 补充举例 路程s越远 每公里运费越低 折扣的标准如下 s 250km没有折扣250 s 5002 折扣500 s 10005 折扣1000 s 20008 折扣2000 s 300010 折扣3000 s15 折扣设每公里每吨货物的基本运费为p 货物重为w 距离为s 折扣为d 则总运费f的计算公式为 f p w s 1 d 折扣的 变化点 都是250倍数 分析折扣变化的规律 若s为整型 则c与折扣d的关系为 c 0d 0c 1d 2 c 2 3d 5 c 4 5 6 7d 8 c 8 9 10 11d 10 c 12 13 14 d 15 若c s 250 则折扣d如下 c 1d 01 c 2d 2 2 c 4d 5 4 c 8d 8 8 c 12d 10 12 cd 15 运输公司对用户计算运费 能 练习 输入一个由两个数据和一个算术运算符组成的表达式 根据运算符完成相应运算 并输出结果 includemain inta b charc scanf d c d 作业 第四章课后习题P65 P70上机 练习 循环是指使用一定条件对同一个程序段重复执行若干次 循环结构又称重复结构 可以完成重复性 规律性的操作 第五章循环结构 goto goto语句 一般格式 goto语句标号由if goto构成循环例4 1 main intx 0 y 0 star if x 3 y x 1 x x 1 gotostar printf d y 分析输出结果 一般形式 while 执行流程 while语句 循环体 被重复执行的部分 特点 先判断表达式 后执行循环体说明 循环体有可能一次也不执行循环体可为任意类型语句下列情况 可退出while循环条件表达式不成立 为零 循环体内遇break return goto while语句特点和说明 while 例4 2 main intcount 1 while count 5 printf goodmorning n count goodmorning goodmorning goodmorning goodmorning includemain intn 9 while n 6 n printf d n 876 main intn 9 while n 6 n printf d n n 6 例4 3 用while循环求sum 1 2 3 100 includemain intsum 0 inti 1 while i 100 sum i i printf sum d sum 如何求sum 1 2 3 100 例5 13 猴子吃桃问题 猴子第一天摘下若干桃子 当即吃掉一半 还不过瘾 又多吃了一个 第二天早上又将剩下的桃子吃掉一半 又多吃了一个 以后每天早上都吃掉前一天剩下的一半零一个 到第10天早上再想吃时 就只剩一个桃子了 问第一天共摘了多少个桃子 迭代法 设第n天为xn个 第n 1天为xn 1则 xn 1 xn 2 1可得递推公式 xn xn 1 1 21 n 9x10 1n 10即 x10 1x9 x10 1 2 4x8 x9 1 2 10 x1 x2 1 2

温馨提示

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

评论

0/150

提交评论