




已阅读5页,还剩418页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C程序设计 计算机基础教研室高建良 2 关于本课程的学习 为什么要学本课程怎么来学习本课程 3 关于本课程的学习 为什么要学程序设计 4 关于本课程的学习 为什么要学C C不实用 C落后了 C难学 5 关于本课程的学习 怎么来学习本课程 6 C程序设计 第一章C语言概述第二章数据类型及基本运算第三章顺序结构程序设计第四章选择结构程序设计第五章循环结构程序设计第六章数组第七章函数第八章指针第九章结构与其他自定义类型第十章文件 7 第一章C语言概述 概述C程序简介 8 概述 程序设计与高级语言C语言的产生与发展C语言的特点 9 程序设计与高级语言 机器指令指令系统机器语言机器程序 10 程序设计与高级语言 汇编指令汇编语言汇编语言源程序汇编程序 例 11 程序设计与高级语言 程序设计语言低级语言和高级语言高级语言源程序 编译程序集成环境例 TC VC等 12 C语言的产生与发展 C语言发明于1972年C 发明于1980年 13 C语言的特点 语言描述简洁 灵活 高效有丰富的数据类型和运算符提供了功能齐全的函数库具有结构化程序设计风格具有汇编语言特征具有良好的通用性和程序的可移埴性 14 C程序简介 C程序设计规则C程序的编译与运行 简单的C程序 一 简单的C程序 二 简单的C程序 三 15 C程序设计规则 程序中使用到的一切数据都必须在使用之前对其类型和存储属性加以定义和说明函数是C程序的基本模块 它应该包括函数名 参数说明表和函数体三个部分 16 C程序设计规则 一行上允许写多个语句 或一句语句分写在多行上 但语句结束前必须加分号允许在程序中插入注释 注释行必须以规定的符号 开头 以符号 结束书写格式自由 为提高程序的可读性 可采用 缩进 方式书写 17 C程序的编译与运行 CC TCVC 18 第1章作业 利用printf函数打印自己的姓名 将源文件hw1 1 c上传 19 第二章数据类型及基本运算 数据的表示基本数据类型及其表示算术运算符和算术表达式 20 数据的表示 信息与数据的特征数据类型 21 信息与数据的特征 信息数据数据处理 22 数据类型 在C语言中 数据总体上可分为基本类型构造类型指针类型 23 基本数据类型及其表示 标识符 常量与变量整型数据实型数据字符型数据 24 标识符 常量与变量 标识符常量变量 25 标识符必须满足以下定义规则 必须由字母或下划线开始 由字母 数字和下划线组成的长度不超过32的字符串大 小写字母表示不同意义不能与C关键字同名 标识符 常量与变量 有关标识符练习 26 常量可分为 数值常量符号常量 标识符 常量与变量 27 符号常量符号常量的定义 define例 definePI3 1415926 defineN50 标识符 常量与变量 28 变量规定变量在使用前必须说明变量的说明 例 inta b x 标识符 常量与变量 29 在程序中 一个变量占据着一个实际的存储单元 变量名实际上是存储单元的标志 存储单元中的内容是变量的值 允许在定义变量的同时对其赋初值 标识符 常量与变量 30 整型数据 inta b shortc d longm 6 longn j 8 unsignedlongk a 123 b 045 c d 0 x3d8 k 0773L 简单的C程序 二 31 实型数据 floata b doublex sum a 29 56 b 6 8e 07 x 33 sum 55 错误的数据表示 简单的C程序 三 32 字符型数据 字符型常量字符型常量中字母区分大小写转义字符以 开头来标记 33 字符型数据 charc1 c2 c3 A c1 98inta b 49 c2 b a c1 34 基本运算符和表达式 算术运算符和算术表达式赋值运算符和赋值表达式逗号运算符和逗号表达式关系运算符和关系表达式逻辑运算符和逻辑表达式位运算符和位表达式 35 算术运算符和算术表达式 算术运算符 简单的C程序 四 36 算术运算符和算术表达式 算术运算符的运算优先级和结合性 37 算术运算符和算术表达式 算术表达式说明 在算术表达式中没有上标和下标乘号必须用 表示 不能省略括号一律使用圆括号 38 算术运算符和算术表达式 写出下列代数式的C表达式 x是个三位数 写出取其各位数的表达式 39 算术运算符和算术表达式 自动类型转换 main floaty z 242 5 unsignedx 2 shorts 4 y 10 b 5 7 x z a s 12 5 printf y f y 40 算术运算符和算术表达式 强制类型转换 main floatx 4 55 printf int x d x f int x x x 8 int 1 2 5 float 2 41 算术运算符和算术表达式 例 设floatx y z x 6 4 y 6 4 z 6 8 4结果 x的值为1 0 y的值为1 5 42 算术运算符和算术表达式 自增1 自减1运算符为单目运算符其有两种运算形式 前缀形式和后缀形式 功能不同前缀形式的自增 自减1运算的优先级高于算术运算符中的所有双目运算符其运算对象只能是变量 可以是实数 43 算术运算符和算术表达式 例 设intx 5 则 y x 结果 y 6 x 6y x 结果 y 5 x 6x 结果 x 6y x x结果 44 赋值运算符和赋值表达式 基本赋值运算符形式 功能 将赋值运算符右边的表达式的值赋给其左边的变量 45 赋值运算符和赋值表达式 注意 赋值号左边只能是变量如果右边表达式类型与左边变量的类型不一致 则先将右边表达式的值自动转换成与左边变量相同的类型 再进行赋值 46 赋值运算符和赋值表达式 复合赋值运算符形式 功能 对赋值运算符左 右两边的运算对象进行指定的算术运算符的运算 再将运算结果赋予左边的变量 47 赋值运算符和赋值表达式 a b 等价于a a b a b 等价于a a b a b 1 等价于a a b 1 x 3 x 3 设x 11 48 赋值运算符和赋值表达式 赋值表达式k j 1 intk a 1 j 5 a j a 20 j 7 a j 9 k 7 49 逗号运算符和逗号表达式 逗号的用法有两种 分隔符 运算符 C允许用逗号连接表达式 双目运算符 运算优先级最低 a 2 6 a 4 a 15 50 逗号运算符和逗号表达式 逗号表达式t a a b b t t a a b b t x 5 5 10 10 x intj 5 a a j 1 a 2 a 3 a 51 关系运算符和关系表达式 关系运算符6种关系运算符 优先级高 优先级低 关系运算符优先级低于算术运算符 高于赋值运算符 52 关系运算符和关系表达式 关系表达式fabs x y y xx y z 2x y z 1若关系表达式成立 其值为非零 否则为零 53 逻辑运算符和逻辑表达式 逻辑运算符3种逻辑运算符 运算规则优先级 54 逻辑运算符和逻辑表达式 逻辑表达式例 设a 1 b 2 c 3 a b c 0 a a b 0 c a a b c b a a 1 b 1 4 a b c c 55 逻辑运算符和逻辑表达式 注意 代数中的不等式0 x 5的写法C语言允许直接对数或字符进行逻辑运算 56 位运算符和位表达式 位运算6种位运算符 除了 为单目运算符 其余均为双目运算符位运算对象只能是整型或字符型数据 57 位运算符和位表达式 注意 右移运算按 逻辑右移 还是 算术右移 视不同的计算机系统而定可以进行位复合赋值运算符的运算优先级 58 位运算符和位表达式 例 1 3 311 2 2 15 811 33 21 3 3 位运算实例 59 运算符的优先级 60 第2章作业 完成教材中第2章的全部习题 答案写在文本文件hw2 txt中上传 61 第三章顺序结构程序设计 顺序结构的基本特点是构成程序的语句都是按照其出现的顺序逐条执行的 62 第三章顺序结构程序设计 语句概述表达式语句数据的输出数据的输入顺序结构程序设计举例 63 语句概述 说明 每个语句都要用分号结尾 分号是语句间的分隔符声明部分的内容不是语句 64 基本语句 包括表达式语句 复合语句和空语句 65 选择控制语句 可以根据某个条件来控制和改变程序流向 66 重复控制语句 这类语句可以根据某种条件控制一段程序被重复执行多次 67 转移语句 这类语句可以无条件地改变程序的流向 68 表达式语句 x y z x y i printf d x a b c 2 i 5 j 69 表达式语句 注意 表达式语句和赋值语句 赋值表达式的关系赋值表达式可以出现在任何表达式允许出现的地方声明变量时不能采用多重赋值形式 70 数据的输出 C语言有输入 输出函数 而没有输入 输出语句 include命令的格式 include或 include stdio h 71 putchar函数 形式 putchar 功能 在显示器上输出一个字符参数 可以是字符型变量 整型变量或相应的常量 72 putchar函数 例 使用库函数putchar 输出各种字符 main charch1 ch2 inti ch1 C ch2 h i 105 putchar ch1 putchar ch2 putchar i putchar n putchar 141 putchar n 73 printf函数 形式 printf 74 printf函数 功能 将各输出项的值按指定的格式显示在屏幕上 printf函数示例 75 printf函数 参数 输出项可以是变量 常量和表达式格式控制字符串中允许包含格式编辑符和原样输出的字符串格式编辑符形式 格式修饰包括 标志 类型修饰 输出最小宽度和精度等 76 printf函数 标志 标志字符主要有 等 77 printf函数 输出宽度 可以用十进制数限定输出数据的位数 78 printf函数 精度 对于float或double类型的实型数 可以用 m n 的形式指定数据的输出宽度和小数位数 79 printf函数 类型修饰 类型修饰符有h和l两种 l表示输出项是长整型 无符号长整型或双精度实型 80 printf函数 特殊字符的输出 可以用 输出一个 用 输出一个 81 printf函数 注意 格式控制字符串中的格式说明与输出项必须保持类型相同和个数一致 82 数据的输入 83 getchar函数 形式 getchar 功能 从键盘上读取一个字符参数 不带任何参数 函数的返回值是输入字符的ASCII码 84 getchar函数 main charc c getchar printf c d n c c 85 scanf函数 形式 scanf 输入项1 输入项2 86 scanf函数 功能 按指定的格式接收由键盘输入的数据 并存入输入项变量所在的内存单元中 87 scanf函数 参数 格式控制字符串与printf函数类似 包含格式编辑符和原样输入字符输入项必须为地址引用 通常由 后面跟变量名组成 88 scanf函数 参数格式编辑符的形式 89 scanf函数 常用的格式控制格式字符 用于规定相应输入项的输入格式输入数据宽度 scanf函数允许用十进制整数设定输入数据的宽度 系统自动按此宽度截取所需数据类型修饰符 类型修饰符为h和l 分别表示输入短整型和长整型数据 或双精度实型 scanf函数示例 90 scanf函数 注意 对于基本类型变量 scanf函数要求在输入项中给出变量地址 但使用s格式输入字符串时除外输入数据时 不允许规定精度输入数据时 数据与数据之间应使用分隔符 91 scanf函数 注意 按原样输入的字符在键入时不能遗漏 否则将导致数据项与对应读入数据错位键入数据的类型 宽度应该与格式控制中给定的相一致 92 顺序结构程序设计举例 将键盘输入的两个整数相互交换并输出交换前后的值将键盘输入的三位整数逆序并输出 93 第3章作业 完成教材中第3章习题3 1 1 答案写在文本文件中上传 完成教材中第3章习题3 4 3 7 3 8 上传源文件 94 第四章选择结构程序设计 C语言提供的选择结构语句有if语句和switch语句由这类选择语句构成的程序称为选择结构程序 95 第四章选择结构程序设计 条件if语句switch语句应用举例 96 条件 条件就是一个表达式 若以非零作为表达式成立 以零作为表达式不成立 就会得到两种可能 即 真 或 假 这就是条件判断 真 与 假 又称为逻辑值 97 关系运算 关系运算符6种关系运算符 优先级高 优先级低 关系运算符优先级低于算术运算符 高于赋值运算符 98 逻辑运算 逻辑运算符3种逻辑运算符 运算规则优先级 99 条件运算 条件运算符1个条件运算符 优先级 100 条件运算 条件表达式形式 101 条件运算 语义 先计算表达式1的值 若结果为非0 则以表达式2的值作为整个条件表达式的值 若为0 则以表达式3的值作为整个表达式的值 102 条件运算 例 x 0 1 1x 0 1 xy x y 103 条件运算 说明 条件表达式中的表达式2和表达式3应该有确定的值 二者通常为同类型表达式2和表达式3中有一个表达式不会被计算 104 if语句 if语句是用于选择结构的控制语句 根据给定条件进行判断 以决定所要执行的操作 105 单边形式if语句 形式 if 语义 先计算 表达式 的值 若结果为非0 就执行 语句 否则直接执行if语句的后续语句 106 单边形式if语句 注意 if是C语言的关键字 表达式 允许是任何表达式 其两侧的圆括号不可少 语句 为if的执行块 如果其中包含多个语句 必须用 将其括成复合语句 107 双边形式if语句 形式 if else 语义 先计算 表达式 的值 若结果为非0 则执行 语句1 若为0 则执行 语句2 108 双边形式if语句 说明 else必须与if语句配对使用else前面的语句必须用分号结束虽然条件表达式和if语句都能构成选择结构 但条件表达式不能取代所有的if语句 109 if语句的嵌套 当if语句或else语句的执行块中又出现if语句时 就形成了if语句的嵌套 110 if语句的嵌套 说明 在多层嵌套中 C语句规定 else总是与前面最近的没有配过对的if配对 与程序书写格式无关 111 应用举例 编写程序 从键盘输入三个数 按从小到大的顺序依次输出 编写程序 从键盘输入一个成绩 输出其成绩等级 112 switch语句 形式 switch case break case break case break default switch语句示例 113 switch语句 语义 先计算switch右边 表达式 的值 并将其逐个与case行中的 常量表达式 的值相比较 若相等 则执行该case行给出的语句 然后跳出switch语句 若 表达式 的值不等于任何case行给出的 常量表达式 的值 则转向并执行default行指引的语句 若没有default行 则直接跳出switch结构 转去执行后续语句 114 switch语句 说明 switch是关键字 其后面用 括起来的部分是其语句体case也是关键字 其后跟的 常量表达式 与冒号一起构成语句标号 case与 常量表达式 之间必须有空格 115 switch语句 说明 在同一个switch语句中 常量表达式 的值必须唯一switch后面的 表达式 可以是整型 字符型和枚举型 但不能是实型 表达式 的值与 常量表达式 的值应保持类型一致 116 switch语句 说明 default行可以出现在switch语句体的任何位置 也可以省略case标号后面跟的语句允许是多个语句 可以不加语句括号 一个语句也可以被多个case行共用break也是关键字 其可以中止switch语句继续往下执行 117 应用举例 编写程序 从键盘输入1到7之间的一个整数 要求 输入正确则输出相应的星期名称 否则输出错误提示 118 第4章作业 作业上传系统中N4 doc中的习题 完成教材中第4章习题4 2 4 4 4 7 4 9 上传源文件 119 第五章循环结构程序设计 循环结构是结构化程序设计的三种基本结构之一 它与顺序结构 选择结构一起 构成各种复杂的程序 在C语言中 用于循环结构程序设计的语句有 while语句 do while语句和for语句 120 第五章循环结构程序设计 while语句do while语句for语句循环结构中的转移语句循环结构的嵌套应用举例 121 while语句 形式 while 122 while语句 语义 先计算圆括号中表达式的值 判断其是否为0 若为非0 表示循环条件满足 执行循环体 如此重复 直至表达式的值为0 退出while循环 执行后续语句 123 while语句 k 4 while k 2 printf k k 1 printf k d k 124 while语句 说明 while是C关键字 圆括号内的 表达式 可以是任意合法的表达式循环体只包含一句语句注意if语句和while语句的差别循环体要有使循环结束的语句 125 while语句 实例 求正整数n的阶乘用字符打印图形 126 do while语句 形式 do while 127 do while语句 语义 先执行循环体一次 然后判断表达式是否成立 若为非0 表示成立 就继续执行循环体 否则结束循环 执行do while语句的后续语句 128 do while语句 intsum 0 i 1 do sum sum i i while i 5 129 do while语句 说明 do和while是C关键字 圆括号内的 表达式 可以是任意合法的表达式循环体至少被执行一次循环体只包含一句语句循环体要有使循环结束的语句 130 do while语句 实例 求正整数n的阶乘求 或 的值 131 for语句 形式 for 等价于 while 132 for语句 语义 先计算表达式1的值 再计算表达式2的值 并判断其是否为0 若为0 则跳出循环 执行for语句的后续语句 表达式2的值若为非0 则执行循环体一次 再计算表达式3的值 转到步骤2重复执行 133 for语句 product 1for i 1 i 5 i product product i 134 for语句 说明 for是C关键字 圆括号内的三个 表达式 可以是任意合法的表达式循环体只包含一句语句循环体要有使循环结束的语句 135 for语句 说明 for语句中的各表达式都可以省略 但分号间隔符不能少若表达式2省略 则循环体中必须有控制循环结束的break语句 否则将造成死循环循环体可以是空语句 136 for语句 实例 求正整数n的阶乘求 或 的值 137 循环结构中的转移语句 break语句形式 break break语句只能用在switch语句或循环语句中 当用在循环中时 其功能是终止当前的循环 转向后续语句执行 138 循环结构中的转移语句 例 for x 1 y 0 x5 break printf y d n y 实例 判断一个整数是否为素数 139 循环结构中的转移语句 continue语句形式 continue 该语句只能用在循环中 其功能是结束本次循环 即跳过循环体中位于continue语句后面的语句 转入下一次循环条件的判断与执行 并不结束循环 140 循环结构的嵌套 当一个循环语句的循环体中又出现另一个循环语句时 就构成了循环的嵌套 141 循环结构的嵌套 注意 内循环是外循环的循环体 外循环每执行一遍 内循环就执行一周 142 应用举例 用字符打印图形 杨辉三角形 求解百鸡问题输出2到200之间的所有素数求两个整数的最大公约数和最小公倍数 143 第5章作业 作业上传系统中N5 doc中的习题 完成教材中第5章习题5 1 5 9 上传源文件 144 第六章数组 例 求一个班级50个学生的平均成绩 如果还要找出高于平均成绩的学生名单 如何实现 145 第六章数组 C语言支持两种构造数据类型 数组类型和结构类型构造类型的数据可分解为多个元素 其中每一个元素可以是基本类型或又是一个构造类型 作为构造类型的最低层元素只能是基本类型 146 第六章数组 数组概念的引入数组的说明数组的引用数组的存储结构数组的赋初值数组应用举例字符数组与字符串处理 147 数组概念的引入 数组是个多值变量 一个数组变量由一组同名但不同下标的元素构成用数组来存储逻辑相关的数据实体 程序可方便地按下标组织循环 148 数组概念的引入 数组包含的所有元素都具有相同名字和相同的数据类型用数组名和元素在数组中的序号可唯一地确定某个数组元素多维数组 149 数组的说明 形式 例 inta 5 b 4 5 floatx 4 150 数组的说明 数组说明的作用是为数组预留空间数据类型为数组的 基类型 整数表达式定义了数组中所含元素的个数 运算符的个数决定了数组的维数 151 数组的说明 注意 在C语言中 数组元素的下标起始值为0而不是1下标运算符中的整数表达式代表数组每一维的长度下标运算符中不允许使用变量定义数组长度 允许包含常量和sizeof表达式 152 数组的说明 defineN50inta 3 2 charc N floatd sizeof double doublef sizeof a 153 数组的引用 形式 其中 下标1 下标2 等为整型表达式 代表了该元素在内存中的排列位置 154 数组的引用 说明 引用下标变量时 所给出的下标个数必须与所定义的数组维数相一致 而且每一个下标表达式的值不得超界凡是数组基类型变量能使用的运算 数组元素也能使用 155 一维数组遍历 for i 0 i n i a i 156 二维数组遍历 for i 0 i n i for j 0 j m j a i j 157 数组的赋初值 形式 158 数组的赋初值 floatx 4 1 0 0 0 2 7 5 2E 8 inty 3 2 0 1 2 3 4 5 intz 3 2 0 1 2 3 4 5 chars 6 H e l l o 或 chars 6 hello chars 5 hello chars 4 hello 159 数组的赋初值 注意 对数组赋初值时 若初值表中常数个数少于数组元素的个数 这表示仅对数组中排列靠前的元素赋初值 后面元素的值自动赋0 若初值表中给定的初值多于下标变量的个数 将出现编译错误 160 数组的赋初值 注意 C语言允许使用一维数组赋初值的方法对多维数组赋初值C语言允许在数组定义时不指定维的长度 只能是第一维 由初值表中初值的个数来间接决定长度 161 数组的赋初值 floatx 1 0 0 0 2 7 5 2E 8 inty 2 0 1 2 3 4 5 intz 2 0 1 2 3 4 5 chars hello 162 数组应用举例 阅读程序写出结果 冒泡排序 选择排序 打印杨辉三角形 数组应用 163 数组的存储结构 一维数组的存储结构二维数组的存储结构 164 数组的存储结构 数组第一个元素的存储地址就是整个数组的存储首地址 该地址放在数组名中一维数组的存储结构 165 数组的存储结构 二维数组的存储结构为 按行线性展开 顺序存放 即按 a 0 0 a 0 1 a 0 2 a 1 0 a 1 1 a 1 2 二维数组的存储结构 166 数组的存储结构 比较两组程序段 fori 0to3forj 0to4a i j i 10 j和 forj 0to4fori 0to3a i j i 10 j 167 字符数组与字符串处理 在C语言中 没有标准的字符串定义类型 字符串被当作字符数组来处理 168 字符数组的定义 形式 char 169 字符数组的定义 说明字符数组中的元素只能存放一个字符型数据与普通数组一样 字符数组也可以在定义时赋初值 170 字符数组的定义 charstring 100 cblock 20 20 string 0 T cblock 2 5 h charchr 6 C h i n a charline1 100 Shanghai 或charline1 100 Shanghai line1 Shanghai 171 字符串的结束标记 为了便于识别一个字符串的结尾 C语言约定 字符串的末尾以转义字符 0 作为结束标记 172 字符串的输入与输出 使用scanf和printf函数输入与输出main charstr 80 scnaf s str printf s str 173 字符串的输入与输出 注意 用 s格式输入输出字符串时 输出项应该为字符数组名 不能是数组元素名数组名是个不占实际内存的地址常量 它代表整个字符数组的存储首地址 本身已经是地址 不能再对它加地址运算符 174 字符串的输入与输出 注意 s格式输入字符串时 遇空格字符 Tab键和回车符将自动结束输入 s格式输出字符串 遇 0 就结束输出若输入字符串长度超过字符数组所定义的长度时 将造成数组下标越界 但系统对此不报错 175 字符串的输入与输出 使用gets和puts函数输入与输出 gets函数调用形式 gets 其中 str adr为字符数组名或字符指针名 代表输入字符串的存储起始地址 176 字符串的输入与输出 功能 接受由键盘输入的字符串 包括空格符 并将它原样存储到由str adr所指向的内存段中 系统并不保存字符串末尾的换行符 而是自动将 0 作为字符串的内容存放在串尾 177 字符串的输入与输出 使用gets和puts函数输入与输出 puts函数调用形式 puts 其中 str adr为字符数组名或字符指针名 代表输出字符串的存储起始地址 178 字符串的输入与输出 功能 由str adr所指向的地址开始 依次输出存储单元中的字符 直到遇到第一个 0 结束输出 并自动输出一个回车换行 179 字符串的输入与输出 注意 gets和puts函数只能有一个输出项和输入项gets函数不识别字符串中的转义字符 它原样输入 而puts函数能识别字符串中包含的转义字符可以将二维字符数组看作一维字符串数组 180 字符串遍历 使用字符数组 for i 0 s i i s i 已知字符串长度为n for i 0 i n i s i 使用字符指针 while p p p 使用字符指针 for p s p p p 181 字符数组应用举例 由键盘输入长度不超过80的字符串 再原样输出 数组应用 182 常用的字符串处理函数 C语言没有提供对字符串进行整体操作的运算符 但提供了许多有关字符串处理的库函数 通过调用相应的库函数来实现各种功能 183 常用的字符串处理函数 strlen函数形式 strlen 功能 计算并返回字符串str的长度 字符串结束标志不计入内 184 常用的字符串处理函数 strcmp函数形式 strcmp 功能 比较str1和str2两个字符串的大小注意 只比较结束标记前内容 185 常用的字符串处理函数 strcpy函数形式 strcpy 功能 将字符串str2的内容连同结束符 0 一起复制到str1中 注意 str1必须有足够的长度以容纳str2的内容 charstr1 20 str2 China strcpy str1 str2 186 常用的字符串处理函数 strcat函数形式 strcat 功能 将字符串str1与字符串str2尾首相接 生成的新串存于str1中 函数返回str1的首地址 注意 str1必须有足够的长度以容纳新增加的内容 187 常用的字符串处理函数 strcat函数main charstr1 80 str2 20 strcpy str1 Hello strcpy str2 Tom strcat str1 str2 printf s str1 188 字符数组应用举例 字符串的加密解密编写程序 实现通讯录查询功能 189 第6章作业 作业上传系统中N6 doc中的习题 完成教材中第6章习题6 4 6 5 上传源文件 190 第七章函数 函数的概念函数的定义函数的调用函数的嵌套与递归变量的作用域变量的存储类别 191 函数的概念 将具有特定功能 或者被重复多次使用的语句序列单独设计成一个模块 这个模块就称为函数 模块化程序设计 方法 192 实例分析 求组合的值 求杨辉三角形 函数 一 函数 二 193 实例分析 说明 一个C程序可以仅由一个main函数组成 也可以由一个 只能一个 main函数和一个或多个其他函数组成定义函数时出现的参数称为形式参数 调用函数时出现的参数称为实在参数 194 实例分析 说明 在C程序中 main函数能调用其他一切函数 反之不行 其他函数之间允许相互调用函数可以分为两大类 标准函数 自定义函数 195 函数的定义 形式 函数体 实例1 求n的阶乘 196 函数的定义 形式 197 函数的定义 参数 函数类型 代表该函数所返回的值的类型 可以是int float char等标准的预定义类型 也可以是用户自己定义的类型 也可以是无值型void 若省略 将自动赋予函数的类型为int 198 函数的定义 参数 函数名 用户标识符 命名规则与变量名相同 199 函数的定义 参数 形式参数表 代表函数的自变量 可有可无 若无 一对圆括号不能省略 各形式参数间用逗号分隔 如果在圆括号中说明形式参数的数据类型 则必须为每个形式参数指定类型 200 函数的定义 参数 函数体 在一对花括号之间 是实现函数功能的语句序列 201 函数的定义 说明 第一行函数头的句末不能加分号函数要返回值 在函数体必须使用return语句实现 其作用除了将函数值返回给调用函数 并结束自身函数的运行 202 函数的定义 说明 通常要求所返回的函数值类型与所定义的函数类型相一致 如果类型不一致 对于数值型数据 系统将自动进行类型转换 203 函数的调用 形式 204 函数的调用 说明 在实在参数列表中 参数与参数之间用逗号分隔若被调用的函数无参数 一对圆括号不能省略必须保证实在参数与形式参数个数相同 类型一致 位置对应 205 函数的调用 函数调用方式函数的调用出现在表达式中以独立的函数语句调用 实例2 判别素数 206 函数的调用 参数的传递 传值 调用 传地址 调用 指针 的概念 函数传值调用 函数传地址调用 实例3 百分第2套 207 函数的调用 函数调用声明自定义函数调用声明库函数调用声明 208 函数调用声明 自定义函数调用声明 或 函数调用声明 209 函数调用声明 库函数调用声明 include 或 include 210 函数的嵌套与递归 嵌套 调用 递归 调用 求阶乘 求最大公约数 排序 练习 211 函数的嵌套与递归 注意 一个正确的递归函数必须保证递推过程是有限制的递归函数的主要优点是算法设计容易 用于迭代 级数 链表等方面的算法有特殊效果 但递归函数对存储空间的使用非常大 时间效率也偏低 212 变量的作用域 变量的作用域局部变量全局变量 两数交换 213 变量的存储类别 变量具有三大属性 类型 确定变量的存储长度和运算方式作用域 确定变量存在的空间存储类别 确定变量存在的时间 214 变量的存储类别 TC支持四种存储类别 auto 动态存储 static 静态存储 register 寄存器型存储 extern 外部存储 215 动态存储 动态存储的特点是指变量的存储单元随函数的调用而取得 随函数调用的结束而释放 216 动态存储 动态存储类别的声明形式 auto数据类型变量名列表 217 动态存储 说明 在函数内部 包括主函数 定义的没有经过特殊声明的一切局部变量 包括形式参数 均为动态变量 它们自动服从动态存储规则 并存储在称为 栈 的动态内存区域中局部变量默认的存储类别为动态存储引用一个从未被赋过值的动态变量 其初值是不确定的 218 静态存储 静态存储的特点是在程序执行的全过程中 变量始终占据着大小固定的存储单元直至程序运行结束才予以释放 219 静态存储 静态存储类别的声明形式 static数据类型变量名列表 220 静态存储 说明 函数调用结束后 变量的值需要保存到下一次调用时使用 可以使用静态存储类别静态局部变量的生命周期与全局变量相同 其作用域仍局限于说明其自身的函数或复合语句内 221 静态存储 说明 静态局部变量若在定义时被赋初值 它仅在程序开始执行时赋值一次 以后调用时不再重新赋值若定义静态变量时未指定初值 则系统自动对算术型变量赋0值 对字符型变量赋空值 对指针型变量赋NULL值 222 静态存储 说明 若对全局变量加上static说明 该全局变量只能在自身定义的文件中使用 其他程序无法引用或修改它 若希望全局变量不受外界程序和数据的影响 将其定义为静态全局变量能直到良好的隐藏作用 223 寄存器型存储 寄存器型存储就是将变量的存储单元分配在CPU的寄存器中 而不是常规的内存中 由于数据直接从CPU中存取 因此访问变量的时间初缩短 程序运行的速度被加快 224 寄存器型存储 寄存器型存储类别的声明形式 register数据类型变量名列表 225 寄存器型存储 说明 一个计算机的寄存器数量是有限的 而且通用寄存器都是16位的 所以寄存器型存储类别仅适用于int型和char型 而且每个函数只能定义极少量的寄存器变量寄存器存储只能用于局部动态变量和函数的形式参数 226 寄存器型存储 说明 不同的计算机系统允许使用的寄存器变量数目不尽相同 通常 TC允许一个函数中同时定义两个寄存器变量如果定义的寄存器变量数目超过系统可以提供的数目 则C会自动将超限的寄存器变量当作普通的动态变量处理 227 外部存储 如果一个全局变量要被同一个程序中的位于其前的函数引用或被另一个源程序文件引用 就必须在引用之前对该全局变量作外部存储声明 228 外部存储 外部存储类别的声明形式 extern数据类型变量名列表 229 外部存储 说明 外部存储类别主要是为多文件共享而设置的 230 第7章作业 作业上传系统中N7 doc中的习题 完成教材中第6章习题7 2 7 3 7 7 上传源文件 231 第八章编译预处理 所谓 编译预处理 是指对源程序编译之前先调用C的预处理程序对以 开头的命令行进行解释 替换 产生一个新的源程序 然后才对源程序进行通常意义下的编译 232 第八章编译预处理 宏定义文件包含处理条件编译应用举例 233 宏定义 无参数宏定义有参数宏定义宏调用宏调用与函数调用的区别 234 无参数宏定义 形式 define例 defineN50 definePI3 1415926 235 无参数宏定义 所谓无参数宏定义是指用一个指定的标识符来代表一个字符串 该标识符也称为 宏名 预处理时 宏名 被替换成字符串 这一过程称为 宏展开 236 无参数宏定义 说明 宏名一般用大写字母表示在宏展开时 系统不作任何正确性检查 仅作原形替换 undef命令可用来终止宏定义的作用范围宏定义可以嵌套 237 无参数宏定义 说明 宏定义中的字符串不加引号 结束处不加分号 若加了 系统将认为引号 分号也是置换内容 define命令一般出现在源文件的开头处 238 有参数宏定义 形式 define 例 defineS a b a b a b 239 有参数宏定义 有参数宏定义是指用一个带参数表的宏名代表一个字符串 预处理时不仅作字符串替换 还要进行参数替换 240 有参数宏定义 说明 宏名与其右边的圆括号之间不能有空格当参数为表达式时 对参数表达式加括号可防止二义性 有参数宏 241 有参数宏定义 说明 应尽量避免用自增变量作为宏替换的实参 242 宏调用 求园面积 243 宏调用与函数调用的区别 在程序控制上 调用带参数宏时 宏实参只是简单地对宏形参进行原形替换 调用函数时 则是先求出实参表达式的值 再代入形参变量中 杨辉三角形 有参数宏 244 宏调用与函数调用的区别 与函数的参数不同 宏参数没有固定的数据类型 因此宏定义时不涉及类型 宏名和宏参数均无类型 245 宏调用与函数调用的区别 函数调用是在程序运行时发生的 并动态分配所用的内存单元 而宏调用是在编译预处理时进行的 而且不分配内存单元 不进行值传送 也无返回值 246 宏调用与函数调用的区别 使用函数调用不增加运行程序的长度 而每使用一次宏调用 都会使运行程序篇幅有所增长 使编译 链接后的执行程序也增长 247 宏调用与函数调用的区别 宏定义主要用于需要少量参数的简单表达式中 而且调用时不作数据类型检查使用函数不会给程序带来意想不到的副作用 而宏则可能给程序带来意想不到的副作用 248 文件包含处理 文件包含处理是指将另一个源文件嵌入到当前文件中 249 文件包含处理 形式 include 文件名 或 include 250 文件包含处理 说明一个 include只能包含一个文件 除了预定义的标准头文件外 还可包含用户自己设计的文件文件包含命令中的一对尖括号和一对双引号是有区别的 编译系统会使用不同的方法搜索包含文件 251 文件包含处理 说明C语言提供了若干标准函数库 每个标准函数库都与某个预定义的头文件相对应允许使用嵌套包含 252 文件包含处理 说明当用户文件由多个源程序文件组成时 为了避免重复的说明和定义 提高工作效率 提高程序的可靠性和可维护性 可以把各个源文件共同使用的函数类型说明以及符号常量的宏定义等组建为单独的用户包含文件 253 条件编译 条件编译预处理可以使源程序有选择性地编译 使用条件编译有利于程序的调试 能增强程序的通用性 可以将程序方便地定制成不同的版本 254 条件编译 形式1 if else endif功能 当表达式的值为非0时 编译语句1 否则编译语句段2 255 条件编译 形式2 ifdef else endif功能 当指定的宏名已经在 define预处理行中被定义时 编译语句段1 否则编译语句段2 256 条件编译 形式3 ifndef else endif功能 当指定的宏名未在 define预处理行中被定义时 编译语句段1 否则编译语句段2 257 条件编译 注意 if命令行中的表达式只能是常量表达式 else命令行是任选的 若缺省 条件不成立时直接跳出 endif命令行要使用嵌套条件编译 需要使用 elif命令 258 第八章指针 指针的概念指针与数组指针与函数指针与字符串多级指针命令行参数 259 指针的概念 指针变量当变量a存储了变量b的地址 就称变量a指向了变量b 260 指针变量的定义 形式 261 指针变量的定义 例 intm n p1 q 4 doubley z p2 262 指针变量的运算符 取紧跟在其后面的变量的存储地址 从紧跟在其后面的地址开始取值指针变量 或 一个整形常量 指针变量 263 指针变量的引用 注意 p若出现在变量定义语句中 表示定义指针变量p 若出现在表达式中 则表示取p所指对象的内容指针变量只能接收 存储与基类型相容的变量地址 不能对指针变量赋非地址值或与基类型不相容变量的地址 264 指针与数组 程序中凡是用数组处理的算法都可以通过指针实现 而且速度要比数组快得多 265 指针与一维数组 在C语言中 数组名是个地址常量 它代表整个数组的存储首地址 因此赋值语句p a与p a 0 等价 266 指针与一维数组 由于数组的存储是连续的 因此a i就是a i 的存储地址 a i a i 表示取a i地址中的内容 即a i 的值 一维数组的存储结构 267 通过数组名引用数组元素 a a i a 0 a i a a 0 a i a i a 0 aa i a i 268 指针与一维数组 若p a 则 p i 或者p i 就代表a i 注意 p是变量 其值可以改变 a是常量 其值不可改变 269 指针与一维数组 当指针p指向了一维数组中的某个分量时 执行p 或p 变表示使指针p后移或前移一个存储单元 其位移的字节数等于所指数据类型的长度 p p p p 等的含义 270 指针与二维数组 二维数组的两种编译结构把二维数组看作一个大的一维数组 整个数组是一个整体 数组名代表整个数组的存储首地址 把一个二维数组看成是由若干个一维数组组成的数组 即数组的元素也是数组 二维数组的存储结构 271 通过数组名引用数组元素 a a 0 a i a i a 0 a 0 0 a i a i 0 a i j a i j a a i a 0 a i a i j 272 通过数组名引用数组元素 a a 0 a i a i a i j a i j 273 通过指针变量引用二维数组元素 一维数组名为一级指针常量 直接指向变量 二维组名为二级指针常量 指向一个一维数组 即指向行数组指针 指向一维数组的指针变量 274 通过指针变量引用二维数组元素 定义形式 N 其中 N代表指针变量所指向的一维数组的长度 例 int p 5 275 通过指针变量引用二维数组元素 注意 指针名外面的一对圆括号不能漏写 否则就定义了指针数组而不是数组指针了 指针定义 276 通过指针变量引用二维数组元素 例 inta 4 3 b 3 5 int pa 3 pb 5 b 277 通过指针变量引用二维数组元素 说明 p是行指针 p i p 或p 均表示指针移动的单位为 行 p只能指向二维数组中的行 而不能指向一行中的某个元素指针名p与二维数组名虽然都代表 行指针 但p为变量 所以它可以被赋值 而二维数组名为常量 不能被赋值 278 指针与函数 一 指针变量可以作为函数的参数 当函数的参数为指针变量时 函数就能方便地通过形式参数将函数值带出函数体反传给主调函数 指针作为参数 279 指针与函数 二 函数名虽然不是变量 但它与数组名一样在内存中有确切的物理地址 是个地址常量 函数名存储了函数目标码的入口地址 280 指针与函数 二 可以定义一个指向函数的指针 借助于该指针能使函数如同普通变量一样被复制 存储 使函数的通用性得以提高 指向函数的指针变量称为 函数指针 281 函数指针 形式 其中 数据类型代表被指向函数的类型 282 函数指针 注意 指针名 必须包含在一对圆括号之中指针名后面的一对空括号不能漏写 283 函数指针 例 double f 指针定义 284 函数指针 形式 函数指针 285 函数指针 注意 实参表所包含的实参个数 类型必须与被指向的函数的形式参数一致调用之前函数指针必须已经指向某个实际函数 286 指针与函数 二 函数指针应用举例 求下列分段函数的函数值 287 指针与函数 三 函数的返回值类型为指针类型链表 函数指针 288 指针与字符串 单个字符串的表示多字符串的表示 289 指针与字符串 单个字符串的表示 单字符串 字符串操作1 字符串操作2 字符串操作3 290 指针与字符串 多字符串的表示 字符串排序 多字符串 291 多级指针 多级指针就是 指向指针的指针 292 二级指针的定义 形式 例 int p 或 charx p 293 二级指针与指针数组的联系 字符串数组 294 命令行参数 在C语言中 main函数与其他函数一样可以带形式参数 295 命令行参数 形式 main int char 或者 main int char 296 命令行参数 说明 两个形式参数的名字可以随
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 麻风病防治课件背景
- 二零二五年度金融机构间债券回购合同到期续签标准范本
- 2025版房地产企业法律顾问服务书
- 二零二五年度高级定制成衣采购合同模板
- 2025年环保污水处理设备采购与运行合同
- 2025版房屋漏水检测与修复施工合同
- 2025版广告效果优化居间代理协议书范本
- 二零二五年度风力发电场电力工程合同规范
- 2025版汽车维修服务车辆运输合同示范文本
- 2025年车辆挂靠综合管理服务合同范本
- 理疗店合伙协议合同范本
- 2025年施工员-土建方向-岗位技能(施工员)考试题库
- 教师数字素养提升实施方案
- 2025年度跨境电商平台合作运营合同
- 物业相关法律知识培训
- 2025发展对象培训班考试试题及参考答案
- 呼吸内科专科建设
- 2025年中医执业助理医师考试备考试题及答案解析
- 电气监理工程师培训课件
- 炎症性肠病病人的护理
- 心电图室入科教育
评论
0/150
提交评论