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

下载本文档

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

文档简介

C语言程序设计 第一章C语言与程序的算法 主要内容 1 1简单的C程序及特点1 2C程序的上机操作1 3程序的算法 1 1简单的C程序及特点 1 1 1几个简单的C程序1 1 2C程序的特点 1 1 1几个简单的C程序 实例1 1 显示HelloWorld include stdio h main printf Hello World n 说明 include用来引用C语言的库函数文件 stdio h是标准输入输出库函数文件 main表示主函数的名字 每一个C程序都必须有一个main 函数 函数体由若干行语句组成 由大括弧 括起来 函数体中的每一条语句以分号结尾 printf 是C语言中的输出函数 其中的 n 是换行符 表示自动换行 实例1 2 计算并显示购物的应付款 include stdio h main inta b money 定义了三个变量名 a 1219 b 23 设单价a 1219元 台 数量b 23台 money a b printf 应付款是 d元 n money 说明 表示注释 增加注释的目的是为了方便人阅读或修改程序 程序被编译时它将被忽略 在运行时不起作用 注释可以添加在程序中的任何位置 d 是输入输出的 格式字符串 表示以十进制整数形式输出money的值 实例1 3 显示使用字符拼成的图案 include stdio h main voidstars void 声明函数stars stars 调用函数stars printf 你好 我是小罗 n stars 调用函数stars voidstars 定义函数stars printf n 说明 该程序由两个函数组成 一个是主函数main 另一个是显示星号的函数stars 实例1 4 求两个数的较大数 include stdio h main inta b c 定义三个整型变量a b c intmax int int 声明函数max printf a scanf d 返回比较结果z 1 1 2C程序的特点 1 函数是C程序的基本构成单位2 C程序中的函数的组成函数的头部 即函数的第一行 包括函数返回值类型 函数名 函数形参名及函数形参类型的说明 函数体 使用一对大括号 括起来 通常由声明部分和执行部分组成 3 C程序从主函数main 开始执行4 C程序中的每个语句必须以分号结尾5 C程序的输入与输出操作是通过调用头文件stdio h中的库函数scanf 和printf 来实现6 C程序的注释 增加注释的目的是为了方便人阅读或修改程序 程序被编译时它将被忽略 在运行时不起作用 1 2C程序的上机操作 1 2 1C程序的上机操作过程1 2 2C程序的编译器1 2 3VisualC 6 0环境下C程序的操作过程 1 2 1C程序的上机操作过程 1 2 2C程序的编译器 在DOS平台上使用的TurboC在Windows平台上使用的BorlandC 和MicrosoftVisualC 在Linux平台上使用的GCC 1 2 3VisualC 6 0环境下C程序的操作过程 1 编辑C语言源程序2 编译C语言源程序3 连接目标程序4 执行目标程序操作演示 1 3程序的算法 1 3 1算法的概念与特性1 3 2算法描述方法 1 3 1算法的概念与特性 1 算法的概念数据结构 算法 程序对于人来说算法是为解决一个问题而采取的方法 而对于计算机来说算法是具体的实实在在的操作序列或语句序列 2 算法的特性有穷性 确定性 有零个或多个输入 有一个或多个输出 有效性 1 3 2算法描述方法 1 用自然语言表示算法 实例1 5 用自然语言描述1 2 3 1000的算法 算法 S1 把1存入变量i中 S2 把0存入变量s中 S3 把i的值和s的值相加 相加结果再次存入变量s中S4 把变量i的值增加1 相加结果再次存入变量i中 S5 如果变量i的值不大于1000 则返回到S3 从第S3步起重复进行操作 否则继续下面操作 S6 将s的值输出 结束 2 用流程图表示算法 3 用计算机语言表示算法 include stdio h main inti s i 1 s 0 while i 1000 s s i i i 1 printf d n s 本章小结 本章从初学者的角度出发 重点回答了C程序是什么 它有什么特点 又如何上机操作以及其算法如何描述等问题 ClassOver Thanks 主要内容 2 1标识符2 2C语言的数据类型2 3常量2 4变量2 5各类数值型数据之间的混合运算2 6运算符与表达式 2 1标识符 每种程序语言都规定了在程序里如何描述名字 程序语言的名字 这些通常被称为标识符 C语言中允许用作标识符的字符有 26个英文字母 区分大小写数字0 1 9下划线 标识符构成规则为 第一个字符必须是字母或下划线 后面可以跟随任意的字母 数字或下划线 只有头31个字符为有效字符 不能包含空格符 不能使用关键字 C语言关键字表格 2 2C语言的数据类型 C语言支持三种数据类型 基本数据类型派生数据类型自定义数据类型 基本数据类型如下图 2 3常量 在程序运行中 其值不能被改变的量称为常量 2 3 1整型 实型及符号常量整型常量十进制八进制十六进制 2 实型常量由整数部分和小数部分组成 只能十进制表示 定点数形式指数形式 3 符号常量定义形式 define标识符常量其中 define称为宏定义命令 一经定义 以后在程序中所有出现该标识符的地方均代之以该常量值 2 3 2字符型常量1 字符常量特点 只能用单引号括起来只能是单个字符字符可以是字符集中任意字符 特殊形式的字符常量 转义字符常量 以反斜杠符 开头 后跟字符的字符序列 2 字符串常量由一对双引号括起的字符序列 与字符常量相比 区别有 字符常量由单引号括起来 字符串常量由双引号括起来字符常量只能是单个字符 字符串常量则可以含一个或多个字符可以把一个字符常量赋予一个字符变量 但不能把一个字符数组来存放一个字符串常量字符常量占一个字节的内存空间 2 4变量 2 4 1变量的概念在程序运行中 其值可以被改变的量称为变量 变量的构成两元素 变量名变量值 2 4 2变量的定义1 变量定义一般形式 存储类型 数据类型变量1 变量2 书写时 注意 允许在一个类型说明符后定义多个同类型的变量 用逗号分隔即可类型说明符与变量名之间至少用一个空格间隔最后一个变量名之后用 结束变量定义必须放在变量使用之前 一般放在函数体的开头 2 变量的初始化一般形式 存储类型 数据类型变量名1 初值1 变量名2 初值2 2 5各类数值型数据之间的混合运算 变量的数据类型转换分为两种 自动转换强制转换 1 各类数值型数据间的自动转换 2 各类数值型数据间的强制类型转换一般形式 类型说明符 表达式 需注意以下问题 类型说明符和表达式都必须加括号 单个变量可以不加 无论是强制还是自动转换 都是为了本次运算的需要而对变量的数据长度进行的临时性转换 而不改变数据说明时对该变量定义的类型 2 6运算符与表达式 算术运算符关系运算符逻辑运算符位操作运算符赋值运算符 条件运算符逗号运算符指针运算符求字节数运算符特殊运算符 2 6 1算术运算符与算术表达式1 C语言运算符简介 2 算术运算符与算术表达式基本算术运算符自增运算符 与自减运算符 算术表达式 2 6 2赋值运算符与赋值表达式赋值运算符由 连接的式子称为赋值表达式 一般形式 变量 表达式 2 类型转换规定如下 实型赋予整型 舍去小数部分整型赋予实型 数值不变 但将以浮点形式存放字符型赋予整型 由于字符型为一个字节 而整型为两个字节 故将字符的ASCII放到整型量的低八位中 高八位为零 3 复合赋值运算符在赋值符 之前加上其他二目运算符可构成复合赋值符 二目运算符 一般形式为 变量双目运算符 表达式 2 6 3逗号运算符与逗号表达式功能 把两个表达式连接起来组成一个表达式 称为逗号表达式一般形式为 表达式1 表达式2其求值过程是分别求两个表达式的值 并以表达式2的值作为整个逗号表达式的值 使用逗号表达式还需注意 逗号表达式一般形式中的表达式1和表达式2也可以又是逗号表达式程序中使用逗号表达式 通常是要分别求逗号表达式内各表达式的值 并不一定要求整个逗号表达式的值 3 第三章 数据输入与输出 3 1包含文件与库函数 3 1 1包含文件 include includevoidmain printf THEORYANDPROBLEMS n printf of n printf PROGRAMMINGWITHC n 程序第一行表明本程序包含stdio h文件 3 1包含文件与库函数 3 1 1包含文件 include这种位于文件开始部分的被包含文件通常称为 标题文件 或 头文件 并以 h 作为后缀 如C标准库函数中的各种 头文件 包含文件 处理是使用 include命令把给定的包含文件的内容嵌入到另一个源程序文件中 其一般形式是 include 文件名 或 include 3 1包含文件与库函数 3 1 1包含文件 include include 文件名 用于嵌入指定目录下用户自己的头文件 include 用于嵌入标准目录中的头文件 如 include include include graphics h include file h 3 1包含文件与库函数 3 1 2标准库函数 标准库函数是ANSIC语言标准的一个重要组成部分 标准库通常包含了一组标准头文件和一个或几个库函数代码文件 库代码文件里主要是各个标准函数的实际机器指令代码段 还有一些相关数据结构 一些实现标准库所需的变量等 2 常见标准库函数 1 字符类型函数 用于对字符按ASCII码分类 字母 数字 控制字符 分隔符 大小写字母等 2 转换函数用于字符或字符串的转换 在字符量和各类数字量 整型 实型等 之间进行转换 在大 小写之间进行转换 3 1包含文件与库函数 3 1 2标准库函数 3 目录路径函数用于文件目录和路径操作 4 诊断函数用于内部错误检测 5 图形函数用于屏幕管理和各种图形功能 6 输入输出函数用于完成输入输出功能 7 接口函数用于与DOS BIOS和硬件的接口 8 字符串函数用于字符串操作和处理 3 1包含文件与库函数 3 1 2标准库函数 9 内存管理函数用于内存管理 10 数学函数用于数学函数计算 11 日期和时间函数用于日期 时间转换操作 12 进程控制函数用于进程管理和控制 13 其它函数用于其它各种功能 3 2 1格式输出函数 printf基本形式是 printf 控制字符串 输出项列表 功能 按规定的输出格式 把输出项依次输出到系统指定的缺省输出设备 通常为显示器 输出项可以是变量 常量 或表达式 其间用逗号分隔 3 2数据输入输出 数据是程序处理的对象 输入输出操作是程序中不可缺少的部分 C中输入输出操作都是通过函数调用实现的 C提供了一个 标准I O库 c按字符型输出 d按十进制整数输出 u按无符号整数输出 f按浮点型小数输出 o按八进制整数输出 x按十六进制整数输出 s按字符串输出 控制字符串包括格式控制说明符和普通字符两个部分 格式控制说明 表3 7 1 字符 使用修饰符 可以控制输出的宽度 精度 小数位数 对齐方式等 例如 1 字段宽度 6d表示以字段宽度为6个字节显示一个整数 设i 123 printf 6d n i 输出 123printf 06d n i 输出 000123设x 1234 567printf 9 3f n x 输出 1234 567 2 负号不用负号为右对齐 用负号为左对齐printf 9 3f n x 输出 1234 567 3 字符l和h ld hd hu 4 字符 printf d n 5 i 输出 123printf d n w i 输出 以w宽度显示Iprintf f n 7 2 x 输出 1234 563 普通字符 原样输出的字符可打印字符 直接写出字符不可打印字符 使用转义字符 n t a例如 m 3 n 12 printf num1 d tnum2 d n m n 显示 num1 3 num2 12printf f n 95 6 显示 95 6 3 2 2字符输出函数 putchar功能 将一个字符输出在显示屏上 显示参数可以是字符变量 字符常量 字符ASCII码 putchar A 显示大写字母Aputchar 97 显示小写字母a如果 c putchar c 显示字符 输入输出函数被包含在库函数 stdio h 中 使用这些函数时 要使用预处理命令 include stdio h 但printf和scanf可缺省 例3 4 include stdio h main chara b c a A b B c 007 putchar a putchar b putchar n putchar c sleep 5 putchar c putchar A putchar B putchar n putchar 007 sleep 3 putchar 007 输出 AB 响铃一次 隔5秒后再响铃一次AB 响铃一次 隔3秒后再响铃一次 3 2 3格式输入函数 scanf功能 从键盘输入数据 按指定的输入格式把数据赋给相应的输入项 格式 scanf 控制字符串 输入项列表 注意 接收数据的变量必须用其地址表示 控制字符串与输入的表示方法相似 注意不同点 字符 输入时 用于跳过其相应的数据 scanf d d 输入3445时 i为45 3 空格字符功能 输入字符型数据时 跳过输入流中所有空格字符 scanf d d c 输入应为 100 200 b 表示以逗号为分隔符 结果 i为100 j为200 ch为b 3 2 4字符输入函数 getchar格式 getchar 无参数 只能接收一个字符 功能 从键盘上输入一个可打印字符 函数的返回值为该字符的ASCII码 使用时 通常将其返回值赋于某个字符变量或整型变量 例如 include stdio h main charc c getchar putchar c c 007 putchar c putchar 007 例 输入一个字符 输出其前导字符 字符和后续字符 include stdio h main charc intc1 c2 c getchar c1 c 1 c2 c 1 printf c c c n c1 c c2 printf d d d n c1 c c2 输入 B输出 ABC656667 程序举例例 输入一个0 255间的十进制整数 分别以十六进制数 八进制数 二进制数形式输出该数 main unsignedchari j printf Pleaseinputanumberlessthan256 n scanf d j i 6 运行结果是 Pleaseinputanumberlessthan256195Thehexadecimalexpressofiis0 xc3Theoctalexpressofiis0303Thebinaryexpressofiis11000011 3 2 5使用cin和cout的数据输入输出 C 为了方便使用 除了可以利用printf 和scanf 函数进行输入输出外 还增加了标准输入输出流cin和cout 它们都是在头文件iostream h中定义的 1 用cout进行数据输出cout必须和输出运算符 一起使用 在这里不是作为位运算的左移运算符 而是起插入的作用 例如 cout Howareyou n 的作用是将字符串 Howareyou n 插入到输出流cout中 也就是输出在标准输出设备上 n控制换行 也可用控制符endl代表回车换行操作 作用与 n相同 endl的含义是endofline 表示结束一行 可以在一个输出语句中使用多个运算符 将多个输出项插入到输出流cout中 运算符的结合方向是自左至右 因此各输出项按自左至右的顺序插入到输出流中 例如 floati 3 56 intj 20 chark a cout i i j j k k endl 输出结果为 i 3 56 j 20 k a注意 每输出一项要用一个 符号 不能写成cout i j k 形式 可以看到在输出时并未指定数据的类型 如整型 浮点型 系统会自动按数据的类型进行输出 这比printf 函数方便 在printf 函数中要指定输出格式符 如 d f e等 2 用cin进行数据输入 常称为 提取运算符 cin要与 配合使用 例如 inti floatj cin i j 输入一个整数和浮点数 注意不要写成cin i j 可以从键盘上输入 4567 34 数据间用空格分隔 i和j分别获得值45和67 34 用cin和 输入数据同样不需要在本语句中指定数据类型 应用示例 例 利用cin和cout进行数据的输入输出 include iostream h voidmain cout age cout yourageis age endl 运行情况如下 pleaseenteryourage 20yourageis20 程序中对变量的定义放在执行语句之后 C语言中是不允许这样的 它要求声明部分必须在执行语句之前 而C 允许对变量的声明放在程序的任何位置 但必须在使用该变量之前 这是C 对C限制的放宽 C 为流的输入输出提供了格式控制 如 dec 用十进制形式 hex 用十六进制形式 oct 用八进制形式 还可以控制浮点数的输出精度等 在此不详述 需要时可查阅有关书籍 程序的输入输出功能是通过调用系统提供的标准库函数实现的 利用printf 函数可以输出各种类型的数据 可以使用控制符按照需要方式显示输出信息 利用scanf 函数可以从键盘输入数据 也可以使用控制符按照需要方式输入信息 利用getchar 和putchar 函数可以输入或输出单个字符 除使用scanf 和printf 以外 要使用其他标准的I O库函数 必须在源程序前使用预处理命令 include stdio h 第三章小结 第四章控制语句 4 1程序的基本结构程序的基本结构有三种 顺序结构 分支结构 循环结构前面的例子都是顺序结构 大量的实际问题需要通过各种控制流程来解决 分支和循环结构的控制语句有 条件语句 if语句开关语句 switch语句循环语句 for语句 while语句 dowhile语句转移语句 break continue goto语句 4 1程序的基本结构 4 1程序的基本结构 4 2简单语句和复合语句 简单语句 均是以 结尾的语句 z x y c getchar 复合语句 复合语句是用花招号 把 说明 和若干个有序的简单语句组合在一起而构成的语句集合 其一般形式是 4 2简单语句和复合语句 复合语句实例 inti j k i i 1 j j 2 i k j 空语句 空语句的含义是什么动作都不执行 语句本身仅有一个分号 while putchar getchar 0 空语句 4 3if语句功能 根据条件是否成立 决定完成什么功能 三种结构 单选 二选一 多选一 4 4 1if流程功能 单选 形式如下 if 表达式 语句 或复合语句 语句流程如右图所示 例如 If s1 s2 s3 4 0 90 printf AV score f n s1 s2 s3 4 0 printf excellence n 4 4 2ifelse流程功能 二选一分支结构 基本形式如下 if 表达式 语句A else语句B 语句流程如右图所示 例如 取b的绝对值 if b 0 a b elsea b 用三目运算表示为 a b 0 b b 取较大值的三目运算表示为 max a b a b 注意 语句嵌套结构中if与else的配对if 表达式 if 表达式 if 表达式 语句 if 表达式 else语句 语句 else语句 例 输入一个字母 如果是大写 转换为小写 否则 不转换 main charch scanf c 4 4 3elseif流程功能 多选一分支结构 基本形式如下 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式n 语句n else语句n 1 例 编写一个实现两个数的运算的程序 main floatx y charch printf Inputtworealnumbersandanoperator n scanf f f c elseif ch printf x y f n x y elseif ch if y 0 0 printf x y f n x y elseprintf xcannotbedividedby0 0 n elseprintf Invalidoperator n 运行结果 输入 125 输出 x y 17 0输入 125 输出 x y 7 0输入 125 输出 x y 60 0 4 4switch多路开关语句使用ifelse的多重嵌套方式 可以实现多路分支的判定结构 但C提供了另一种更为方便简洁的进行多重选择的语句switch 基本形式 switch 表达式 case常数1 语句1break case常数2 语句2break case常数n 语句nbreak default 语句n 1 例4 7 从键盘输入一个月号 1 12 并显示该月号的英文名称 includemain intmonth scanf d case6 printf June break case7 printf July break case8 printf August break case9 printf September break case10 printf October break case11 printf November break case12 printf December break default printf DataError break switch后面圆括号内的表达式的值和case后面的常量表达式的值 都必须是整型或字符型 不允许是浮点型 同一个switch语句中的所有case后面的常量表达式的值都必须互不相同 如下例的写法就是非法的 switch c case s case s switch语句中的case和default的出现次序是任意的 也就是说 default也可以位于case的前面 且case的次序也不要求按常量表达式的顺序排列 由于switch语句中的 case常量表达式 部分只起语句标号的作用 而不进行条件判断 所以 在执行完某个case后面的语句后 将自动转到该语句后面的语句去执行 直到遇到switch语句的右花括号或 break 语句为止 而不再进行条件判断 每个case的后面既可以是一个语句 也可以是多个语句 当是多个语句的时候 不需要用花括号括起来 多个case的后面可以共用一组执行语句 如下例所示 switch n case1 case2 x 10 break 它表示当n 1或n 2时 都执行 x 10 和 break 这两条语句 第五章循环控制 概述 总体要求 理解为什么使用循环结构熟练掌握while do while和for循环的使用理解while和do while循环的区别理解break和continue语句的用法熟练使用嵌套循环核心技能点 理解循环结构的用法 并且能够灵活运用循环结构解决一些基本的问题 相关知识点 运算符和表达式学习重点 for循环 while循环 do while循环基本语法格式以及循环条件的确定 5 1循环概述 循环结构是程序设计的基本结构之一 其特点是 在给定条件成立时 反复执行某程序段 直到条件不成立为止 给定的条件称为循环条件 反复执行的程序段称为循环体 a 循环结构流程1 b 循环结构流程2 5 1循环概述 C语言提供了多种循环语句 可以组成各种不同形式的循环结构 1 while语句 2 do while语句 3 for语句 5 2while语句 while语句的一般形式为 while 表达式 语句 5 2while语句 实例5 1 求 即1 2 3 100 includevoidmain charc intn 0 printf 请输入一行字符 n c getchar while c n if c A 5 2while语句 实例5 2 统计从键盘输入一行字符中英文字母的个数 includevoidmain charc intn 0 printf 请输入一行字符 n c getchar while c n if c A 5 3do while语句 do while语句的一般形式为 do语句 while 表达式 5 3do while语句 实例5 3 while和do while循环的比较 include while循环 voidmain inti sum 0 printf i scanf d 5 3do while语句 实例5 3 while和do while循环的比较 include do while循环 voidmain inti sum 0 printf i scanf d 5 3do while语句 当输入i的值小于或等于10时 二段程序得到的结果相同 当输入i的值大于10时 二段程序得到的结果就不相同了 5 4for语句 for语句的一般形式为for 表达式1 表达式2 表达式3 语句 for后面括号内的三个表达式之间用分号 隔开 其中表达式1 一般为赋值表达式 为循环控制变量赋初值 表达式2 一般为关系表达式或逻辑表达式 作为控制循环结束条件 当表达式值为非0时 循环继续 当表达式值为0时 循环终止 表达式3 一般为赋值表达式 为循环控制变量增量或减量 for中的语句为循环体 可以是单语句 也可以是复合语句 5 4for语句 for控制语句的执行过程如下 首先计算表达式1 为循环控制变量赋初值 计算表达式2 检查循环控制条件 若表达式2的值为真 执行一次循环体 若为假 控制转出循环结构 执行完一次循环体后 计算表达式3 对控制变量进行增量或减量操作 再重复第 2 步操作 5 4for语句 1 for语句的任何一个表达式都可省略 但不能省略分号 省略表达式后 使for语句有几种变化形式 增强了它的灵活性和实用性 1 省略表达式1 此时应在for语句之前给循环变量赋初值 例如 i 1 for i 100 i 分号不能省 sum i 2 省略表达式3 但此时应另外设法让循环变量递进变化 以保证循环能正常结束 例如 for i 1 i 100 分号不能省 sum i 同时改变循环变量i的值 3 省略所有表达式当for语句中没有表达式2时 编译程序将解释为表达式2的值为1 循环判定条件为真 循环将无限进行下去 称为死循环 for 循环体 5 4for语句 2 for语句中可应用逗号表达式 使两个或多个控制变量同时控制循环 例如 设value在前面的程序中已赋为某一正整型值 for i 0 j value i j i j 循环体 表达式1和表达式3均为逗号表达式 表达式1为i j赋初值 表达式3对i增1 对j减1 当i大于等于j时 循环结束 5 4for语句 实例5 6 一百万富翁遇到一个陌生人 陌生人找他谈一个换钱的计划 该项计划如下 我每天给你十万元 而你第一天只需给我一分钱 第二天我仍给你十万元 你给我二分钱 第三天我仍给你十万元 你给我四分钱 你每天给我的钱是前一天的两倍 直到满一个月 30天 百万富翁很高兴 欣然接受了这个契约 请编写一个程序计算这一个月中陌生人给了百万富翁多少钱 百万富翁给陌生人多少钱 5 4for语句 includevoidmain inti longtotal1 total2 n total1 n 1 百万富翁第一天给陌生人的钱 total2 100000 陌生人第一天给百万富翁的钱 for i 2 i 30 i n n 2 百万富翁第i天给陌生人的钱 total1 total1 n 百万富翁第i天后共给陌生人的钱 total2 total2 100000 陌生人第i天后共百万富翁的钱 total1 total1 100 printf 百万富翁给陌生人 ld元 n陌生人给百万富翁 ld元 n total1 total2 5 5循环结构的嵌套 C语言中三种循环结构可以任意组合嵌套 5 5循环结构的嵌套 C语言中三种循环结构可以任意组合嵌套 5 5循环结构的嵌套 实例5 8 打印如下所示由 组成的三角形 5 5循环结构的嵌套 includevoidmain inti j k for i 0 i 0 j printf for k 0 k 2 i 1 k printf printf n 5 6break语句和continue语句 break语句break语句可用于switch语句中 使某case子句执行完后 控制立即跳转出switch结构 实现多路分支 此外 break语句还有一种常用方式 在for while和dowhile循环结构中 当需要循环在一定条件下提前终止时 break语句可用于控制立即跳转出循环结构 break语句提供了通过中间测试使循环结束的中间出口方法 5 6break语句和continue语句 continue语句continue语句只能用于循环结构 与break语句不同的是 continue语句不能强制控制立即跳转出循环结构 而是忽略continue后面的语句 直接进入本循环结构的下一次循环操作 在while和dowhile循环结构中 continue立即转去检测循环控制表达式 以判定是否继续进行循环 在for语句中 则立即转向计算表达式3 以改变循环控制变量 再判定表达式2 以确定是否继续循环 本章小结 1 循环结构的特点是 在给定条件成立时 重复执行某程序段 直到条件不成立为止 2 while循环用于在给定条件为真的情况下重复执行一组操作 while循环先判断后执行 3 do while循环先执行后判断 因此循环将至少执行一次 4 在循环中 需要修改循环变量的值以改变循环条件 否则有可能形成死循环 5 for循环与while循环类似 属于先判断后执行 6 for语句中有三个表达式 表达式1通常用来给循环变量赋初值 表达式2通常是循环条件 表达式3用来更新循环变量的值 7 for语句中的各个表达式都可以省略 但要注意分号分隔符不能省略 8 如果省略表达式2和表达式3需要在循环体内设法结束循环 否则会导致死循环 9 break语句用在循环中时 可以直接终止循环 将控制转向循环后面的语句 10 continue语句的作用是跳过循环体中剩余的语句而执行下一次循环 11 嵌套循环时 必须将被嵌套的循环语句完整地包含在外层循环的循环体内 第六章数组 主要内容 6 1一维数组6 2二维数组6 3字符数组与字符串 6 1一维数组 6 1 1一维数组的定义6 1 2一维数组的引用6 1 3一维数组的初始化6 1 4一维数组的应用实例 6 1 1一维数组的定义 定义格式 类型标识符数组名 长度 例如 inta 10 注意 在定义一维数组时要注意以下几个问题 类型标识符不能省略 它确定了数组元素的类型 数组名的命名规则与变量名的命名规则相同 数组元素的下标是从0开始 数组的长度必须使用常量来定义 不能使用变量 6 1 2一维数组的引用 C语言规定只能逐个引用数组元素 不能一次引用整个数组 一维数组的引用格式如下 数组名 下标 实例6 1 数组元素的引用main inti a 10 定义数组afor i 0 i 0 i 注意变量i的取值范围printf d t a i 引用数组元素 6 1 3一维数组的初始化 数组初始化的一般格式 类型标识符数组名 长度 数据列表 例 inta 10 1 3 5 7 9 11 13 15 17 19 注意事项 常量的个数不能超过数组长度 对全部数组元素赋初值时 可以不指定数组长度 此时 系统会自动地根据数据列表中的数据个数来确定数组的长度 6 1 4一维数组的应用实例 实例6 2 假设全班共10名同学参加计算机竞赛 现在要求计算全班竞赛的平均成绩 main inti floata t s 10 for i 0 i 10 i scanf f 6 2二维数组 6 2 1二维数组的定义6 2 2二维数组的引用6 3 3二维数组的初始化 6 2 1二维数组的定义 一般格式 类型标识符数组名 常量1 常量2 例如 inta 3 4 b 5 2 逻辑结构 二维表物理存储结构 线型表 6 2 2二维数组的引用 格式 数组名 下标1 下标2 实例6 4 输入一个二维数组值 并将其在数组中的内容及地址显示出来main inta 2 3 inti for i 0 i 2 i printf 请输入a d 0 a d 1 a d 2 n i i i scanf d d d 6 3 3二维数组的初始化 1 直述型将所有数据放到一个 内 按数组排列的顺序对各元素赋初值 例如 inta 3 4 1 2 3 4 5 6 7 8 9 10 11 12 2 分行型根据二维数组是按行存放的特点 在初始化时先将数据以行为单位分组 每一组数据放在一对 中 之后将各个分组放到一个 内 形成嵌套结构 例如 inta 3 4 1 2 3 4 5 6 7 8 9 10 11 12 注意 如果对全部二维数组元素赋初值 则在定义二维数组时可省略第一维的长度 但不能省略第二维的长度 实例6 5 将一个二维数组的行和列元素互换 存到另一个二维数组中 main inta 2 3 b 3 2 inti j for i 0 i 2 i scanf d d d 6 3字符数组与字符串 6 3 1字符数组6 3 2字符串6 3 3字符数组的应用实例 6 3 1字符数组 1 字符数组的定义用来存放字符数据的数组是字符数组 在C语言中 字符数组中的一个元素只能存放一个英文字符 不能把一个汉字保存到一个字符数组元素中 注意 计算机是使用ASCII码来表示英文字符的 因此每一个英文字符在计算机内部实际上对应一个整数 2 字符数组的初始化 字符数组的初始化与普通数组的初始化类似 需要把字符常量逐个赋给数组中的每一个元素 例如 charc 5 C h i n a 注意 在初始化数组时要注意以下几点 在花括号内的字符常量个数不能多于数组长度 否则将出错 在花括号内的字符常量个数可以少于数组长度 表示按顺序部份初始化 其余数组元素自动初始化为空字符 即 0 与普通数组相同 对全部字符数组元素赋初值时 可以不指定数组长度 3 字符数组的引用 字符数组的引用与普通数线相同 需要逐个引用 引用字符数组中的一个元素 得到一个字符 实例6 6 输出心形图案 见教材P91页 6 3 2字符串 1 字符串的概念在C语言中 没有专门的字符串型数据 C语言的字符串使用字符型一维数组来存储 为了测定字符串的有效字符个数 C语言规定了一个 字符串结束标志 以字符 0 代表 可使用字符串常量来初始化字符数组 格式 char数组名 数组长度 字符串常量 例如 charc 10 China 实例6 7 字符串的复制见教材P93页 2 字符串的输入与输出 1 逐个地输入与输出字符串逐个字符输入字符串时 可使用scanf c 字符数组元素 也可以使用getchar 逐个字符输出字符串时 可使用printf c 字符数组元素 也可以使用putchar 2 一次性地输入输出字符串一次性输入字符串时 可使用scanf s 字符数组名 也可以使用gets 字符数组名 一次性输出字符串时 可使用printf s 字符数组名 也可以使用puts 字符数组名 操作演示 注意事项 在采用一次性地输入输出字符串时 要注意以下几点 在scanf语句中只能使用数组名 不能换成数组元素 而且数组名前面不能添加取地址运算符 这是因为数组名本身就代表数组在内存中的开始地址 scanf语句使用空格键或回车键表示输入操作的结束 因此 使用这种方法不能将空格字符输入到字符串 当输入操作结束后 系统自动在字符串的末尾添加结束标记 因此设计程序时不需要将 0 赋值给字符串的末尾字符之后 同样输出操作结束后 系统自动将结束标记 0 输换为 n 即输出完字符后换行 3 字符串处理函数介绍 1 strcat a b 2 strcpy a b 3 strcmp a b 4 strlen a 5 strlwr 字符串 和strupr 字符串 6 3 3字符数组的应用实例 实例6 12 输入一句英文 挑选出最长的单词 并单独保存为一个字符串 分析 首先要定义两个字符数组 一个用于保存原文 另一个用于保存最长的单词 因为英文句子中包含空格 因此只能逐个地输入 不能一次性地输入 然后设置五个变量 place position length longest flag 其中 place用于记录最长的单词的开始位置 position用于记录一个单词的开始位置 length用于记录单词的字母个数 longest用于记录最长的单词的字符个数 flag的值由0变1表示一个新的单词出现 由1变0表示单词结束源代码 见教材P98页 本章小结 数组是C语言的派生数据类型 用于表示相互关联的有限的数据集合 数组是程序设计语言中的重要内容之一 本章一方面详细介绍了C语言有关数组的语法规则 另一方面通过大量实例展示了一维数组 二维数组 字符数组和字符串的应用技巧 ClassOver Thanks 第七章函数 主要内容 7 1函数的定义与调用7 2函数的嵌套调用与递归调用7 3数组作为函数参数7 4变量的分类7 5内部函数和外部函数 7 1函数的定义与调用 7 1 1函数的定义7 1 2函数的参数7 1 3函数的返回值7 1 4函数的调用 7 1 1函数的定义 1 无参数函数无参数函数 表示使用它的函数不需要传递数据给它 其定义格式如下 类型标识符函数名 声明部分执行部分 实例7 1 一个简单的无参数函数见P103 2 有参数函数有参数函数 表示使用它的函数需要传递数据给它 其定义格式如下 类型标识符函数名 形式参数列表 声明部分执行部分 实例7 2 一个简单的有参数函数见P1033 空函数空函数 表示函数体中不包含任何语句 其定义格式如下 类型标识符函数名 形式参数列表 7 1 2函数的参数 1 函数的形式参数函数的形式参数简称形参 它实质上是一个函数内部的普通变量 形参变量在定义函数时指定 用于接收主调函数的数据输入 在程序执行期间 一个函数只要未被其他任何函数调用 则其形参不占用内存中的存储单元 只有在发生函数调用时 系统才给形参变量分配内存单元 在调用结束后 系统自动收回形参所占有的内存单元 2 函数的实际参数函数的实际参数简称实参 它可以常量 变量或表态式 但要求它们有确定的值 当发生函数调用时 系统将实参的值赋给形参 C语言规定 实参如果是变量 则对形参变量的数据传递是单向值传递 操作演示 实例7 3 见教材P104页 7 1 3函数的返回值 1 return语句注意return语句将被调用函数中的一个确定的值带回主调函数后 主调函数可以将它赋值给其他变量 也可以把它放到表达式中参加数据运算 当然也可以把它直接显示输出 注意 使用return语句时注意以下两点 在C语言中 一条return语句原则上只能返回一个值 一个函数中允许有多条return语句 执行到哪一条return语句 哪一条return语句起作用 2 函数值的类型 函数值是被调用函数最终传回给主调函数的值 函数值应该具有明确的类型 它在函数定义时指定 C语言规定 在定义函数时如果省略了函数值的类型标识符 则编译器一律自动按整型处理 操作演示 实例7 4 见P106页3 无值型函数函数可以没有返回值 没有返回值的函数称为无值型函数 当函数没有返回值时 在函数体中一定要省略return语句 同时函数值的类型标识符为void 7 1 4函数的调用 1 函数调用的一般形式函数名 实参列表 注意 如果函数是无参数函数 省略实参列表 但圆括号不能省略 如果实参有多个 则各参数之间用逗号间隔 实参与形参的个数应相同 类型应一致 实参与形参按顺序对应 一一传送数据 如果实参是表达式 则对实参求值的顺序因系统而异 MicrosoftVisualC 按从右到左的顺序求值 如果被调用函数是库函数 应在调用之前使用 include 把对应的头文件引入到本程序中 操作演示 实例7 5 见P107页 2 函数的调用方式 按函数在程序中的位置来分 函数有三种调用方式 1 函数语句把函数调用作为一个语句使用 函数调用当作语句时 不要求函数有返回值 只要求函数完成一定的操作 2 函数表达式函数出现在一个表达式中 这种表达式称为函数表达式 这时 它实质上是用函数值参与表达式的运算 3 函数参数一次函数调用作为另一次函数调用的实参 3 函数的声明 缺省情况下 C语言编译器要求先定义函数 后调用函数 如果将函数定义放到函数调用之后 那么在主调函数调用另外一个函数之前需要声明被调用函数 实例7 6 函数的声明 include stdio h voidmain floata b c floatmax float float 函数声明 printf a scanf f 7 2函数的嵌套调用与递归调用 7 2 1函数的嵌套调用7 2 2函数的递归调用 7 2 1函数的嵌套调用 操作演示 实例7 7 P109页 7 2 2函数的递归调用 函数的递归调用是指一个函数在它的函数体内直接或间接地调用它自身 语言允许函数的递归调用 在递归调用中 调用函数又是被调用函数 分析 实例7 8 见P110页能否采用递归思想解决 必须符合两个前提条件 1 问题的规模可以缩小 原问题可以层层分解为类似的更小的子问题 2 规模最小的问题具有直接的解 最小的子问题是递归的出口 操作演示 实例7 9 用递归方法求n 见P112页 7 3数组作为函数参数 7 3 1数组元素作函数的实参7 3 2数组名作函数参数 7 3 1数组元素作函数的实参 数组元素 又称下标变量 用它作函数的实参 与用变量作实参没有区别 实质上都是将它们的值作为实参赋给形参变量 都是单向的值传递 操作演示 实例7 10 输入一篇英文短文 分别统计其中字母 数字 空格及其他字符的个数 见P113页 7 3 2数组名作函数参数 数组名作函数参数 应该在主调函数和被调用函数中分别定义数组 而且要确保实参数组与形参数组类型一致 操作演示 实例7 11 比较两个数组a和b的大小 见P114页 注意 在使用数组名作函数参数要注意 1 因为编译器不对形参数组的大小做检查 因此在定义形参数组时可以不指定大小 但方括号不能省略 2 因为数组名是一个常量 它的值是第一个数组元素所在内存单元的地址 由实参与形参之间的单向值传递关系可知 传递给形参数组的将是实参数组的起始地址 也就是说 最终形参数组名的值就是原来实参数组的第一个元素的地址 这就意味着 实参数组和形参数组在内存中占用相同的地址空间 如果在被调用函数中修改形参数组元素的值 则相应的实参数组元素的值也会被修改 7 4变量的分类 7 4 1变量的作用范围7 4 2变量的存储方式 7 4 1变量的作用范围

温馨提示

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

评论

0/150

提交评论