C语言所需要的知识.ppt_第1页
C语言所需要的知识.ppt_第2页
C语言所需要的知识.ppt_第3页
C语言所需要的知识.ppt_第4页
C语言所需要的知识.ppt_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

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

文档简介

数据结构 有关的C语言知识 专题 控制流 if语句的三种形式 一选一 if语句的一般格式 if 表达式 内嵌语句A 任何表达式常用的有关系表达式和逻辑表达式 单个语句或复合语句 若表达式值为真 即为非0值 执行图3 1中的内嵌语句A 块语句或单个语句 否则 不执行任何操作 然后结束if语句 执行下一语句 例如 if x y printf d x 注意 如果是多条语句作为内嵌语句A则要花括号括起来 否则就把离它最近的一条语句看作是它的内嵌语句A 例1 includevoidmain intx 5 y 4 if x y printf d x printf d y 例2 includevoidmain intx 5 y 4 if x y printf d x printf d y 2 运行结果 54 例3 includevoidmain intx 4 y 5 if x y printf d x printf d y 3 运行结果 5 1 运行结果 54 二选一 if语句的一般格式 if 表达式 内嵌语句A else内嵌语句B 若表达式值为真 即为非0值 执行图3 2中的内嵌语句A 块语句或单个语句 否则 执行图3 2中的内嵌语句B 然后结束if语句 执行下一语句 例如 if x y printf d x elseprintf d y if 表达式1 语句1 elseif 表达式2 语句2 else语句3 嵌套式 if语句的一般格式 内嵌if语句 注意 else与前面最近的且未配对的if配对 1 请读程序 includemain floatx y scanf f 若运行时从键盘上输入2 0 回车 则该程序输出结果是A 0 000000B 0 250000C 0 500000D 1 000000 答案 C while 表达式 循环体 任何表达式常用的是关系表达式和逻辑表达式 单个语句或复合语句 专题 控制流 while语句 一般格式 计算1 2 3 10的和 includevoidmain intsum 0 n 1 printf 运行结果 n while n 10 sum sum n n n 1 printf 1 2 3 9 10 d n sum 运行结果 1 2 3 9 10 55 巩固while语句的使用 printf 1 2 3 d n sum includevoidmain intsum 0 n 1 while n 3 sum sum n n n 1 1 2 3 下面利用求1 2 3 分析程序的运行 4 计算1 2 3的和 程序运行 includevoidmain intsum 0 n 1 1 1 2 3 printf 1 2 3 d n sum 4 计算1 2 3的和 程序运行 includevoidmain intsum 0 n 1 printf 1 2 3 d n sum 1 2 3 4 计算1 2 3的和 程序运行 includevoidmain intsum 0 n 1 printf 1 2 3 d n sum 1 2 3 4 0 4 6 运行结果 1 2 3 6 练习 答案 1 D 1 定义如下变量 intn 10 则下列循环的输出结果是while n 7 n printf d n n A 10B 9C 10D 99898878776 do 循环体 while 表达式 任何表达式常用是关系表达式和逻辑表达式 专题 控制流 dowhile语句 一般格式 例编写下述功能程序 应用dowhile语句计算1 2 3 9 10的和 includevoidmain intsum 0 n 1 printf 运行结果 n do sum n n while n 10 printf 1 2 3 9 10 d n sum 巩固dowhile语句的使用 includevoidmain intsum 0 n 1 1 2 3 计算1 2 3的和 程序运行 下面 分析程序的运行 2 n 1 s 1 n 3 程序运行 计算1 2 3的和 includevoidmain intsum 0 n 1 1 2 3 练习 答案 1 1 下面程序段的运行结果是 x 2 do printf x while x 0 1 下面程序的运行结果是 main inty a y 2 a 1 while y 1 do a y a while y a printf d d a y 答案 2 1 while与dowhile嵌套练习 专题 控制流 for语句 for 表达式1 表达式2 表达式3 循环体 一般格式 表达式1 while 表达式2 循环体 表达式3 例编写下述功能程序 应用for语句计算1 2 3 9 10的和 printf 运行结果 n for sum 0 n 1 n 10 n sum n printf 1 2 3 9 10 d n sum includevoidmain intsum n 巩固for语句的使用 计算1 2 3的和 includevoidmain intsum n 1 2 3 4 下面 分析程序的运行 printf 1 2 3 d n sum 巩固for语句的使用 for sum 0 n 1 n 3 n sum n 计算1 2 3的和 includevoidmain intsum n 1 sum n 1 n 3 1 2 1 2 3 4 printf 1 2 3 d n sum 巩固for语句的使用 计算1 2 3的和 includevoidmain intsum n 1 sum n 1 n 3 1 1 3 2 1 2 3 3 4 printf 1 2 3 d n sum 巩固for语句的使用 计算1 2 3的和 includevoidmain intsum n for sum 0 n 1 n 3 n sum n 1 sum n 1 n 3 1 1 3 2 1 2 3 3 6 1 4 4 巩固for语句的使用 练习 1 以下程序的输出结果是 main inta for a 1 a 10 a if a 3 0 a 3 printf d n a A 10 B 11 C 12 D 13 答案 1 D 巩固for语句的使用 1 下面程序的运行结果是 includemain inti j for i 4 i 4 i for j 1 j i j putchar for j 1 j 4 i j putchar putchar n 练习 巩固for语句的使用 2 下面程序的运行结果是 main inti j n 0 for i 0 i i n 1 n printf d n n A 4B 2C 1D 0 答案 1 2 A continue语句是有条件地截断循环体中的部分语句 使其不执行 格式 continue 作用 终止本次循环 进入下一次循环 注意 1 continue只能出现在循环语句的循环体中 2 Continue往往与if语句联用 专题 控制流 continue语句 includevoidmain inti sum 0 for i 1 i 7 i if i 2 0 continue sum i printf sum d n sum 注释 遇到continue则结束本次循环进入下一次循环 本例子中如果i为偶数 执行continue语句 结束执行本次循环的其它语句 即不执行sum i 语句 转至for语句的表达式3 即执行i 巩固其他控制语句 continue 答案 2 5 8 11 14 下面程序的运行结果是 main inti 1 while i 15 if i 3 2 continue elseprintf d i printf n 练习 巩固其他控制语句 continue break语句是有条件地跳出循环 break 格式 作用 结束循环 转向执行循环后面的语句 注意 1 break只能出现在switch语句或循环语句的循环体中 2 多重循环嵌套的情况下 break语句只能跳出break所在的循环 即离break最近的那重循环 专题 控制流 break语句 例 includevoidmain inti sum 0 for i 0 i if i 2 0 continue if i 10 break 有条件地跳出循环 sum i printf sum d n sum 注释 遇到break则结束整个循环 本例子中当i 11时 执行break语句 跳出for语句 巩固其他控制语句 break 本程序实现的功能是求1 3 5 7 9的和 1 先判断a与b是否相等 如果a等于b则继续判断b与c是否相等 相等则打印a b c 如果a不等于b则打印a b 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 练习 1 请读程序并写出结果 includevoidmain inta 2 b 1 c 2 if a b if b 0 c 0 elsec printf d n c 2 当a 1 b 3 c 5 d 4时 执行完下面一段程序后x的值是 if a b if c d x 1 elseif a c if b d x 2 elsex 3 elsex 6 elsex 7 A 1B 2C 3D 6 1 22 B 练习 练习 答案 1 D 1 下面程序段的运行结果是 includemain inty 10 do y while y printf d n y A 1B 1C 8D 0 练习 1 设j为int型变量 则下面for循环语句的执行结果是 for j 10 j 3 j if j 3 j j j printf d j A 63B 74C 62D 73 2 输出结果是 main inti j for j 10 j 11 j for i 9 i j 1 i printf d j A 11B 10C 9D 1011 答案 1 B 2 B 1 以下程序执行后sum的值是 includemain inti sum for i 1 i 4 i sum i printf d n sum A 10B 6C 不确定D 0 1 以下程序的输出结果是 includemain intx 10 y 10 i for i 0 x 8 y i printf d d x y A 10192B 9876C 10990D 101091 答案 D 练习 答案 B 1 下面程序的运行结果是 main inta b for a 1 b 1 a 20 break if b 3 1 b 3 continue b 5 printf d n a A 7B 8C 9D 10 练习 intasb intx inty 专题 函数 在函数调用时 将实参的值复制给对应的形参 而不能将形参的值反传给实参 参数传递结束 实参与形参就无任何联系了 因此 形参的变化不会影响实参 是很安全的 函数参数传递的原理 例 输出两个数之和 asb intx inty intz z x y printf d z main inta b a 1 b 2 asb a b 1 includeintabc intu intv main inta 9 b 6 c c abc a b printf d n c intabc intu intv intw while v w u v u v v w returnu 有以上程序输出结果是 A 6B 3C 2D 9 答案 1 B 练习 练习 以下程序的输出结果 includefunc inta intb intc c a b returnc voidmain intx 6 y 7 z 8 r r func x y x y z printf d n r 答案 21 1 以下程序运行结果是 fun intx staticinta 3 a x returna main intk 2 m 1 n n fun k n fun m printf d n n 结果是 6 练习 1 格式 变量功能 取出指定变量 存储单元 的地址 单目运算符 结果为地址 说明 8 x 6 错误2 格式 地址表达式 功能 得到某地址单元中的值 单目运算符 结果为数据 专题 指针 为了便于地址操作 C提供了两个专用运算符 和 的运算符 指针初始化和引用intx 10 int p p是指针变量 指向不确定目标 编译连接时要为整型变量x和指针变量p分配内存 图5 2 2ap与x未建立联系 intx 10 int p NULL p是指针变量 不指向任何目标 编译连接时要为整型变量x和指针变量p分配内存 图5 2 2bp与x未建立联系 intx 10 int p p是指针变量 指向x目标 编译连接时要为整型变量x和指针变量p分配内存 图5 2 2cp与x建立联系 p指向x 可通过指针p间接访问x 指针法 p p可认为是x的别名 ffda 定义指针的目的是为了通过指针去访问内存单元 通过该指针访问它所指向的存储单元的方式 格式 地址表达式 若 inti 定义整型变量i int p 定义指针变量p p 使i的内容为3 指针的初始化和引用 注意 float p x 2 p 总结 一般情况下 在定义变量的时候看到 表示该变量为指针变量其他地方看到 一般表示该指针变量所指向的内容 除表示乘法运算 如a b 情况外 如果指针变量与常规变量未建立了联系 则表达式 指针变量 不能使用 例如 int p NULL或int p 则 p 10是错误的赋值语句 因为值10无内存空间存放 注意 main inta 1 b 2 int p 113 结果 例如 指针赋值是改变指针的指向 比较抽象 须加深感性认识 形象描述指针赋值最好的方法是图示法 例如 intn 10 m 20 p 图5 2 7a 图5 2 7b 变量定义后 指针p和p1都指向变量n 如图5 2 7a所示 执行p m语句后 指针p指向m 不再指向n 如图5 2 7b所示 1 请写出以下程序的输出结果 main inti 2 j 3 n p q 练习 答案 1 6 练习 1 执行以下程序后 a的值为 b的值为 main inta b k 4 m 6 p1 A 1B 1C 0D 4A 5B 6C 7D 10 答案 1 CC main inta 4 1 2 3 4 int p a 数组的首地址存放在数组名a中 printf d p p 3 printf d a 0 p 改变指向 printf d p 数组元素的地址 a 0 a 3 a 2 a 1 132 结果 例如 值传递和地址传递 值传递 includeswap inta intb intt t a a b b t main intx 7 y 11 printf x d y d n x y printf swapped n swap x y printf x d y d n x y 思考 两个数是否交换成功 includeswap int a int b intt t a a b b t main intx 7 y 11 swap 思考 两个数是否交换成功 值传递和地址传递 地址传递 数值传递 调用函数与被调用函数中使用的变量占用不同的存储单元 特点 单向值传递 形参的改变不会影响实参地址传递 调用函数与被调用函数中使用的变量占用相同的存储单元 特点 指针 或地址 作为函数的参数 形参的改变会影响实参 值传递和地址传递 区别 includevoidsub int x inty intz x y z voidmain inta b c sub A 10 2 5B 10 5 7C 10 2 7D 5 2 7 练习 答案 1 D 指针的其他几种赋值方式 用NULL赋空值p NULL 或p 0 或p 0 说明指针p不指向任何有效数据通过调用库函数赋值malloc函数如 int p p int malloc sizeof int 注 使用free释放空间 格式 free 指针变量 例如 free p 专题 结构与变量 结构类型的定义 结构体是一种构造数据类型 它把不同类型的数据组合成一个整体 结构体类型定义 struct 结构体名 类型标识符成员名 类型标识符成员名 struct是关键字 不能省略 成员类型可以是基本类型或结构体类型 合法标识符可省 无名结构体 例 structstudent1 intnum charname 20 charclass 10 charsex floatscore 学生信息系统中 一个学生有如下信息 学号 整型 姓名 字符串 班级 字符串 性别 字符 成绩 实型 注意 右图是内存分配示意图 定义好结构体的时候内存空间尚未分配 直到定义结构体变量时才分配空间 结构体变量的定义 structstudent1 structstudent1stu1 stu2 方法1 方法2 structstudent1 intnum charname 20 stu1 stu2 结构体变量直接跟在结构体定义后面 结构体变量单独定义 方法三 是在说明结构体时直接定义结构体变量 并且不用指定结构体名 struct intnum charname 20 stu1 stu2 注意 此类的结构体变量只能是直接跟在结构体定义后面定义 不可以单独定义 结构体变量的定义 引用方式 结构体变量名 成员名 引用变量成员的方式 include stdio h voidmain structTIME inthour intminute intsecond structTIMEmt begin 例 用符号 引用结构体变量的成员 mt begin hour 8 mt begin minute 30 mt begin second 00 printf nmeetingtimeis 2d 2d 2d mt begin hour mt begin minute mt begin second 运行结果 meetingtimeis8 30 00 例 structdate intmonth intday intyear structstudent2 intnum charname 20 structdatebirth 例 structstudent2 intnum charname 20 structdate intmonth intday intyear birth 结构体的嵌套定义 结构体嵌套时逐级引用 引用方式 变量名 一级成员 二级成员 结构与指针 可用结构类型定义指针 即存放结构对象的首地址 例如 structstudent intnum charname 20 charsex floatscore structstudentx 定义结构体变量x structstudent p p为指向结构体变量的指针 p p指向结构体变量x 定义格式 struct类型名 指针变量名 结构型变量 成员名结构型指针 成员名 建立指针和结构体变量的连接后 访问成员时 有三种表示 结构型指针 成员名 例如 在下面这个例子中要引用len这个变量的方式有哪几种structnode ints 2 intlen structnodex structnode p

温馨提示

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

评论

0/150

提交评论