课程导言.ppt

乔林-计算机程序设计基础(第2版)

收藏

压缩包内文档预览:

资源预览需要最新版本的Flash Player支持。
您尚未安装或版本过低,建议您

乔林-计算机程序设计基础(第2版),乔林,计算机,程序设计,基础
编号:74277575    类型:共享资源    大小:3.20MB    格式:ZIP    上传时间:2020-04-19 上传人:独** IP属地:江苏
20
积分
关 键 词:
乔林 计算机 程序设计 基础
资源描述:
乔林-计算机程序设计基础(第2版),乔林,计算机,程序设计,基础
内容简介:
计算机程序设计基础 第零章C语言概述 提纲 0 1C语言简介0 2程序设计的基本概念0 3简单C程序介绍0 4程序设计的基本流程本章小结 0 1C语言简介 C语言简史Ritchie Kernighan BellLabs 从B语言脱胎而来为开发UNIX而设计C语言的标准化ANSIC标准化委员会 1983ANSIC C89ISO IEC9899 1990 C90C99 C语言特点 中级语言 介于高级语言与低级语言之间高级语言的结构化与模块化低级语言的控制性与灵活性结构化顺序结构 分支结构 循环结构模块化函数 函数库可移植性 0 2程序设计的基本概念 程序一系列遵循一定规则并能正确完成特定功能的代码或指令序列通常包括数据结构与算法两部分程序设计与程序设计语言程序设计 按照任务需要 设计数据结构与算法 编写代码并测试其正确性 得到正确运行结果的过程程序设计方法学 程序设计应遵循一定的方法与原则 养成良好的编程风格程序设计语言 编写程序代码的规范 具有特定的语法规则 意义与使用环境 0 2程序设计的基本概念 算法问题的求解方法与步骤不允许存在二义性算法设计过程是逐步求精的常使用流程图描述算法数据与数据结构数据 程序操作的对象数据结构 数据对象之间的相互关系及构造方法与算法关系密切 良好的数据结构可使算法更简单 恰当的算法可使数据结构更易理解 0 3简单C程序介绍 编写程序 显示字符串 HelloWorld includeintmain printf HelloWorld n return0 主函数的函数头 全局惟一 预编译指令 包含标准头文件 函数体 花括号内为语句序列 标准库函数 在输出设备 一般为屏幕 上输出一行文本函数调用 需要了解该函数原型 即函数如何使用的细节信息 printf函数原型位于 stdio h 中 故需包含该头文件双引号内为字符串内容 n 为转义字符 表示换行分号表示语句结束 函数结束执行 程序退出 0 3简单C程序介绍 编写程序 计算用户输入的两个整数之和 includeintmain inta b sum printf Theprogramaddstwointegers n printf Thefirstnumber scanf d 数据的输入与存储 a b sum 数据的输入与存储 1 a b sum 数据的输入与存储 1 2 a b sum 数据的输入与存储 1 2 3 a b sum 程序设计思维 战略与战术先关注战略层面问题 程序逻辑 再关注战术层面问题 程序细节 细微之处邪魔藏也 程序流程框架程序代码的三分天下 输入 计算 输出 C程序结构特点 由一个或多个函数组成具有惟一一个主函数main程序执行由主函数开始 其他函数由主函数调用或间接调用程序执行流程与函数定义顺序无关每个函数包含函数头与函数体两部分C标准库包含大量库函数 程序员可直接使用库函数原型位于相应头文件中 使用函数前必须包含该头文件 0 4程序设计的基本流程 本章小结 C语言的发展历史与基本特点程序设计的基本概念程序 程序设计与程序设计语言 算法 数据与数据结构C程序的基本结构与特点程序设计的基本流程编辑 编译 链接 测试 调试与执行 作业 第13页 习题二第2 3小题 计算机程序设计基础 第一章C语言基本语法元素 提纲 1 1数据类型1 2量与表达式1 3语句1 4基本输入输出函数1 5程序设计风格本章小结 1 1数据类型 整数类型使用int定义整数类型的数据对象整数类型具有取值范围 仅能表示特定区间内整数值浮点数类型使用double或float表示小数同样具有取值范围首选double字符串类型字符序列以整体的形式作为数据对象使用本书配套zylib库中的STRING类型表示字符串 易于使用 整数类型 整数类型定义a为整数 inta 整数的符号 确定是否表示负数signed unsigned定义b为无符号整数 unsignedintb 整数的长短 确定整数取值范围的大小long short定义c为短整数 shortintc 浮点数类型 double 编写程序 计算用户输入的两个浮点数之和 includeintmain doublea b sum printf Theprogramaddstworealnumbers n printf Thefirstrealnumber scanf lf 浮点数类型 float 编写程序 计算用户输入的两个浮点数之和 includeintmain floata b sum printf Theprogramaddstworealnumbers n printf Thefirstrealnumber scanf f 字符串类型 STRING 接受用户输入的用户名 向用户问好 include include zylib h 使用双引号而不是尖括号包含配套库intmain STRINGname printf Theprogramreadsuser sname andprintsagreeting n printf Yourname name GetStringFromKeyboard 配套库已实现的函数 获取用户输入的字符串 以用户输入的文本行为单位 printf Hello s n name 使用 s 输出字符串return0 工程项目的设置 基本步骤创建新工程 设置好工程项目中文件的目录 程序代码可能位于工程项目目录下的子目录中将文件 zylib h 与 zylib c 拷贝到程序目录下在工程项目中添加上述文件在程序代码中使用双引号包含头文件 zylib c 特别说明工程项目的意义 将程序组织成一个项目整体进行开发和管理 一般需要创建单独的工程才能开发程序不同编译器的工程项目设置并不相同 1 2量与表达式 表达式变量文字与常量赋值与初始化操作符与操作数混合运算与类型转换 表达式 表达式的定义操作数与操作符序列 表达运算过程操作数 文字 量 函数调用 括号操作符 运算逻辑表达式值 运算结果表达式求值 计算表达式值的过程类比 按普通四则运算理解表达式求值过程 逐一计算表达式中所有操作符 直至完成 变量 先定义再使用定义格式 变量类型变量名称 变量名称 单独定义例 inta 同时定义例 doubleb c 变量名称应既有惟一性 不允许重名变量的四大基本特征 VANT 变量总是具有值 value 变量总是与内存中的地址 address 相对应变量总是具有名称 name 变量总是具有确定的类型 type 文字 定义 程序中单独出现的值例 3 14 100等整数类型文字十进制 十六进制 八进制浮点类型文字字符串类型文字 整数类型文字 十进制表示 普通整数表示十六进制表示 逢十六进一 无正负号以 0 x 或 0X 开头的0 9 A a F f序列例 0 x55 0X1F 0 x2a0 x5516 8510八进制表示 逢八进一 无正负号以 0 开头的0 7序列例 0550558 4510注意不要与十进制混淆 浮点数类型文字 一般形式 小数表示法由整数部分 小数点与小数部分组成例 3 1416 2 718281828指数形式 科学计数法由尾数部分 字符 E e 与指数部分组成例 3 14e3 3 14 103 2 7E 2 2 7 10 2 字符串类型文字 双引号引起来的字符序列例 ProgramminginC HelloWorld n 双引号是字符串文字的界定符 不是字符串的内容 转义序列字符串不仅可以包含可打印字符 也可以包含表示特殊活动的特殊字符格式 使用反斜杠开始转义序列 后跟一个或多个字符转义序列整体作为单个字符进行处理 样式固定例 n C语言预定义的转义序列 常量 常量的定义 程序执行期间其值不可改变的量格式 const数据类型常量名称 初始值 例 constintzero 0 常量的意义解决直接出现的文字无法解释其意义的问题文字 魔数也 常量与变量常量不可改变值 其他与变量同定义常量时必须进行初始化 常量初始值必须能够在编译期间计算出来 赋值与初始化 赋值表达式格式 变量名称 表达式例 a 0赋值语句 赋值表达式加分号格式 变量名称 表达式 例 a b c 变量的初始化在定义变量时直接设定初始值例 inta 0 赋值流程 赋值流程 a 1 赋值流程 a 1 b 2 赋值流程 a 1 b 2 sum a b 操作符与操作数 操作符分类一元操作符 只有单个操作数 例如负号二元操作数 带有两个操作数 例如加减乘除等三元操作数 带有三个操作数 例如条件表达式 仅在C语言中存在惟一一种 操作符的优先级与结合性优先级确定计算顺序 结合性确定计算方向操作符的优先级仅具有参考价值 C语言对于特殊表达式的计算有特别规定 并不完全遵照该规则 如果拿不准 使劲加括号 混合运算与类型转换 编写程序 询问用户姓名 向用户问好 然后请求用户输入一整数和一实数 输出加法运算结果 include include zylib h 使用双引号而不是尖括号包含配套库intmain STRINGname intn doubled sum printf Theprogramreadsuser sname andprintsagreeting n printf andaddsanintegerandarealnumber n printf Yourname name GetStringFromKeyboard 获取输入字符串 以用户输入的文本行为单位 printf Hello s n name 输出字符串printf Pleaseinputaninteger n GetIntegerFromKeyboard 获取输入整数 以回车确认输入 printf Pleaseinputarealnumber d GetRealFromKeyboard 获取输入浮点数 以回车确认输入 sum n d printf d lf lf n n d sum return0 隐式类型转换与显式类型转换 隐式类型转换程序自动进行 程序员不需要干预转换原则 一般以不损失精度为前提赋值时右边表达式值先转换为变量类型后再进行显式类型转换程序员手工进行的类型转换格式 转换后的数据类型 原表达式例 设inta doubleg 9 80665 a g 进行隐式类型转换 小数部分舍弃 a值为9a int g 4 进行显式类型转换 a值为4 9 36a int g 4 进行显式类型转换 a值为39 1 3语句 简单语句格式 表达式后跟分号例一 sum n d 例二 n GetIntegerFromKeyboard 例三 printf d lf lf n n d sum 复合语句格式 花括号对括起来的语句序列例 a 1 b a 1 空语句格式 单独出现的分号目的 满足程序特定语法规则的要求 作为未来添加程序代码的占位标记 1 4基本输入输出函数 基本事实输入输出是语言与算法必须具备的功能C语言本身没有输入输出语句或命令 输入输出需使用标准库函数输入输出函数原型位于头文件 stdio h 中典型输入输出函数格式化输出函数printf格式化输入函数scanf 格式化输出函数printf 格式化输出函数printf调用格式格式 printf 输出格式规约字符串 输出项列表 例一 printf Theprogramprintsagreeting n 例二 printf Hello s n name 例三 printf f f f n a b sum 例四 printf d lf lf n n d sum y 格式描述符 d 十进制整数 f float类型浮点数 lf double类型浮点数 c 单个字符 s 字符串 u 无符号整数 printf函数示例 编写程序 按照下列格式输出截止2005年底的部分省市统计数据 所有数据均来自各地政府官方网站 面积仅包括陆域 单位 平方公里 人口仅包括户籍人口 单位 万人 其中部分数据为约数 左右对齐 场宽 精度与对齐 输出格式 对齐标志 场宽 精度 格式描述符对齐标志 确定每列左侧还是右侧对齐缺省右对齐 左对齐使用减号例 d表示按照左对齐格式输出整数场宽 确定每列占用多少字符宽度 数据输出一般不会截断确定输出最小宽度 超出部分照常输出例 3d表示按照右对齐 占三位格式输出整数 若整数长度超出三位 则照常输出数据 场宽 精度与对齐 精度 确定输出多少位数据以保证其精度精度数字前有小数点标志 在场宽中占用一位 例 5 2f表示按照左对齐 整体占五位且小数点后两位格式输出浮点数数据的截断例一 按 5 2f格式输出12 3456 结果为12 35 注意四舍五入例二 按 5 2f格式输出123 456 结果为123 46 注意截断后的数据仍然超出了场宽 照常输出字符串截断输出特例 13 13s表示按照整体占13位且多余部分截断的方式输出字符串 程序代码 include include zylib h intmain STRINGprovince1 province2 province3 province4 province5 doublearea1 area2 area3 area4 area5 doublepop1 pop2 pop3 pop4 pop5 province1 Anhui area1 139600 pop1 6461 province2 Beijing area2 16410 54 pop2 1180 70 province3 Chongqing area3 82400 pop3 3144 23 province4 Shanghai area4 6340 50 pop4 1360 26 province5 Zhejiang area5 101800 pop5 4894 printf n printf ProvinceArea km2 Population 10K n printf n printf 13 13s 9 2lf 2lf n province1 area1 pop1 printf 13 13s 9 2lf 2lf n province2 area2 pop2 printf 13 13s 9 2lf 2lf n province3 area3 pop3 printf 13 13s 9 2lf 2lf n province4 area4 pop4 printf 13 13s 9 2lf 2lf n province5 area5 pop5 printf n return0 格式化输入函数scanf 格式化输入函数scanf调用格式格式 scanf 输入格式规约字符串 输入项列表 例 scanf d d 特别说明输入格式码与输出格式码基本相同用户在终端输入的数据逐一存放到输入项列表中变量所在的地址空间 对于普通变量 变量名前需添加取址操作符 多个输入项的分隔 格式描述串中其他字符需在输入数据时一并输入 无分隔字符的相连项在输入时使用空格 Tab或回车键分隔不要使用scanf 使用zylib库中的三个函数代替 整数输入 GetIntegerFromKeyboard浮点数输入 GetRealFromKeyboard字符串输入 GetStringFromKeyboard 1 5程序设计风格 注释命名规范宏与常量赋值语句的简写形式源代码的排版 注释 注释的目的 增强程序的可读性 可维护性注释的格式格式一 与 对 注释其中的部分 可出现在程序代码的任意地方例一 int 此处内容为注释 a 格式二 注释从此字符序列开始直至本文本行结束例二 inta 此处内容为注释特别说明同一种注释标记不可以嵌套 不跨行 与 对可跨行 命名规范 字符集 ASCII字符集大小写英文字母 数字 部分特殊符号标识符以下划线或字母开头 由下划线 字母 数字组成 表示常量 变量 函数 类型等名称 区分大小写 关键字 系统专用的具有特定意义的标识符预定义标识符 编译命令与库函数名 具有特定意义 一般不能重新定义用户定义标识符 用户根据需要定义 主要是为了使程序容易阅读 理解与维护 宏与常量 宏定义 define指令 预处理命令例 definePI3 14一旦定义 可以代替常量使用宏定义不是常量 程序中应优先使用常量而不是宏目的与意义增强程序可读性使用有意义的名字命名增强程序的可维护性将值定义为符号常量 则程序中仅需要修改一次 include definePI3 14intmain doubler area r 3 0 area PI r r printf f area return0 赋值语句的简写形式 加赋 x a等价于x x a减赋 x a等价于x x a乘赋 x a等价于x x a除赋 x a等价于x x a除法作用于整数上时 结果也为整数余赋 x a等价于x x a 两个整数进行整数除法 结果为余数特别说明x a b等价于x x a b 源代码排版 递进层次应使用左缩进格式每行代码不能过长 不超过80个字符函数代码不超过60行使用空行区分不同功能代码复合语句书写格式要统一除非特别必要 否则不要在一行上书写多条语句命名规范要一致无论采用什么标准 都一定要一直按照该标准执行 本章小结 数据类型确定数据对象的存储格式 取值范围 可实施的操作集量与表达式操作符 操作数 表达式 赋值与初始化语句简单语句 复合语句与空语句基本输入输出函数printf与scanf不建议使用scanf 使用zylib库中的替代函数程序设计风格 作业 第50页 习题二第5 7小题 计算机程序设计基础 第二章程序流程控制 提纲 2 1结构化程序设计基础2 2布尔数据2 3if分支结构2 4switch分支结构2 5while循环结构2 6for循环结构2 7问题求解与结构化程序设计本章小结 2 1结构化程序设计基础 程序的控制结构 黑箱 单入口单出口的控制结构易于理解三种基本控制结构顺序结构分支结构循环结构复杂控制结构控制结构可以嵌套 以构成更复杂的控制结构 顺序结构 顺序结构由一组顺序执行的处理块组成 每个处理块可能包含一条或一组语句 完成一项任务顺序结构是最基本的算法结构 顺序结构示例 编写程序 接受用户输入的两个整数 输出其中较大者 include include zylib h intmain inta b max 输入部分 printf Theprogramgetstwonumbersandprintsthegreaterone n printf Thefirstnumber a GetIntegerFromKeyboard printf Thesecondnumber b GetIntegerFromKeyboard 计算部分 max a b a b 三元表达式 输出部分 printf Thegreateroneis d n max return0 三元表达式 格式表达式1 表达式2 表达式3计算过程先计算表达式1的值 若为真 则结果为表达式2的值 否则为表达式3的值示例x a b a b 等价于 if a b x a elsex b 分支结构 分支结构 选择结构 的含义根据某一条件的判断结果 确定程序的流程 即选择哪一个程序分支中的处理块去执行最基本的分支结构是二路分支结构以条件判断为起点 如果判断结果为真 则执行A处理块的操作 否则执行B处理块的操作 循环结构 循环结构的含义根据某一条件的判断结果 反复执行某一处理块的过程最基本的循环结构是当循环进入循环结构 判断循环条件 如果循环条件的结果为真 则执行A处理块的操作 即循环一次 然后再次判断循环条件 当循环条件为假时 循环结束 2 2布尔数据 枚举类型用户自定义数据类型关系表达式逻辑表达式逻辑表达式的求值 枚举类型 枚举类型的声明格式 enum枚举名 元素名1 元素名2 元素名n 例 enumMONTH JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC 枚举类型声明中的元素为枚举文字 不是变量枚举类型变量的定义例 enumMONTHmonth 枚举类型的意义将多个文字组织在一起 表达从属于特定类型的性质取代魔数 使源代码更易理解 用户自定义类型 自定义类型的格式格式 typedef原类型标识新类型名 例一 typedefintDWORD 例二 enumBOOL TAG FALSE TRUE typedefenumBOOL TAGBOOL 自定义类型的性质新类型与原类型相同 并未产生新类型 重新命名的自定义类型使程序更易理解若整数可以用于表示两类不同数据对象 使用自定义类型可以区分它们自定义类型不是简单的类型替换 虽然它们确实等同布尔类型的定义enum BOOL FALSE TRUE 布尔类型 实现布尔类型 第一版定义类型 enumBOOL FALSE TRUE 使用布尔类型定义变量 enumBOOLbool 每次定义 都需要书写enum 很不方便实现布尔类型 第二版定义枚举类型 enum BOOL FALSE TRUE 自定义布尔类型 typedefenum BOOLBOOL 定义变量 BOOLbool 实现布尔类型 第三版定义类型 typedefenum BOOL FALSE TRUE BOOL 关系表达式 关系操作符大于 等于 小于 不等于 关系表达式关系操作符与两个操作数构成的表达式多个关系表达式可连接起来构成复杂关系表达式运算结果为逻辑值 真或假逻辑值 布尔值 C语言以0表示假 以非0表示真 经常以1表示 尽量使用BOOL类型表示逻辑值 示例例 x y a b 逻辑表达式 逻辑操作符 逻辑与 逻辑或 逻辑非 逻辑表达式逻辑操作符与一个或两个操作数构成的表达式 结果仍为真或假x y 若x y均为真 则结果为真 否则为假x y 若x y均为假 则结果为假 否则为真 x 若x为真 则结果为假 否则为真复杂逻辑表达式例 x y a b 3 大于 不大于 同级 等于 不等于 同级 逻辑与 逻辑或 逻辑表达式的求值 给定年份year 判断是否为闰年 闰年规定为 能够被400整除的年份一定是闰年其他能够被100整数的年份一定不是闰年其他能够被4整除的年份一定是闰年 year 4 0 year 100 0 year 400 0 2 3if分支结构 If分支结构的三种格式格式一 if 条件表达式 语句序列 格式二 if 条件表达式 语句序列1 else 语句序列2 格式三 if 条件表达式1 语句序列1 elseif 条件表达式2 语句序列2 else 语句序列n 特别说明条件表达式必须位于括号内 一般为关系或逻辑表达式先计算条件表达式值 若为真则执行语句序列1 否则执行语句序列2语句序列1与语句序列2可以为复合语句 单语句或空语句语句序列1与语句序列2只能有一个被执行若仅用于确定某条语句是否执行 else分支可以省略 简单if语句 编写程序 接受用户输入的整数 如果该整数为奇数则将其乘3加1后输出 偶数直接输出 include include zylib h intmain inta result 输入部分 printf Theprogramgetsanumber nIfitisaneven outputitdirectly n printf otherwisemultiplyitby3thenplus1 n printf Thenumber a GetIntegerFromKeyboard 计算部分 result a if a 2 1 result a 3 1 输出部分 printf Theresultis d n result return0 if else语句 编写程序 接受用户输入的整数 如果该整数为奇数则将其乘3加1后输出 偶数除以2后输出 include include zylib h intmain inta result 输入部分 printf Theprogramgetsanumber nIfitisaneven divideitby2 n printf otherwisemultiplyitby3thenplus1 n printf Thenumber a GetIntegerFromKeyboard 计算部分 result a if a 2 1 result a 3 1 elseresult a 2 输出部分 printf Theresultis d n result return0 if elseif else语句 已知2006年12月1日为星期五 编制程序 接受用户输入的1 31之间的整数 按照下述格式将该日星期几信息打印在对应栏下 例如 2006年12月1日打印在星期五 Fr 下面 程序代码 include include zylib h typedefenum SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY WEEKDAY intmain intdate constWEEKDAYdate 1 FRIDAY WEEKDAYweekday 输入部分 printf Theprogramgetsadate 1 31 n printf andprintsacalendarof2006 12 justthedate n printf Thedate date GetIntegerFromKeyboard if date31 日期输入错误 给出错误信息 退出执行 printf Dateerror n return1 程序代码 计算部分 得到该日的星期几信息 weekday WEEKDAY date int date 1 1 7 输出部分 printf Calendar2006 12 n printf n printf SuMoTuWeThFrSa n printf n 在指定位置输出该日的星期几信息 if weekday SUNDAY printf 2d n date elseif weekday MONDAY printf 6d n date elseif weekday TUESDAY printf 10d n date elseif weekday WEDNESDAY printf 14d n date elseif weekday THURSDAY printf 18d n date elseif weekday FRIDAY printf 22d n date elseprintf 26d n date printf n return0 2 4switch分支结构 计算过程先计算表达式的值依次与常数表达式比较若相同则执行该分支 子句 否则转向default分支最后退出switch语句特别说明switch后面的表达式必须为整型 字符型或枚举型case后面必须为常量表达式 且各个case值必须不同若无default分支 且无case分支匹配 则不执行case分支中的语句可以有多条 不需要花括号 switch 表达式 case常数表达式1 语句序列1case常数表达式2 语句序列2 case常数表达式n 语句序列ndefault 默认语句序列 switch语句的执行流程 switch示例 输出部分 printf Calendar2006 12 n printf n printf SuMoTuWeThFrSa n printf n 在指定位置输出该日的星期几信息 switch weekday caseSUNDAY printf 2d n date break caseMONDAY printf 6d n date break caseTUESDAY printf 10d n date break caseWEDNESDAY printf 14d n date break caseTHURSDAY printf 18d n date break caseFRIDAY printf 22d n date break caseSATURDAY printf 26d n date break default 没有缺省情况需要处理 printf n return0 break语句 break语句的目的终止switch语句的执行如果没有break语句 则程序会从指定的case分支开始 并在该分支结束后继续执行下去除非switch语句结束 后面的其他case分支或default分支中的语句都会得到执行原因 case子句中的常数表达式仅起到语句标号的作用 不是分支之间的分隔标记省略break语句的场合允许多个分支执行同样的代码 break示例 编写程序 接受用户输入的年份和月份 输出该月天数 include include zylib h intmain intyear month days of month BOOLleapyear FALSE 输入部分 printf Theprogramgetsayearandamonth andprintsdaysofthemonth n printf Theyear year GetIntegerFromKeyboard printf Themonth month GetIntegerFromKeyboard if month12 printf Montherror n return1 计算部分 leapyear year 4 0 分支结构的嵌套 考虑表达某企业的工资晋级计划 该计划向在公司长期服务的老员工和虽然服务年限较短但年龄偏大的员工倾斜 计划规定 若员工服务年限未达5年 则若年龄不小于28岁长一级工资 若服务年限已达5年 长两级工资 那些服务年限短的小字辈不再此次调整工资之列 设age表示员工年龄 service years表示服务年限 salary level表示工资级别 分支结构的嵌套 else与哪个if配对 if service years 28 salary level 1 elsesalary level 2 else与if配对规则离它最近 距离最短同层次 排除底层嵌套 if service years 28 salary level 1 elsesalary level 2 2 5while循环结构 while循环格式 while 表达式 循环体while循环执行流程先判断后执行 表达式为真时 执行一遍循环体 一次迭代 返回重新计算表达式的值以确定是否重复执行循环体 若表达式为假 则终止循环为保证循环终止 循环体内应有能改变表达式值的语句 while循环示例 编写程序 接受用户输入的多个整数求和 用户输入0时程序结束 include include zylib h intmain intn sum 0 输入与计算部分 printf Theprogramgetssomeintegers andoutputtheirsum n printf Tostop pleaseinput0 n printf Pleaseinputaninteger n GetIntegerFromKeyboard while n sum n printf Thenextinteger n GetIntegerFromKeyboard 输出部分 printf Thesumis d n sum return0 常见的程序结构 无限循环 发生无限循环的场合循环体内没有改变循环变量值的语句即使改变循环变量值 也不能否定循环条件循环体内没有能够强制终止循环执行的语句或命令无限循环的后果程序永远不会结束 大多数时有害 编程时一般应避免例外情况 循环体内有专门控制循环终止的语句或命令命令格式 满足某种条件下使用break语句 终止循环执行哨兵 使循环满足终止条件的循环变量值 使用break语句终止循环 输入与计算部分 printf Theprogramgetssomeintegers andoutputtheirsum n printf Tostop pleaseinput0 n while TRUE printf Pleaseinputaninteger n GetIntegerFromKeyboard if n 0 break sum n 使用无限循环和哨兵的优势不再需要将首个数据处理过程提到循环体前单独处理 continue语句 编写程序 接受用户输入的多个整数求和 注意 仅累加正整数 跳过所有负数 用户输入0时程序结束 include include zylib h intmain intn sum 0 count 0 count为输入整数的个数 输入与计算部分 printf Theprogramgetssomeintegers andoutputthesumofallpositivenumbers n printf Tostop pleaseinput0 n while TRUE count 1 printf Number d count n GetIntegerFromKeyboard if n 0 break 终止循环 if n 0 continue 仅终止循环的当前迭代 不累加负数值 sum n 输出部分 printf Thesumis d n sum return0 2 6for循环结构 递增递减表达式for语句for与while的比较循环嵌套 递增递减表达式 递增递减表达式的优先级非常高前缀递增递减格式 变量名称 变量名称 例一 设a为1 a等价于a a 1 a结果为2例二 设a为1 a等价于a a 1 a结果为0计算要诀 先递增递减 再参与运算例三 设a为1 b a 3等价于a a 1 b a 3 a结果为2 b结果为6例四 设a为1 b a 3等价于a a 1 b a 3 a结果为0 b结果为0 递增递减表达式 后缀递增递减格式 变量名称 变量
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:乔林-计算机程序设计基础(第2版)
链接地址:https://www.renrendoc.com/p-74277575.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

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