




已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章三种基本控制结构 3 1算法3 2C语句3 3数据输入与输出3 4结构化的程序设计方法 一 算法的概念 Pascal之父沃思 NikiklausWirth 提出一个公式 数据结构 算法 程序数据结构 各种数据的类型和组织形式算法 处理数据的思路和步骤 更准确的表述 程序 算法 数据结构 程序设计方法 语言环境 灵魂 加工对象 工具 结构化程序设计 顺序 循环 选择 种树 种树的步骤方法 挖坑 放树苗 填土 浇水等 各种树苗 种树的规划按行 列种树 一圈圈种 交叉种 土地 铁锹等 算法的实质就是解决 做什么 怎么做 因此算法是指解决一个问题的方法和步骤 注意 解决同一个问题的算法有可能不唯一 算法的特性 有穷性 即在有限步内结束 确定性 算法的每一个步骤不能含糊 有零个或多个输入 有一个或多个输出 有效性 算法中的每一步骤都能有效地执行 并得到确定的结果 计算机算法可分为两类数值算法 数值运算的目的是求数值解 如求平方 求定积分等 研究深入 算法成熟 数学程序库 math h 非数值算法 最常见的是用于事务管理领域 如排序和检索 查找 参考已有类似算法 重新设计 二 算法的表示方法 自然语言 通俗易懂 文字冗长 容易有 歧义性 流程图 灵活 自由 形象 直观 易理解 占篇幅大 N S图 新型流程图 简洁 伪代码 介于自然语言和计算机语言之间 中英文皆可 格式自由 易修改 不直观 不容易发现逻辑错误 计算机语言 用计算机实现算法 可以执行出结果 比如C语言 问题一 有两个杯子a和b 分别放有酱油和醋 试着将两个杯子中的液体进行互换 b a C 醋 酱油 X X 酱油 醋 酱油 例3 1 用自然语言描述交换算法 拿一个空杯子c 将a中的酱油倒入c中 将b中的醋倒入a中 将c中暂存的酱油倒入b中 问题二 有三个牧师和三个野人过河 只有一条能装下两个人的船 在河的任何一方或者船上 如果野人的人数大于牧师的人数 那么牧师就会有被吃掉的危险 请找出一种安全的渡河方案 用自然语言描述渡河算法 两个野人先过河 一个野人回来 再两个野人过河 一个野人回来 两个牧师过河 一个野人和一个牧师回来 两个牧师过河 一个野人回来 两个野人过河 一个野人回来 两个野人过河 例3 2 用流程图和N S图描述交换算法 流程图是在各种需要的处理框中描述要执行的操作 然后使用连接线将处理框连接起来的算法表示方式 流程图符号有 用流程图描述交换算法 三种基本结构 顺序结构选择 选取 分支 结构循环 重复 结构 当 while 型循环结构 直到型 Until 循环 例 判断闰年的算法 y y y N S图是将全部算法写在一个矩形框内 矩形框内划分成一些小框 框与框之间可以有前后顺序关系 选择关系和从属关系 用N S图描述交换算法 例3 3 用伪代码描述交换算法 假设0表示酱油 1表示醋中文方式 开始定义杯子a 并设置初值为0定义杯子b 并设置初值为1定义杯子ca cb ac b结束 假设0表示酱油 1表示醋英文方式 begindefinea 0 adefineb 1 bdefineca cb ac bend 例3 4 用C语言实现交换算法 include 文件包含 intmain 主函数 inta 0 定义变量a表示杯子a 并初始化为0 表示存放酱油 intb 1 定义变量b表示杯子b 并初始化为1 表示存放醋 intc 定义新杯子 c a c和a中都是0 a b a和b中都是1 b c b和c中都是0 输出a和b 检验是否完成交换 printf a db d n a b return0 返回语句 总结两个变量的交换算法 不能完成交换 a b b a 4 3 3 3 3 出错 总结两个变量的交换算法 完成交换 temp a a b b temp 4 3 temp 4 4 3 正确 如何判断一个算法 程序 的优劣 需要考虑两个方面的问题 一 保证算法正确 如果一个算法对其每一个输入实例 都能输出正确的结果并停止 则称它是正确的 二 选择高质量算法 依据时空复杂度 时间复杂度 空间复杂度 一般来说 希望采用简单的和运算步骤少的方法 课堂练习 请分别用各种方式描述以下题目要求的算法 并用C语言实现以下算法 有三个整数 分别输出其中的最大值和最小值 第3章三种基本控制结构 3 1算法3 2C语句3 3数据输入与输出3 4结构化的程序设计方法 C程序的结构 C语言程序由一个或多个源程序文件 简称源文件 构成 每个源文件又由一个或者多个函数加上相关的变量构成 因此源程序的基本组成单位是函数 函数体可分为内部变量定义部分和可执行语句 简称语句 两部分 可执行语句 简称语句 是程序最基本的执行单位 程序就是通过执行一系列语句实现其功能的 C语言中的语句有多种形式 1 表达式语句 表达式加分号 例如 a b是一个赋值表达式 加上分号a b 就是赋值语句 2 函数调用语句 由一次函数调用加一个分号构成一个语句 例如 printf HelloWorld 调用printf函数的语句 3 控制语句 用于控制程序的流程 以实现程序的各种结构 主要有以下几种 1 选择语句 也称为分支语句 if else 2 多分支语句 switch case 3 循环语句 for while do while 4 辅助控制语句 与分支和循环语句搭配使用 continue break goto5 返回语句 若函数本身需要得到一个结果 就必须由return语句将结果返回 return 4 复合语句 用 将一些语意相关的语句括起来构成复合语句 又称为块或语句块 例如 if a b a b 用大括号括起来的就是复合语句 表示如果a b成立 a 和b 都要执行 5 空语句 只有一个分号的语句 它什么也不做 有时作为控制结构的某个部分 例如 if a b 当a b时执行分号表示的空语句 第3章三种基本控制结构 3 1算法3 2C语句3 3数据输入与输出3 4结构化的程序设计方法 数据输入和输出示意图 一 printf函数 print format格式输出 作用 向系统指定的输出设备 一般指显示器 输出若干个任意类型的数据 使用格式为 printf 格式控制 输出表列 例如 printf i d c c n i c 格式控制包含三部分内容 格式字符 后面加格式字符 按照指定格式输出变量 常量或表达式的值 转义字符 按照转义字符的含义控制输出内容普通字符 原样输出 增强结果的可读性 1 d i 格式符 输出十进制有符号整数 例3 5 将整型变量按照十进制指定格式输出 includeintmain inta 65535 printf n a printf n a printf n a return0 2 o格式符 输出八进制整数 输出的第一位是符号位 例3 6 将整型变量按照八进制指定格式输出 includeintmain inta 65535 printf n a printf n a printf n a return0 3 x格式符 输出十六进制整数 输出的第一位是符号位 也可以写为X 例3 7 将整型变量按照十六进制指定格式输出 includeintmain inta 65535 printf n a printf n a printf n a return0 注意 d o 0 x是按整型数据在内存中的二进制存储格式进行十进制 八进制 十六进制换算后的格式输出 4 u格式符 输出无符号型十进制数据 例3 8 将整型变量按照指定无符号格式输出 includeintmain inta 1 printf n a printf n a printf n a return0 5 c格式符 输出一个字符 例3 9 将字符按不同格式输出函数 includeintmain inti 97 charc A 将整型变量i分别以整型格式 字符格式输出 printf 5d 5c n i i 将字符变量c分别以整型格式 字符格式输出 printf 5d 5c n c c return0 6 s格式符 输出一个字符串 例3 10 将字符串按不同格式输出函数 includeintmain printf n CHINA printf n CHINA printf n CHINA printf n CHINA printf n CHINA return0 7 f格式符 输出实数 包括单 双精度 以小数形式输出 8 e E 格式符 以指数形式输出实数 包括单 双精度 也可以写为E 9 g G 格式符 输出实数 根据数值大小 自动选择f格式或e格式 选择输出时占宽度较小的一种 且不输出无意义的零 例3 11 将实型变量按照指定格式输出 includeintmain printf n 3 141592653589 printf n 3 141592653589 printf n 3 141592653589 printf n 3 141592653589 printf n 3 141592653589 printf n 3 141592653589 printf n 3 141592653589 printf n 3 141592653589 printf n 3 141592653589 return0 例3 12 格式说明中包含不同的普通字符 includeintmain inti 0 charc A 调用格式输出函数 printf i d c c n i c 输出结果i 0 c A printf d c n i c 输出结果0 A printf d c n i c 输出结果0A printf d c n i c 输出结果0A return0 二 scanf函数 scan format格式输入 作用 从系统指定的输入设备 键盘 按地址输入若干个任意类型的数据 使用格式为 scanf 格式控制 地址表列 例如 scanf d 接收用户从键盘输入的数据按照整型格式存入a变量的内存地址中 注意 1 scanf函数中的 格式控制 后面应当是地址 例如 scanf d d a b 错误 scanf d d 正确 2 如果在 格式控制 字符串中除了格式说明以外还有其他字符 那么在输入数据时应输入与这些字符相同的字符 例如 scanf d d a b 正确输入形式为 3 4 scanf a d b d a b 正确输入形式为 a 3 b 4 为简单起见 可以在格式控制中只写控制字符 输入时数据之间以空格字符 按 回车键 Enter 或 跳格 键 tab 作为间隔 scanf d d a b 有多种正确的输入形式 1 3 4 表示空格键 表示回车键 2 3 4 可以有多个空格 3 3 回车 4 3 scanf的格式控制中不能包含格式字符 例如 scanf d d n scanf f d 错误 不能按照 f的格式输入d值 scanf lf d 正确 5 在用 c 格式输入字符时 空格字符和 转义字符 都作为有效字符输入 例如 scanf c c c c1 c2 c3 输入 a b c则 字符 a 送给c1 空格字符 送给c2 字符 b 送给c3 scanf c c c c1 c2 c3 正确输入形式为 abc scanf c c c c1 c2 c3 正确的输入形式为 a b c 6 输入数据时 在遇以下情况时认为该数据结束 1 遇空格 或按 回车 或 跳格 tab 键 2 按指定的宽度结束 如 3d 只取3列 3 遇非法输入 例如 scanf d c f a b c 若入 1234a123A 26 结果 a接收到1234 b接收到 a c接收到123 课堂练习 1 若有inta b c scanf d d d 使a得到值1 b得到值2 c得到值3 下面输入形式中不正确的两项是 A 123 B 1 2 3 C 1 2 3 D 1 2 3 AB 2 若有inta b scanf d d 使a得到值6 b得到值5 下面输入形式中正确的是 A 6 5 B 6 5 C 6 5 D 6 5 A 3 若有inta b c scanf a d b d c d 使a得到值1 b得到值2 c得到3 下面输入形式中正确的是 A 1 2 3 B 1 2 3 C a 1 b 2 c 3 D 1 2 3 C 4 有charc1 c2 scanf c c 若要c1得到字符 A c2得到字符 B 正确的输入格式为 A A B B A B C AB D A B C 5 有inta doubleb 以下scanf正确的是 A scanf x lf A 6 有intx doubley scanf 3d lf 从键盘输入12345 6789 则x和y的值分别为 A 123456789 000000 B 12345 000000 C 3456789 000000 D 1236789 000000 B 7 以下程序的输出结果是 includeintmain intx 0 xabc y 0 xdef y x printf x n y A 0 xabc B abcreturn0 C abc D 0 xabc E 0 x333 F 333 F 8 找出下面语句中的4处错误 floata scanf d n a printf d n a 三 putchar函数 字符输出函数 作用 在显示器上输出单个字符 使用格式为 putchar 字符变量或字符常量 例如 putchar ch 在屏幕上输出字符变量ch的值 注意 1 字符可以是单个普通字符或者转义字符 2 对字符变量ch执行 putchar ch 与printf c ch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店海鲜供应合作协议5篇
- 吉林省2025年吉林省省直事业单位选拔招聘工作人员(7号)笔试历年参考题库附带答案详解
- 南川区2025二季度重庆南川区事业单位考核招聘73人笔试历年参考题库附带答案详解
- 北京市2025国家信息中心面向应届毕业生招聘16人笔试历年参考题库附带答案详解
- 万荣县2025山西运城市万荣现代农业产业示范区市场化选聘高级管理人员1人笔试历年参考题库附带答案详解
- 2025甘肃省金羚集团药业有限公司招聘18人笔试参考题库附带答案详解
- 2025广西梧州市龙投人力资源有限公司招聘13人笔试参考题库附带答案详解
- 2025年河南新乡市某国有供应链公司招聘供应专员岗位6人笔试参考题库附带答案详解
- 卸煤安全培训计划课件
- 2025年国航股份新疆分公司“三地招聘”活动专项招聘5人笔试参考题库附带答案详解
- 标杆地产五星级酒店精装修标准
- 脑器质性精神障碍患者的护理查房
- (高清版)TDT 1013-2013 土地整治项目验收规程
- 初中数学分层作业设计举例-有理数
- 西方经济学简史
- 给小学生科普化学
- 信息管理系统的设计与实现
- 新闻报道与舆论导向
- 局放实验操作规程
- 透明土实验技术的研究进展
- 戴海崎心理与教育测量第4版课后习题答案
评论
0/150
提交评论