




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
龚涛 东华大学信息科学与技术学院 1 第3章预处理和语句 转向语句 循环语句 选择语句 语句 预处理功能 龚涛 东华大学信息科学与技术学院 2 C 语言程序是由若干个文件组成的 文件又是由若干个函数组成的 而函数便是由若干个语句组成 每条语句实现一个操作 若干个语句实现一种功能 C 语句的预处理功能是指C 语言源程序中可以包含使用的各种编译命令 而这些编译命令由于它们是在程序被正常编译之前执行的 故称为预处理命令 或指令 这些命令所实现的功能称为预处理功能 预处理命令是编译命令 它不是语句 不要用分号结束 文件包含命令条件编译命令宏定义命令 3 1预处理功能 第3章预处理和语句 龚涛 东华大学信息科学与技术学院 3 3 1 1文件包含命令 3 1预处理功能 文件包含命令格式如下 include或者 include 文件名 文件名以尖括号 括起是指那些由系统提供的并放在指定子目录中的头文件 文件名以双括号 括起是指那些由用户自己定义的放在当前目录或其他目录下的头文件或其他源文件 一条文件包含命令只能包含一个文件 若想包含多个文件 则必须用多条文件包含命令 在被包含的文件中还可以使用文件包含命令 文件包含命令可以嵌套使用 包含不宜太多 龚涛 东华大学信息科学与技术学院 4 3 1 2条件编译命令 条件编译命令是用来定义某些编译内容要在满足一定条件下才参与编译 否则将不参与编译 因此 利用条件编译命令可以使同一个源程序在不同的编译条件下产生不同的目标代码 利用条件编译可在调试程序时增加一些调试语句 以达到跟踪的目的 当程序调试好后 重新编译时 再让调试语句不参与编译 1 格式一 ifdef else endif 3 1预处理功能 龚涛 东华大学信息科学与技术学院 5 3 1 2条件编译命令 3 1预处理功能 2 格式二 ifndef else endif 3 格式二 if elif else endif 龚涛 东华大学信息科学与技术学院 6 3 1 3宏定义命令 3 1预处理功能 宏定义命令用来将一个标识符定义为一个字符串 该标识符被称为宏名 被定义的字符串称为替换文本 1 简单的宏定义 define一个标识符被宏定义后 该标识符便是一个宏名 在程序中出现的是宏名 在该程序被编译时 先将宏名用被定义的字符串替换 这称为宏替换 替换后才进行编译 宏替换是简单的代换 龚涛 东华大学信息科学与技术学院 7 3 1 3宏定义命令 3 1预处理功能 使用简单的宏定义可以定义符号常量 但在C 语言中 常用const来定义符号常量 两种方法是有区别的 其主要区别有 const将产生一个具有类型的符号 用 define命令仅产生文本替换 而不管内容是否正确 使用const可以定义一个局部常量 使其作用域局限在一个函数体内 而用 define定义的常量 尽管在某个函数体内 但它的作用域是从定义时开始 直到使用 undef取消其定义时为止 如果不取消其定义 则直到整个文件结束 使用const定义常量是一个说明语句 以分号结束 而用 define定义常量是一个预处理命令 不能用分号结束 龚涛 东华大学信息科学与技术学院 8 3 1 3宏定义命令 3 1预处理功能 2 带参数的宏定义 define 中可以有一个参数 也可以有多个参数 多个参数用逗号分隔 在替换时 中与参数表中相同的标识符的字符序列将被程序中引用这个宏定义时提供的与该标识符对应的字符序列所替换 在宏定义时出现的参数称为形参 在程序中引用宏定义时出现的参数称为实参 在宏替换时 将用实参来替换中所出现的形参 龚涛 东华大学信息科学与技术学院 9 3 1 3宏定义命令 3 1预处理功能 例3 5分析下列程序的输出结果 includevoidmain intb 5 defineb2 definef x b x inty 3 cout f y 1 endl undefbcout f y 1 endl defineb3cout f y 1 endl 程序中出现了 define和 undef预处理命令 在宏定义中 有简单的 也有带参数的 在宏定义 definef x b x 中 如果对b的宏定义没有取消 那么b是符号常量b 而不是变量b 因为预处理命令在编译之前执行 龚涛 东华大学信息科学与技术学院 10 C 语言提供了丰富的语句 这些语句足以组成结构化程序设计所需要的3种基本控制结构 连续结构 选择结构和循环结构 C 语言所提供的语句包括如下几种 表达式语句和空语句 复合语句 选择语句 循环语句 转向语句 3 2语句 第3章预处理和语句 龚涛 东华大学信息科学与技术学院 11 3 2 1表达式语句和空语句 3 2语句 C 语言中任何一个表达式加上分号 便是表达式语句 空语句是指只有一个分号的语句 a 3 b x a b 龚涛 东华大学信息科学与技术学院 12 3 2 2复合语句和空语句 3 2语句 复合语句是由两条或两条以上的语句组成 并由一对花括号 括起来的语句 复合语句在语法上相当于一条语句 复合语句又称为块语句 复合语句可以嵌套 即复合语句中还可以包含复合语句 含有一条或多条说明语句的复合语句称为分程序 也称为块结构 复合语句常用来作为if语句的if体 else体 或者作为循环语句的循环体等 龚涛 东华大学信息科学与技术学院 13 3 3选择语句 选择语句是C 语言程序经常使用的语句 可用它构成选择结构 选择语句有两种 一种是条件语句 即if语句 另一种是开关语句 即switch语句 它们都可以用来实现多路分支 这种语句具有一定的判断能力 它可以根据给定的条件来决定执行哪些语句 不执行哪些语句 第3章预处理和语句 龚涛 东华大学信息科学与技术学院 14 3 3 1条件语句 3 3选择语句 条件语句具有如下格式 if elseif elseif elseif else其中 if elseif else是关键字 if 龚涛 东华大学信息科学与技术学院 15 3 3 1条件语句 3 3选择语句 例3 6比较两个数的大小 includevoidmain intx y cout x y if x y if x y couty endl elsecout x y n elsecout x y n 龚涛 东华大学信息科学与技术学院 16 3 3 1条件语句 3 3选择语句 例3 7分析下列程序的输出结果 includevoidmain inta b a b 5 if a 1 if b 5 a b cout a endl else a b cout a endl cout a b endl 该程序中出现了if语句的嵌套 这里只有一个else 它显然应该属于距它最近的if 即属于if b 5 的else 龚涛 东华大学信息科学与技术学院 17 3 3 2开关语句 3 3选择语句 开关语句具有如下格式 switch case case case default 其中 先计算switch后面括号内的表达式的值 然后 将该值与花括号内case后面的的值进行比较 龚涛 东华大学信息科学与技术学院 18 3 3 2开关语句 3 3选择语句 例3 9编程统计从键盘上输入的数字中每种数字的个数和其他字符的个数 并以字符 作为输入结束符 includevoidmain charc intnother 0 ndigit 10 for inti 0 i c while c switch c case 0 case 1 case 2 case 3 case 4 case 5 case 6 case 7 case 8 case 9 ndigit c 0 break default nother cin c cout digiter for i 0 i 10 i cout ndigit i cout nother nother endl 龚涛 东华大学信息科学与技术学院 19 3 4循环语句 C 语言中提供了3种循环语句 一种是while循环语句 一种是do while循环语句 另一种是for循环语句 它们的共同特点是根据循环条件来判断是否执行循环体 3 4 1while循环语句该语句格式如下 while 其中 该条件给出了一个表达式 通过计算该表达式 可决定是否执行循环体 当表达式的值为非零时 执行循环体 否则退出该循环 即执行该循环后边的语句 第3章预处理和语句 龚涛 东华大学信息科学与技术学院 20 3 4 1while循环语句 3 4循环语句 例3 11编程求出自然数1 10之和 includevoidmain inti 1 sum 0 while i 10 sum i i cout sum sum endl 龚涛 东华大学信息科学与技术学院 21 3 4 2do while循环语句 3 4循环语句 该循环语句具有如下格式 dowhile 该循环语句的功能如下 先执行一次 即循环体 然后计算所给出的表达式值 如果其值为非零 则再次执行循环体 直到其值为零才退出该循环 并执行该循环后边的语句 do while循环与while循环的区别在于do while循环至少执行一次循环体 而while循环可能一次也不执行循环体 龚涛 东华大学信息科学与技术学院 22 3 4 2do while循环语句 3 4循环语句 例3 12用do while循环编程求出自然数1 10之和 includevoidmain inti 1 sum 0 do sum i while i 10 cout sum sum endl 龚涛 东华大学信息科学与技术学院 23 3 4 3for循环语句 3 4循环语句 该循环语句具有如下格式 for d1 d2 d3 d1表达式用来表示给循环变量初始化 d2表达式用来表示循环是否结束的条件 若该表达式值为非零 则执行循环体 否则退出循环 d3表达式用来作为循环变量的增 减量 在for循环中 d1表达式只计算一次 可以放在for循环前面 d3表达式每执行完循环体后计算一次 可放在循环体中 因此for循环格式可以与while循环互换 龚涛 东华大学信息科学与技术学院 24 3 4 4多重循环 3 4循环语句 所谓多重循环是指在循环体内还有循环语句 这又称为循环的嵌套 C 语言中提出的上述3种循环不仅可以自身嵌套 而且可以相互嵌套 嵌套时应该注意的是要在一个循环体内包含另一个完整的循环结构 do while循环的自身嵌套for循环内嵌套while循环while循环内嵌套for循环 for循环又自身嵌套while循环内嵌套do while循环for循环内嵌套while循环和do while循环 龚涛 东华大学信息科学与技术学院 25 3 4 4多重循环 3 4循环语句 例3 15分析下列程序的输出结果 includevoidmain inti 1 a 0 for i 5 i do i a while i 3 i cout a i endl 龚涛 东华大学信息科学与技术学院 26 3 4 4多重循环 3 4循环语句 例3 16编程求出50 100之内的素数 include include defineMIN51 defineMAX100voidmain inti j k n 0 for i MIN i k 1 if n 6 0 cout endl n cout i cout endl 龚涛 东华大学信息科学与技术学院 27 3 5转向语句 C 语言中提供了goto break和continue等转向语句 其中 goto是非结构化控制语句 而break和continue是半结构化控制语句 它们会改变语句的执行顺序 因此 应在程序中尽量少用 goto语句 goto break语句 break 用于退出开关语句 用于退出该重循环 continue语句 continue 该语句只在循环体中用来结束该次循环 第3章预处理和语句 龚涛 东华大学信息科学与技术学院 28 3 5 1goto语句 3 5转向语句 例3 18编程程序 从一个已知的二维数组中查找出第一次出现负数的数组元素 includevoidmain intj num 2 3 cout num i j for i 0 i 2 i for j 0 j 3 j if num i j 0 gotofound cout notfound n gotoend found cout num i j num i j endl end 龚涛 东华大学信息科学与技术学院 29 3 5 1goto语句 3 5转向语句 例3 18不用goto语句编程从已知的二维数组中查找出第一次出现负数的数组元素 includevoidmain intj num 2 3 flag 0 cout num i j for i 0 i 2 龚涛 东华大学信息科学与技术学院 30 3 5 2break语句 3 5转向语句 例3 19编程将从键盘上输入的若干个正数求和 遇到负数则终止程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动合同转让协议书
- 房屋工程施工承包合同
- 品牌经营场地租赁合同
- 小额贷款公司合同
- 借款居间服务合同借款合同
- 房屋租赁中介委托合同
- 公对公借款合同与公对私借款合同
- 快递运输费用服务合同
- 保洁开荒服务合同
- 送货租车协议合同
- 常见酸碱盐的鉴别
- (正式版)JBT 14449-2024 起重机械焊接工艺评定
- 新安法下怎样做到「尽职免责」
- 2022年10月自考00830现代语言学试题及答案含解析
- 三年级下册数学计算去括号练习400道及答案
- 2024年四川蓬安相如旅游开发有限责任公司招聘笔试参考题库含答案解析
- 统编版语文四年级下册第二单元 快乐读书吧:十万个为什么 整书阅读 课件
- 保安员心理测试题及答案
- YY/T 0489-2023一次性使用无菌引流导管及辅助器械
- 中医药适宜技术颈椎病课件
- 幼小衔接视野下大班幼儿学习习惯的现状调查及养成策略研究
评论
0/150
提交评论