C语言复习.ppt_第1页
C语言复习.ppt_第2页
C语言复习.ppt_第3页
C语言复习.ppt_第4页
C语言复习.ppt_第5页
已阅读5页,还剩128页未读 继续免费阅读

下载本文档

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

文档简介

北京理工大学http www bit9 dhs org C语言复习 北京理工大学http www bit9 dhs org 第2页 上机考试安排 计划考试时间上机考试 第十四周周六 周日 5 28 5 29 考试时间一小时 具体安排考前会在网络教室和计算中心门前公布 笔试考试 第十五周周日 6 5 下午2 00 考试时间二小时 考场安排已经在教务处网站公布 北京理工大学http www bit9 dhs org 第3页 上机考试要求 上机考试要求1 必须按时到达机房 不允许无故缺席 2 不允许带软盘 U盘 参考书 笔记等物品 不允许使用自己的机器 3 听从教师指挥 按照点名顺序在指定的座位就坐 就坐后检查机器 发现机器异常 举手请老师解决 4 按顺序抽考题 每人一张试卷 5 教师只对题目本身进行解释 不再给其他提示 6 应首先填写班级 姓名 学号 机器号等 北京理工大学http www bit9 dhs org 第4页 上机考试要求 上机考试方法1 抽签方法 考试开始 抽一张题签 不能更换 2 考试方法 闭卷考试 考试时间60分钟 3 判分办法 每完成一题举手 请监考教师判一题 判分后 该题无论正确与否 都不允许再进行修改 考试时间结束 等教师判卷后交回题签再退场 4 判分标准 判卷采用黑盒法 通过全部测试用例得满分 通过部分测试用例得部分分数 没有通过测试用例或编译没有通过不得分 北京理工大学http www bit9 dhs org 第5页 笔试试卷基本情况 选择题 20分 在下列各题中提供了四个可供选择的答案 其中只有一个是正确的 每空1分 四选一 答案唯一 阅读程序写出程序运行结果 20分 答案唯一 每空2分程序选择填空 30分 阅读程序 在程序的空格处选择对应的答案 使程序完整正确 并能够完成规定的功能 答案唯一 每空2分程序填空 30分 阅读程序 在程序的空格处填入适当的内容 使程序完整正确 并能够完成规定的功能 答案不一定唯一 每空2分 北京理工大学http www bit9 dhs org 第6页 不考的部分 1 基本语句中 goto语句不考 2 数组部分重点是一维数组 基本概念部分涉及到二维数组的概念 3 指针部分 多级指针不考 4 文件部分 11 5文件操作状态和出错检测函数不考 5 非信息类考生 联合 枚举 typedef和链表不考 北京理工大学http www bit9 dhs org 第7页 重点要求 基本概念字符集 标识符 关键字各种常量的表示方法变量的说明 标识符 C程序各种对象的名字 标识符的组成 由字母或下划线开头的字母 数字或下划线序列 abc a12 1aqa 3 1aq int 关键字在C语言中有特定含义的定义符 int case switch 见p326 scanf define include等不是C语言关键字 北京理工大学http www bit9 dhs org 第8页 重点要求 整型常量的表示10进制常量的表示128进制常量的表示 012019 16进制常量的表示0 x120 x2k 实型常量的表示小数形式 1 2 1 0 1 1 0 1指数形式 2e3 12e 2 e2 1 2e 3e1 2 北京理工大学http www bit9 dhs org 第9页 重点要求 字符型常量的表示 A 8 AB 转义字符 n t r b P49 1到3位8进制数 如 101 081 1013 x 1到2位16进制数 如 x41 x2g 北京理工大学http www bit9 dhs org 第10页 重点要求 基本运算符与I O操作数据类型 编码形式 占用内存字节 表示范围全部运算符 运算规则 优先级 结合性位运算只作最基本的要求 能够进行简单的表达式计算基本的I O函数的使用方法和功能 printf scanf getchar putchar 整型 名称占内存字节表示范围说明方法基本整型2 215 215 1inta b 短整型2同上shorta b 无符号整型20 216 1 65535 unsigneda b 长整型4 231 231 1longa b 无符号长整型40 232 1unsignedlonga 北京理工大学http www bit9 dhs org 第11页 重点要求 实型 名称存储字节表示范围说明方法有效位单精度4 1038 1038floata 7双精度8 10308 10308doublea 16长双精度16 104932 104932longdoublea 19字符型 占一个字节 存放字符的ASCII码 chara d 北京理工大学http www bit9 dhs org 第12页 高 类型 sizeof 右结合 算术运算符 移位运算符 关系运算符 位运算符 逻辑运算符 右结合 右结合 重点要求 北京理工大学http www bit9 dhs org 第13页 i 1 j 3 i j i 的值是7i 3j 2 x 3 y 4 x y x y的值是4x 5y 3 5 2的值是25 2 0的值是2 5 printf d 5 4 2 出错printf d int 5 4 2 的执行结果是1 a 3 b 10if a b b a 5 a 10b 15 a 1 b 2 c 3a c a 9b 10c 12 a 1 b 2max a b a bmax 2min a b b a 0 2 a 0 2min 0 2 重点要求 北京理工大学http www bit9 dhs org 第14页 k i 1 i i k 2i 3 k i 1 i i k 1i 3 a b 1 2的值是1 sizeof int 的值是2若structstu intnum charname 20 a sizeof a 的值是22sizeof structstu 的值是22 已知 a 15 b 24 则表达式a b b b的结果为8 a 01111b 11000a b 01000b b 00000a b b b 01000 重点要求 北京理工大学http www bit9 dhs org 第15页 ch getchar 在键盘上读一个字符 格式化输入函数scanf 格式串 输入地址表 格式符 d ld f lf e le c s 格式串中的普通字符要原样输入 scanf a f 重点要求 北京理工大学http www bit9 dhs org 第16页 不能用 nf的格式输入实型变量的值不能用scanf 输入带空格或跳格的字符串 为字符数组a输入 Howareyou scanf s a gets a scanf d 4 1f x 输入 12 b 12 7 a123b则 a 12b 12 7c a d 12e 3 重点要求 北京理工大学http www bit9 dhs org 第17页 putchar x 将字符x输出到屏幕上 charch putchar ch putchar 格式化输出函数printf 格式串 输出表 printf dec 5d oct 5o hex 5x ASCII c n D D D D 输出 dec 68 oct 104 hex 44 ASCII Dprintf d o x n 1 1 1 输出 1 177777 ffffprintf f e g n 123 45 123 456 123 45 输出123 450000 1 234500e 002 123 45 重点要求 北京理工大学http www bit9 dhs org 第18页 重点要求 基本语句 必须会掌握正确的语法形式 控制流程 常见书写形式if和switch语句循环语句 for while do while break和continue语句其它语句goto语句不要求语句之间的嵌套关系和规定最基本的三重循环程序的编写方法 北京理工大学http www bit9 dhs org 第19页 重点要求 if语句 if p s if p s1elses2 if p1 s1elseif p2 s2elseif p3 s3elses4p p1 p2 p3是任何表达式 非0为真 0为假 北京理工大学http www bit9 dhs org 第20页 重点要求 x 0 if x 0 s1 s2 s3 执行s2 s3 x 0 if x 0 s1 s2 s3 执行s1 s2 s3 x 0 if x 1 s1 s2 s3 执行s1 s2 s3 if n s1 其中n等价于 n 0if n s1 其中 n等价于 n 0或n 0 北京理工大学http www bit9 dhs org 第21页 重点要求 else如何与if配对if x 0 if x 0 y 1 elsey 0 elsey 1 else与其前最近且尚未与else配对的if配对 北京理工大学http www bit9 dhs org 重点要求 switch语句switch K caseK1 S1caseK2 S2 caseKn Sndefault Sn 1 K整型或字符型表达式Ki整型或字符型常量表达式Si语句 北京理工大学http www bit9 dhs org 第23页 重点要求 switch k 不能出现分号 case1 j 1 case和1应分开 case1 case1 2 j case后为整型或字符型常量 case1 1 k case2 h 不能出现相同case casea g 不能出现变量 inti 10 j 0 switch j i case0 i 1 1 case10 i 2 2 default i 3 i 2若在 1 2 后加break 则i 5 北京理工大学http www bit9 dhs org 第24页 重点要求 main 嵌套switch inty x z scanf d d d 输入0 2 3输出 输入3 2 0输出 北京理工大学http www bit9 dhs org 第25页 重点要求 3种循环语句while p 循环体 do 循环体 while p for k1 k2 k3 循环体 i 0 while i 3 循环3次 循环后i 4i 0 while i 3 循环2次 循环后i 3i 0 do s i while i 3 i 0 dos i while i 3 循环4次for j 0 j 6 j s j for j 0 k 0 j 6死循环 北京理工大学http www bit9 dhs org 第26页 重点要求 continue与break语句区别 continue只能出现在循环语句中break出现在循环语句或switch语句中 continue结束本次循环 开始下次循环的判断break结束整个循环for i 0 i 8 i if i 5 continue break printf 5d i 输出567若continue 换成break 输出 无输出 北京理工大学http www bit9 dhs org 第27页 重点要求 多重循环求水仙花数 3位数且各位数字的立方和等于它本身 如 371 33 73 13main inta b c n for a 1 a 10 a for b 0 b 10 b for c 0 c 10 c if a a a b b b c c c a 100 b 10 c printf 5d a 100 b 10 c 北京理工大学http www bit9 dhs org 第28页 重点要求 数组 重点数组的概念 数组说明 数组元素起始下标 如何引用数组元素 数组名的意义多维数组元素的标识方法 存放方式 多维数组只要求到二维数组与函数的关系 在函数之间传递数组中的一个元素 在函数之间传递整个数组基本算法 排序 冒泡 选择 矩阵乘法 矩阵转置 北京理工大学http www bit9 dhs org 第29页 重点要求 数组定义 defineN2inta 3 b N 2 intc k a 3 23 数组名代表数组首地址 a 字符串共有6个字符 即china 0a 1 2 3 4 5 数组名是地址常量 北京理工大学http www bit9 dhs org 第30页 重点要求 在函数间传递数组 元素 pr intak 判断素数 inti for i 2 i ak i if ak i 0 return0 return1 main 输出素数 intk a 9 for k 0 k 9 k scanf d 北京理工大学http www bit9 dhs org 第31页 重点要求 pr inta a inti j k for j 0 j 9 j k 1 for i 2 i a j i a j if a j i 0 k 0 a j if k 1 printf 5d a j a j main 输出素数 intk a 9 p a for k 0 k 9 k scanf d 北京理工大学http www bit9 dhs org 第32页 重点要求 排序 气泡法 defineN10main 气泡法排序 大 小 inti j m a N for i 0 i N i scanf d 北京理工大学http www bit9 dhs org 第33页 重点要求 排序 选择法 defineN10main 选择法排序大 小 inti j m p a N for i 0 i N i scanf d 北京理工大学http www bit9 dhs org 第34页 重点要求 矩阵 乘法 main 矩阵乘积 staticinti j k c 2 2 staticinta 2 3 1 2 3 4 5 6 b 3 2 2 1 0 4 3 2 for i 0 i 2 i for j 0 j 2 j c i j 0 for k 0 k 2 k c i j c i j a i k b k j printf 4d 4d n c 0 0 c 0 1 printf 4d 4d n c 1 0 c 1 1 北京理工大学http www bit9 dhs org 第35页 重点要求 矩阵 转置 main 矩阵转置 inti j k staticinta 3 3 1 2 3 4 5 6 7 8 9 for i 0 i 3 i for j 0 j i j 矩阵转置 k a i j a i j a j i a j i k for i 0 i 3 i 按行输出 for j 0 j 3 j printf 5d a i j printf n 北京理工大学http www bit9 dhs org 第36页 重点要求 字符串 重点字符串 基本概念 串结束标记 0串输入 输出函数 gets puts串的基本操作 非递归 递归算法 复制 连接 求长 比较 反向 求子串 查找 合并 排序 北京理工大学http www bit9 dhs org 第37页 重点要求 字符串 字符串常量 用双引号括起的一串字符 系统自动在串尾加 0 串结束标记 china 1 用字符数组存放字符串chara 10 china b 4 1234 串输入 输出函数gets s 从键盘上输入字符串并存入s数组puts s 输出s串 并换行 串的基本操作复制 连接 求长度 比较 反向 查找 合并 排序 求子串 北京理工大学http www bit9 dhs org 第38页 重点要求 字符串复制 include stdio h main b串复制到a串 charb china a 10 Beijing intk 0 while b k 0 依次复制b k 到a k a k b k k a k 0 puts a 北京理工大学http www bit9 dhs org 第39页 重点要求 include stdio h main 用指针法实现b串复制到a串 charb china a 10 Beijing strcpy1 a b puts a strcpy1 char p char q 用指针法实现q串复制到p串 while p q 或 while q 0 p q p 0 北京理工大学http www bit9 dhs org 第40页 重点要求 字符串连接main 用循环实现字符串连接 chara 20 china b Beijing strcat1 a b printf a b s n a strcat1 chara 20 charb intk 0 j 0 while a k 0 k 找a串尾 while b j 0 将b串接在a串尾 a k b j k j a k 0 北京理工大学http www bit9 dhs org 第41页 重点要求 用指针法实现字符串连接 char strcat1 char a char b char p a while p 0 p 找a串尾 while p q 将b串接在a串尾 或while q 0 p q p q p 0 returna main chara 20 china b Beijing printf a b s n strcat1 a b 北京理工大学http www bit9 dhs org 第42页 重点要求 求字符串长度strlen1 chara intk 0 while a k 0 k 用循环计数 returnk main chara 20 china printf d n strlen1 a 北京理工大学http www bit9 dhs org 第43页 重点要求 strlen1 char s 指针法 char p s while p 0 p returnp s s串长度 main chara 20 china printf d n strlen1 a 北京理工大学http www bit9 dhs org 第44页 重点要求 P272例9 23strlen1 char s 递归法 if s 0 return0 elsereturn1 strlen1 s 1 main chara 20 china intk 0 k strlen1 a printf d n k 北京理工大学http www bit9 dhs org 第45页 重点要求 字符串比较include stdio h strcmp1 chara charb inti 0 while a i b i 北京理工大学http www bit9 dhs org 第46页 重点要求 include stdio h strcmp1 char p char q 指针法实现字符串比较 inti 0 while p q 北京理工大学http www bit9 dhs org 第47页 重点要求 字符串反向 include string h include stdio h voidrevstr chara charc ints 0 p strlen a 1 while s p 对称位置字符交换位置 c a s a s a p a p c s p 下标s加1 下标p减1 main charstr 80 gets str 输入字符串到str数组 revstr str 调用函数实现字符串反向 puts str 输出反向后的字符串 北京理工大学http www bit9 dhs org 第48页 重点要求 include string h include stdio h voidrevstr char p 指针法实现字符串反向 charc q p strlen p 1 while p q 对称位置字符交换位置 c p p q q c p q p加1 q减1 main charstr 80 gets str 输入字符串到str数组 revstr str 调用函数实现字符串反向 puts str 输出反向后的字符串 北京理工大学http www bit9 dhs org 第49页 重点要求 include string h include stdio h voidrevstr char s 递归实现字符串反向p273例9 24 charc p s while p 0 p p p指向字符串最后一个字符 if s p 对称位置字符交换位置 c s s p 串尾字符存入串首 p 0 形成以s 1为首地址的新串 revstr s 1 对新串进行递归调用 p c 串首字符存入串尾 main charstr 80 gets str revstr str 调用函数实现字符串反向 puts str 输出反向后的字符串 北京理工大学http www bit9 dhs org 第50页 重点要求 两个升序字符串合并include stdio h main chars1 80 s2 80 s3 80 inti j n gets s1 gets s2 for i 0 j 0 n 0 s1 i 0 北京理工大学http www bit9 dhs org 第51页 重点要求 字符串中字符排序 main 选择法排序大 小 inti j n p chara 80 m scanf s a n strlen a for j 0 j n 1 j n 1轮处理 p j p记录最大值的下标 for i j 1 i n i 找第J轮最大值下标P if a p a i p i m a p a p a j a j m printf s n a 北京理工大学http www bit9 dhs org 第52页 重点要求 多个字符串排序 p274例9 26 include string h sort char a intn 字符串排序 大 小 inti j char t for j 1 j0 串比较 t a i a i a i 1 a i 1 t main char book BASIC ALGOL CPL C inti sort book 4 for i 0 i 4 i printf s n book i 北京理工大学http www bit9 dhs org 第53页 重点要求 在字符串中查找字符include stdio h main chara 20 ch inti 0 gets a ch getchar 要找的字符 while a i 0 if ch a i 找到ch pintf c a d c n ch i a i break elsei if a i 0 printf cnotfound n ch 北京理工大学http www bit9 dhs org 第54页 重点要求 在多个字符串中查找字符串include stdio h main char a 4 BASIC ALGOL CPL C p s 10 inti 0 gets s while i 4 if strcpm s a i 0 pintf s a d s n s i a i break elsei if i 4 printf snotfound n s 北京理工大学http www bit9 dhs org 第55页 重点要求 求字符串中子串include stdio h main 求字符串从位置b开始的n个字符组成的子串 chara 80 BASICALGOLCPLC s 20 intb n i j 0 scanf d d 北京理工大学http www bit9 dhs org 第56页 重点要求 函数函数的概念 函数的定义与说明 函数调用 函数的返回值与函数定义之间的关系函数之间进行参数传递的特点 值传递 传递一般变量 形参一般变量 实参一般变量传递变量地址 形参变量地址 实参指针变量在函数之间传递 数组 结构函数的返回值 简单类型 指针 结构 void掌握变量的存储类型和作用域 变量初始化函数递归的概念 递归调用的一般过程 能够编写直接递归程序 掌握递归程序设计方法 针对数值问题和非数值问题使用不同的方法 北京理工大学http www bit9 dhs org 第57页 重点要求 定义floatf intx 函数首部 inty 函数体 y x x returny 不能嵌套定义 调用函数floatmax intx inty x y是形式参数 c max a b a b是实际参数 实际参数和形式参数 个数相等 类型一致 北京理工大学http www bit9 dhs org 第58页 重点要求 函数返回值的类型取决于函数类型intf f floatx 2 3 returnx 1 3 返回3 float f 返回float指针 voidf 无返回值k f 2 structnodef 返回structnode值 北京理工大学http www bit9 dhs org 第59页 重点要求 参数的传递实参形参传递的值常量 变量 表达式变量值 单向值传递 数组数组 指针变量数组的首地址变量地址指针变量地址结构地址结构指针变量结构地址Voidf ints voidf int s voidf structk s main main main inta 10 inta 10 structka f a f 北京理工大学http www bit9 dhs org 第60页 重点要求 p215例8 15swap intx inty swap int x int y intt intt t x x y y t t x x y y t printf d d n a b printf d d n a b main main inta 1 b 3 inta 1 b 3 swap a b swap 结果 1 3结果 3 1 北京理工大学http www bit9 dhs org 第61页 重点要求 递归调用按递归公式写程序 n f n 1n 1n f n 1 n 1longf intn 求n main if n 1 return1 intn 5 elsereturnn f n 1 printf ld f n 北京理工大学http www bit9 dhs org 第62页 重点要求 递归法求字符串长度strlen1 char s 求s为首地址的串长 if s 0 return0 elsereturn1 strlen1 s 1 strlen1 s 1 是以 s 1 为首地址的串长 main chars 80 scanf s s printf d n strlen1 s 北京理工大学http www bit9 dhs org 第63页 重点要求 递归法反向输出整数各位数字f intn if n 0 北京理工大学http www bit9 dhs org 第64页 重点要求 变量存储类型存储类型作用域生存期auto函数内或复合语句内动态存储 出了函数消失register同上同上static函数内或复合语句内静态存储 始终存在 函数内 出了函数不能存取static从定义点到本文件尾静态存储 始终存在 函数外 其他文件不能存取它extern从定义点到本文件尾静态存储 始终存在其他文件进行外部说明后可以存取它 北京理工大学http www bit9 dhs org 第65页 重点要求 intf inta autointb 0 abcstaticintc 3 103b c 1146returna b c 104 1157main intc a 1 for c 1 c 3 c printf d n f a 北京理工大学http www bit9 dhs org 第66页 重点要求 指针 重点指针变量的基本概念与基本运算 取地址 运算 取内容 运算指针变量与一般变量的关系数组与指针的关系 指针的3种基本运算与意义指针与整数进行加减运算 指针变量与自增 自减 运算的关系 指针之间进行关系运算指针之间求差值指针数组与数组指针 main函数的参数动态存储分配与回收 malloc free 北京理工大学http www bit9 dhs org 第67页 重点要求 指针指针变量专门存放地址 指向变量的指针inta p p 北京理工大学http www bit9 dhs org 第68页 重点要求 指向2维数组元素的指针inta 3 3 p 指针变量p的基类型是intp a 0 p p i j a i j a i j a i j p i j a i j 北京理工大学http www bit9 dhs org 第69页 重点要求 字符指针chars china p 指针变量p的基类型是charp s p i s是地址常量 北京理工大学http www bit9 dhs org 第70页 重点要求 指针的3种基本运算与意义1 指针与整数进行加减运算inta 10 p 输出a 3 北京理工大学http www bit9 dhs org 第71页 重点要求 2 指针之间进行关系运算两个指针指向同一数组的元素时才能进行指针关系运算inta 10 p 3 指针减法运算 北京理工大学http www bit9 dhs org 第72页 重点要求 计算s串长度 p263例9 13 include stdio h strlen1 char s 计算s串长度 char p p s while p 0 p p指向串尾 returnp s 返回串长度 main chara 80 gets a printf stringlength d n strlen1 a 北京理工大学http www bit9 dhs org 第73页 重点要求 字符串连接 p263例9 14 char strcat1 char a char b char p a while p 0 p 找a串尾 0 while p b 将b串接在a串尾 returna main 用指针实现b串连接到a串 chara 20 china b Beijing printf s n strcat1 a b 北京理工大学http www bit9 dhs org 第74页 重点要求 字符串合并 p264例9 15 main 两个升序字符串合并且保持升序 chars1 80 13ak s2 80 24in s3 80 char p q r s inti j n gets s1 gets s2 for p s1 q s2 r s3 p 0 北京理工大学http www bit9 dhs org 第75页 重点要求 函数指针 函数指针 函数的入口地址 用函数名表示 intmax a b p 指针变量p的基类型是int 用函数指针调用函数p max t p a b t max a b 北京理工大学http www bit9 dhs org 第76页 重点要求 指针数组char a 3 china beijing nanjing a i 存放第i个字符串的首地址 如 a 1 存放 beijing 的首地址 用途 处理多个字符串 如 排序 求最大 小 串等 Main char a 3 china beijing nanjing intk for k 0 k 3 k printf s a k 输出 china beijing nanjing 北京理工大学http www bit9 dhs org 第77页 重点要求 主函数的参数程序源文件为f1 cmain intac char av C f1a1a2a3av 0 av 1 av 2 av 3 ac 4f1 c main intac char av intk for k ac 1 k 0 k printf d s k av k 输出3 a3 2 a2 1 a1 0 f1 exe 北京理工大学http www bit9 dhs org 第78页 重点要求 结构与联合 重点结构的定义 结构变量的说明 结构占用的内存与结构变量有关的运算符 访问结构成员的方法结构与函数的关系 函数间传递结构结构与数组的关系 结构数组结构与指针的关系 结构指针与 运算的关系联合 枚举 typedef 只要求基本概念结构的简单应用链表 概念 定义方法 链表的建立 插入 删除 查找 求长度 北京理工大学http www bit9 dhs org 第79页 重点要求 结构定义structstu intnum charname 10 a 1001 li b 5 p p是结构型指针 而a num是int型 北京理工大学http www bit9 dhs org 第80页 重点要求 引用结构成员引用结构成员的3种方法 结构变量 成员如 a num 结构指针 成员如 p num结构指针 成员如 p num 函数间传递结构数据方法 1 参数用结构指针 地址 2 参数用结构变量3 参数用结构变量各成员其中 以传递结构指针最方便 北京理工大学http www bit9 dhs org 第81页 重点要求 教材P303例10 14 输入书的书名和单价 并输出structbook charname 20 书名 floatprice 单价 main structbook books 10 intk for k 0 kname p price 北京理工大学http www bit9 dhs org 第82页 重点要求 structper charname 20 intc a 3 wang 10 fun 2 li 4 j p a a i p c p c 1 北京理工大学http www bit9 dhs org 第83页 重点要求 教材P295例10 8structs intx y intdata 5 10 20 30 40 50 structsarray 5 100 printf d p x 输出100 printf d p x 输出100 printf d p y 输出 data 0 10 printf d p y 输出10 printf d p x 输出101 printf d p x 输出p array 1 200 printf d p x 输出200p x 201 北京理工大学http www bit9 dhs org 第84页 重点要求 联合定义定义方法类似结构unionstu intnum charname 10 a b 5 p sizeof unionstu 10结构类型的各成员各自占有自己的存储区联合类型的所有成员占有同一个存储区 其大小为各成员所需存储区最大者 联合变量的引用类似结构 即3种方法a num p num p num 北京理工大学http www bit9 dhs org 第85页 重点要求 unionda1 charchintf1 intf2 d1 d2 则d1 ch的值是 d1 ch 0 x42 65 A 若d1 ch A 则d1 f2 65 f1 f2 ch 北京理工大学http www bit9 dhs org 第86页 重点要求 枚举1 定义enumw su mo tu we th fr sa d 枚举类型名 w枚举元素 su mo tu we th fr sa枚举变量 d2 枚举元素的值 系统依次定义为0 1 2 i i 1 若enumw su mo tu we th fr sa d 则 0123456 自定义若enumw su mo 5 tu we th 9 fr sa 90 d 则056791090 北京理工大学http www bit9 dhs org 第87页 重点要求 用typedef定义类型形式 typedef已有类型新类型 若typedefintINTEGER 则INTEGERa b 等价于inta b 若typedefchar INT 则INTa b 等价于char a b 若typedeffloatF 5 则Fa b 等价于floata 5 b 5 若typedefstructstudent charname 20 intscort STU 则STUa b p 等价于 structstudenta b p 北京理工大学http www bit9 dhs org 第88页 重点要求 链表线性链表是一种线性数据存储结构 链表由若干结点组成 结点在内存中通常不连续存放 且链表长度可变 结点由数据成员和指针成员组成 分配和释放内存的函数void malloc unsignedsize 动态分配一个大小为size字节的连续存储区 并返回该存储区的首地址 voidfree void p 释放以p指针为首地址的存储区 通常p指向的存储区是由malloc函数分配的 北京理工大学http www bit9 dhs org 第89页 重点要求 建立表头结点后按如下算法建立链表 1 分配新点存储区 p 并输入新点数据 2 若新建点不是链表点 如数据为 n 则链表建成 表头结点地址为head 结束 否则转3 3 将表头结点的link存入新建点的link 表头结点的link指向新点p 即 p link head link head link p 转1 creat NODE head 建立链表 NODE p chardata while data getchar n n 不是有效结点数据 p NODE malloc sizeof NODE 申请新点存储区 p data data 向新点p存数据 p link head link p点指向当前首结点 head link p p点成为当前首结点 北京理工大学http www bit9 dhs org 第90页 重点要求 输出链表数据output NODE head 输出链表数据 NODE p intn 0 p head link while p NULL 输出链表 n 统计链表结点个数 printf c p data 输出p点数据 p p link p指向下一结点 returnn 返回链表结点个数 北京理工大学http www bit9 dhs org 第91页 重点要求 删除链表结点del node NODE head inti 删除第i个结点 NODE p q intn 定位第i 1个点q for n 0 q head nlink NULL n q q link 转下一点 if i 0 北京理工大学http www bit9 dhs org 第92页 重点要求 插入链表结点 结点p插入到第i个结点的后面 ins node NODE head NODE p inti NODE q intn 0 找第i个结点 for q head nlink NULL n q q link 转下一点 p link q link 结点p插在第i个结点之后 q link p 北京理工大学http www bit9 dhs org 第93页 重点要求 教材P322例10 20 输入学生姓名 姓名长度为0时停止输入 按姓名降序排列并输出 include stdlib h malloc free在stdlib h文件中定义 include stdio h NULL在stdio h文件中定义 typedefstructnode 定义结点结构 charname 20 数据成员 structnode link 指针成员 NODE output NODE head 输出链表各结点的数据 NODE p q inti 0 p head link while p NULL 输出各结点的数据 printf 2d s n i p name q p p p link p指向下一点 free q 释放q点 北京理工大学http www bit9 dhs org 第94页 重点要求 main inti 0 flag 1 charname 20 NODE head p q head NODE malloc sizeof NODE 申请新点存储区strcpy head name NULL 建立表头结点 head link NULL do 本循环按数据降序建立链表 gets name 输入新点数据 if strlen name 0 flag 0 数据长度为0 结束输入 else p NODE malloc sizeof NODE 新点存储区 strcpy p name name q head while q link NULL 确定新点位置在q后 if strcpy p name q link name 0 break elseq q link 继续找 p link q link q link p q后插新点 while flag output head 输出链表数据 北京理工大学http www bit9 dhs org 第95页 重点要求 文件 重点基本概念 系统对文件的I O过程 文件输入 文件输出 FILE类型 文件的位置指针 文件结束标记EOF文件的分类与各类的特点 3种标准设备文件文件操作的一般步骤 三种文件打开的基本模式 只读 只写 追加 各自的特点文件顺序读写与随机读写的概念常见的文件操作函数的功能与返回值 fopen fclose fgetc fputc fgets fputs fscanf fprintf fread fwrite fseek ftell rewind基本的文件操作 北京理工大学http www bit9 dhs org 第96页 重点要求 C中的两种文件ASCII文件 数据以ASCII码形式存放二进制文件 数据以内存二进制形式存放如 1024 210 0000010000000000 二进制文件 04H00H 2个字节 ASCII文件 31H30H32H34H 4个字节 1 0 2 4 文件指针C语言中 通过文件指针对文件进行操作定义文件指针的方法 FILE fp FILE是是结构类型 在stdio h文件中定义 故操作文件的程序一定出现 include stdio h 缓冲文件系统 程序数据区 输出文件缓冲区 输入文件缓冲区 磁盘文件 写操作 读操作 内存区 缓冲区填满数据时输出 输入一批数据充满缓冲区 操作文件的一般过程 打开文件 操作文件 关闭文件 建立用户程序与磁盘文件的联系 读操作 写操作 追加操作 切断用户程序与磁盘文件的联系 定位操作 北京理工大学http www bit9 dhs org 第99页 打开文件文件必须打开后才能对其操作FILE fopen char fname char mode fname 文件名 mode 操作方式函数返回文件指针 失败时返回NULL 下列程序段可以防止使用空指针if fp fopen file1 dat w NULL printf cannotopenfile1 dat n exit 0 系统自动打开的文件 标准输入 键盘 文件指针stdin标准输出 屏幕 文件指针stdout错误信息文件 文件指针stderr 北京理工大学http www bit9 dhs org 第100页 文件的操作方式 ASCII文件 r 只读 文件已存在 只能读不能写 w 只写 建立新文件 只能写不能读 a 追加 在文件尾添加数据 不能读 二进制文件rb 只读 wb 只写ab 追加 可读可写r ASCII读写rb 2进制读写w ASCII写读wb 2进制写读a ASCII追加读ab 2进制追加读 北京理工大学http www bit9 dhs org 第101

温馨提示

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

评论

0/150

提交评论