




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 C C 语言复习提纲语言复习提纲 第一章第一章 C C 语言程序设计概述语言程序设计概述 一 Visual C 6 0 开发环境 1 了解 Visual C 6 0 的安装过程 2 了解 Visual C 6 0 的工作界面 菜单和工具栏的使用 二 掌握 C 语言程序运行的过程 1 编辑 编辑 是指把按照 C 语法规则编写的程序代码通过编辑器 Visual C 6 0 Turbo C 3 0 输入计算机 并存盘 在存盘时 C 源文件的扩展名为 c 2 编译 将编译 将 C C 语言源程序编译成目标程序语言源程序编译成目标程序 即对源程序进行编译 并将源程序转换为扩展名 为 obj 的二进制目标代码 即把已经编辑好的源程序翻译成二进制目标代码的过程把已经编辑好的源程序翻译成二进制目标代码的过程 3 连接连接 将用户程序生成的目标代码文件 obj 和系统提供的库文件 lib 中的某些代 码连接在一起 生成一个可执行文件 exe 4 执行执行 执行生成的可执行代码 并输出结果 5 调试调试 是将编制的程序投入实际运行前 用手工或编译程序等方法进行测试 修正语法错 误和逻辑错误的过程 三 结构化程序设计的基本概念 1 概念 以模块化设计为中心 将待开发的软件系统划分为若干个相互独立的模块 将原来较为复杂的 问题化简为一系列简单模块的设计 任何模块都可以使用一些基本的结构来实现 任何复杂的程序 都可以使用这些基本结构按一定的顺序组合起来 这些基本结构的特点都是只有一个入口 一个出 口 这样的程序设计方法称为结构化程序设计 2 基本思想 结构化程序设计的基本思想是采用结构化程序设计的基本思想是采用 自顶向下 逐步细化 模块化设计 结构化编码自顶向下 逐步细化 模块化设计 结构化编码 的程序设 计方法和 单入口单出口 的控制结构 3 三种基本结构 顺序结构顺序结构 选择结构选择结构 循环结构循环结构 4 三种基本结构的特点 只有一个入口 只有一个出口 每一个基本结构中的每一部分都有机会执行到 结构内不存在 死循环 5 设计原则 自顶向下 逐步细化 模块化设计 结构化编码 四 C 程序的基本组成 C 程序是由若干个函数构成的 至少有一个主函数 main main main 的位置可以任意 的位置可以任意 其他各函 数在程序中的前后位置也是可以任意的 程序的执行总是从主函数开始 在主函数中结束 主函数程序的执行总是从主函数开始 在主函数中结束 主函数 是可以调用其他任何非主函数的函数 任何非主函数也可以调用其它任何非主函数 是可以调用其他任何非主函数的函数 任何非主函数也可以调用其它任何非主函数 C 程序的基本组成 声明区 主程序区 函数定义区 1 声明区 处在程序文件的所有函数的外部 一般包含 包含头文件 宏定义 类定义 结构体定义 函 数声明 全局变量声明 条件编译等 2 主程序区 主程序以 main 函数开始 main 函数 主函数 是程序运行时的入口 包含局部变量的声 明 函数调用 一般运算 结构控制 对象与结构的处理 文件处理等 3 函数定义区 函数的定义包含函数说明和函数体两部分 2 4 注释 或 为注释 不能嵌套 不产生编译代码 不影响程序的执行效率 五 标识符 1 标识符的定义 用来对变量 符号常量名 函数 数组 类型等命名的有效字符序列统称 为标识符 2 标识符的命名规则 由字母 数字或下画线组成 并且第由字母 数字或下画线组成 并且第 1 1 个字符必须为字母或下画线 个字符必须为字母或下画线 注意 标识符区分大小写 即大写字母和小写字母的通常意义不同 且不能与关键字重名 注意 标识符区分大小写 即大写字母和小写字母的通常意义不同 且不能与关键字重名 练习练习 1 11 1 下列变量标识符哪些是正确的 哪些是不正确的 下列变量标识符哪些是正确的 哪些是不正确的 a3bca3bc if a bc abc abc abcabc 3abc 3abc a bca bc 3abc 3 标识符分类 关键字 预定义标识符 用户自定义标识符 第二章第二章 数据类型 运算符和表达式数据类型 运算符和表达式 一 C 语言的数据类型 C C 语言中基本数据类型包括整型 实型 字符型 枚举类型 构造类型有数组 结语言中基本数据类型包括整型 实型 字符型 枚举类型 构造类型有数组 结 构体 共用体等 构体 共用体等 基本数据类型 见 P17 构造类型又称为组合类型 它是由基本类型按照某种规则组合而成的 数组 是由具有相同数据类型的元素组成的集合 结构体 是由不同的数据类型构成的一种混合的数据结构 构成结构体的成员的数据类型 一般不同 并且在内存中分别占据不同的存储单元 共用体 是类似于结构体的一种构造类型 与结构体不同的是构成共同体的数据成员共用 同一段内存单元 枚举 是将变量的值一一列举出来 变量的值只限于列举出来的值的范围内 指针类型变量用于存储另一变量的地址 而不能用来存放基本类型的数据 它在内存中占 图2 1 C语言的数据类型 数据类型 基本类型 空类型 无值类型 void 构造类型 指针类型 实型 浮点型 联合型类型union 单字符型char 整型int 单精度型float 双精度型double 字符型 宽字符型w char 逻辑型bool 类类型class 枚举类型enum 结构类型struct 数组类型 3 据一个存储单元 类是一种数据类型 它定义的是一种对象类型 由数据和方法组成 描述了属于该类型的 所有对象的性质 二 常量和变量 常量 在程序运行的整个过程中 其值始终保持不变的量 整型常量 表示形式有十进制 八进制 以 0 开头 和十六进制 以 0 x 或 0X 开头 整 型常量可以后缀字母 L 或 l 表示长整数 后缀字母 U 或 u 表示无符号整数 实型常量 浮点型常量 表示形式有一般形式和指数形式 实型常量缺省为 double 型 双精度型 如后缀 f 或 F 则为 float 型 单精度型 字符常量 用单撇号括起来的一个字符 如 A 等 转义字符 用反斜杠引导的 具有特定含义的字符 见 P22表 2 4 如 n 367 x8a 注 C 语言字符集中的任何一个字符均可用转义字符来表示 字符串常量 用双撇号括起来的字符序列 如 student 广东广州 等 布尔常量 false true 符号常量 define 宏名 常数 练习练习 2 2 1 1 下列哪些是合法的常量 下列哪些是合法的常量 12 7f 0986 0986 0986 012 0625L 87U 0 x98C2 01a 01a 6 87E 2 1 2e0 5 1 2e0 5 E 3 E 3 0 xFF 2L 72 160 0 xffff 5E2 0 5E2 0 0 xcdf 1 3E 1 3E 2E0 0668 0668 21 011 22 0 xe 23 01 24 0 x48a 2525 0 x0 x 变量 指程序在运行时其值可改变的量 变量应先定义 声明其类型和名称 后使用 变量定义的一般形式为 在定义一个变量的同时 也可以给它赋以初值 练习练习 2 22 2 以下正确的变量标识符是以下正确的变量标识符是 3abc 3abc amount amount Num of Student ifif a bc a bc above abc a b a b sin day 三 运算符和表达式 1 算术运算符和算术表达式 注意 int i 1 2 3 结果为 3 而不是 3 6 int i 5 3 结果为 1 表达式表达式 1717 5 5 的结果是的结果是 3 3 表达式 表达式 1717 5 5 的结果是的结果是 2 2 2 赋值运算符和赋值表达式 注意 赋值运算符的结合性是从右至左的 复合赋值运算符 复合赋值运算符 intint a 12 a 12 a a a a a a a a a a a a a a a a a a a a a a 结果为结果为 0 0 注意 在在 C C 语言中 定义语言中 定义 intint a b c 3 a b c 3 是错误的 而定义是错误的 而定义 intint a b c a b c a b c 3 a b c 3 是正确的 是正确的 练习练习 2 32 3 设设 m 9 i 3 m 9 i 3 则执行运算则执行运算 m i 1m i 1 后后 m m 的值是多少 结果的值是多少 结果 1 1 m m i 1 m 9 3 1 m 1m m i 1 m 9 3 1 m 1 3 关系运算符和关系表达式 注意 关系运算符的优先级低于算术运算符关系运算符的优先级低于算术运算符 例如 a b c 等价于 a b c a b c 等价于 a b c 与 的区别 4 逻辑运算符与逻辑表达式 4 注意 逻辑非的优先级最高 逻辑与次之 逻辑或最低 练习练习 2 42 4 若有若有 intint a 3 b 0 a 3 b 0 则表达式则表达式 ac a b a b 3 c a b 后 后 b b 的值为的值为 3 3 练习练习 2 72 7 设设 x x y y 和和 z z 都是都是 intint 型变量 且型变量 且 x 8 x 8 y 3 y 3 z 5 z 5 则表达式则表达式 x y z 6 14 zx y z 6 14 z 的值为的值为 6 6 练习练习 2 82 8 设有定义设有定义 int int x 1 y 1 x 1 y 1 则执行语句则执行语句 printf d n x printf d n x 后的输出结果是后的输出结果是 0 0 练习练习 2 92 9 设设 x x y y z z t t 均为均为 intint 型变量 则执行以下语句型变量 则执行以下语句 x y z 1 t x yx y z 1 t x y 后 后 x x y y z z t t 的值分别为的值分别为 2 2 1 1 1 1 1 1 6 条件运算符 表达式 1 表达式 2 表达式 3 注意 结合性是自右向左结合性是自右向左 a b a c d c d 相当于 a b a c d c d 条件运算符的优先级别高于赋值运算符 低于关系运算符和算术运算符条件运算符的优先级别高于赋值运算符 低于关系运算符和算术运算符 如 a b a b b a 相当于 a b a b b a 练习练习 2 102 10 设有变量说明 设有变量说明 intint x 3x 3 y 5y 5 那么表达式 那么表达式 z x y x yz x y x y 运算后 运算后 z z 的值是的值是 5 5 7 位运算符 位运算符是对其操作数按其二进制形式逐位进行运算 参加位运算的操作数必须为整数 练习练习 2 112 11 intint a 5 b 6 aa b 7 a b 3 b 7 b 2 1a 5 b 6 aa b 7 a b 3 b 7 b 2 1 注 在位运算中 操作数左移三位 其结果相当于操作数乘以注 在位运算中 操作数左移三位 其结果相当于操作数乘以 8 8 逗号运算符 表达式 表达式 表达式 n 注意 自左至右 依次计算各表达式的值 表达式 n 的值即为整个逗号表达式的值 如 a 3 5 a 4 a 5 的值为 20 四 运算符的优先级与结合性 1 所谓结合性是指 当一个操作数两侧的运算符具有相同的优先级时 该操作数是先与左边 的运算符结合 还是先与右边的运算符结合 自左至右的结合方向 称为左结合性 反之 称为右结合性 结合性是 语言的独有概念 除单目运算符 赋值运算符和条件运算符是右结合性外 其它运 算符都是左结合性 2 表达式求值 按运算符的优先级高低次序执行 例如 先乘除后加减 如果在一个运算对象 或称操作数 两侧的运算符的优先级相同 则按 语言规定的结合 方向 结合性 进行 例如 算术运算符的结合方向是算术运算符的结合方向是 自左至右自左至右 即 在执行 a b c 时 变量 b 先与减 号结合 执行 a b 然后再执行加 c 的运算 练习 2 12 设 int x 2 y 3 z 4 执行语句行 x y 1 z x y 以后 x y 和 z 的值分别是 多少 答案 3 3 7 练习练习 2 132 13 若有定义若有定义 intint m 2 m 2 则逻辑表达式则逻辑表达式 m 3 后 后 n 的值为的值为 2 练习练习 2 16 如果如果 a 5 b 3 c 7 d 9 则条件表达式则条件表达式 a b a cm 正常输出 m 左 补空格 int a 36 printf a 5d n a 36 n 对实数 表示输出 n 位小数 对字符串 表示截取的字符个数 float a 123 456 printf a 8 2f n a 123 46 输出的数值靠左端 右边补空格 printf s 5 3s guangdong gua 0 小于指定宽度左边补 0 int b 789 printf b 05d n b 00789 如 在如 在 C C 程序的格式输出中 程序的格式输出中 d d 表示输出十进制整数 表示输出十进制整数 6 2f 6 2f 表示输出长度为表示输出长度为 6 6 位 有位 有 2 2 位小数的位小数的 实数 实数 printf s 5 3s student printf s 5 3s student 的输出结果是的输出结果是 s stus stu 2 格式化输入 scanf 函数 scanf 函数的一般格式 scanf 格式字符串 输入项首地址表 注 格式输入函数格式输入函数 scanf scanf 可以从键盘上接收不同数据类型的数据 可以从键盘上接收不同数据类型的数据 格式化输出函数 printf 和格式化输入函数 scanf 都包含在头文件 stdio h 中 格式字符串 格式字符串可以包含 3 种类型的字符 格式指示符 空白字符 空格 Tab 键和回车键 和非空白字符 又称普通字符 格式指示符与 printf 函数的相似 空白字符作为相邻 2 个输入数据的缺省分隔符 非空白 6 字符在输入有效数据时 必须原样一起输入 输入项首地址表 由若干个输入项首地址组成 相邻 2 个输入项首地址之间 用逗号分 开 输入项首地址表中的地址 可以是变量的首地址 也可以是字符数组名或指针变量 变量首地址的表示方法 假设给 num1 输入 12 给 num2 输入 36 则正确的输入操作为 12 36 或者 12 36 注 使用 符号表示按回车键操作 在输入数据操作中的作用是 通知系统输入操作结 束 格式字符串 中出现的普通字符 包括转义字符形式的字符 务必原样输入 例如 scanf d d 假设给 num1 输入 12 给 num2 输入 36 正确的输入操作为 12 36 练习练习 3 13 1 已有定义已有定义 doubledouble d f d f 数据的输入方式为 数据的输入方式为 3 693 69 3 23 2 根据定义和数据 根据定义和数据 的输入方式 输入函数语句的正确形式为的输入方式 输入函数语句的正确形式为 scanf lf lf n m 1 printf d d n m n 输出结果是输出结果是 3 1 第四章第四章 选择结构程序设计选择结构程序设计 一 算法 1 1 算法的概念 算法是指 算法的概念 算法是指为解决一个问题而采取的确定的 有限的方法和步骤 为解决一个问题而采取的确定的 有限的方法和步骤 2 算法的描述方法最常用的有算法的描述方法最常用的有自然语言 流程图 自然语言 流程图 N S 流程图 流程图 PAD 图和伪代码等 图和伪代码等 二 顺序结构程序设计 顺序结构是结构化程序设计中最简单 最常见的一种程序结构 顺序结构中的语句是按照书写 的先后次序执行的 并且每个语句都会被执行到 练习 4 1 编写一个程序 从键盘上输入一个学生 5 门课的成绩 计算出该学生的总成绩和平 均成绩 并用自然语言描述算法 解 设变量 a b c d e 分别表示学生 5 门课的成绩 sum 表示总成绩 aver 表示平均成 绩 则用自然语言描述算法如下 输入学生 5 门课的成绩 a b c d e 求总成绩 sum a b c d e 求平均成绩 aver sum 5 0 输出总成绩和平均成绩 程序如下 include main float a b c d e sum aver printf 请输入学生 5 门课的成绩 n scanf f f f f f 7 sum a b c d e aver sum 5 0 printf 总成绩 0 2f 平均成绩 2f n sum aver 练习练习 4 24 2 编写一个程序 从键盘输入梯形的上底 下底和高的值 浮点数 编写一个程序 从键盘输入梯形的上底 下底和高的值 浮点数 计算并输出其 计算并输出其 面积 保留两位小数 面积 保留两位小数 并用 并用 N SN S 结构图表示算法 结构图表示算法 解 设变量 a b h area 分别表示梯形的上底 下底 高和面积 则用 N S 结构图表示算法 如下 程序如下 include main float a b h area printf 请输入梯形的上底 下底和高 n scanf f f f area a b h 2 0 printf 梯形的面积为 0 2f n area 练习练习 4 34 3 编写一个程序 从键盘输入圆的半径 计算并输出圆的周长和面积 保留两位小数 编写一个程序 从键盘输入圆的半径 计算并输出圆的周长和面积 保留两位小数 用伪代码表示出算法 用伪代码表示出算法 解 设用变量 r length area 分别表示圆的半径 周长和面积 则用伪代码表示算法如下 BEGIN input r length 2 3 14 r area 3 14 r r print length area END 程序如下 include define PI 3 14 main float r length area printf 请输入圆的半径 n scanf f length 2 PI r area PI r r printf 圆的周长为 0 2f n length printf 圆的面积为 0 2f n area 三 选择结构程序设计 输入梯形的上底 a 下底 b 和高 h 计算梯形的面积 area a b h 2 0 输出结果 8 1 if 语句 if 语句的一般格式 if 表达式 语句组 1 else 语句组 2 if 语句中的 表达式 必须用 和 括起来 表示程序执行的条件 常用关系运 算符 逻辑运算符等表示的条件表达式 其结果只有两个值 1 或 0 成立或不成立 如 表示字符型变量如 表示字符型变量 chch 是大写英文字符的是大写英文字符的 C C 语言表达式是语言表达式是 ch A printf 输入行李的重量 scanf f if w 40 0 x 40 0 0 3 w 40 0 0 8 else x w 0 5 printf 行李重量 w 2f 公斤 托运费 x 2f 元 n w x 2 switch 语句 switch 语句的一般形式 switch 表达式 case 常量表达式 1 语句组 break case 常量表达式 2 语句组 break 9 case 常量表达式 语句组 break default 语句组 break 执行过程 当 switch 后面 表达式 的值 与某个 case 后面的 常量表达式 的值相同时 就执行 该 case 后面的语句 组 当执行到 break 语句时 跳出 switch 语句 转向执行 switch 语句的下 一条 如果没有任何一个 case 后面的 常量表达式 的值 与 表达式 的值匹配 则执行 default 后面的语句 组 然后 再执行 switch 语句的下一条 说明 switch 后面的 表达式 可以是 int char 和枚举型中的一种 每个每个 casecase 子句后面的子句后面的 常量表达式常量表达式 的值 必须各不相同 的值 必须各不相同 否则会出现相互矛盾的现象 即对表达式的同一值 有两种或两种以上的执行方案 case 后面的常量表达式仅起语句标号作用 并不进行条件判断 系统一旦找到入口标号 就从此标号开始执行 不再进行标号判断 所以要退出要退出 switchswitch 语句 方法是使用语句 方法是使用 breakbreak 语句 语句 各 case 及 default 子句的先后次序 不影响程序执行结果 多个 case 子句 可共用同一语句 组 用 switch 语句实现的多分支结构程序 完全可以用 if 语句或 if 语句的嵌套来实现 练习练习 4 54 5 以下程序段的输出结果是以下程序段的输出结果是 int x 7 y 8 z 9 if x y x y y z z x printf d d d n x y z 结果 7 8 7 练习练习 4 64 6 以下程序的输出结果是以下程序的输出结果是 include void main int m 5 if m 5 printf d n m else printf d n m 结果 6 练习练习 4 74 7 以下程序的输出结果是以下程序的输出结果是 include void main int k 1 x 0 y 0 switch k case 0 y case 1 x case 2 x y printf x d y d n x y 10 结果 x 2 y 1 第五章第五章 循环结构程序设计循环结构程序设计 一 循环程序设计 1 while 语句 一般格式 while 循环继续条件 循环体语句组 执行过程 求解 循环继续条件 表达式 如果其值为非 0 转 否则转 执行循环体语句组 然后转 执行 while 语句的下一条 练习 5 1 程序功能 求 1 100 的累计和 include void main int i 1 sum 0 初始化循环控制变量 i 和累计器 sum while i 100 sum i 实现累加 i 循环控制变量 i 增 1 printf sum d n sum 程序运行情况如下 sum 5050 2 do while 语句 直到型循环 一般格式 do 循环体语句组 while 循环继续条件 本行的分号不能缺省 当循环体语句组仅由一条语句构成时 可以不使用复合语句形式 执行过程 执行循环体语句组 计算 循环继续条件 表达式 如果 循环继续条件 表达式的值为非 0 真 则转向 继续执行 否则 转向 执行 do while 的下一条语句 do while 循环语句的特点是 先执行循环体语句组 然后再判断循环条件 因此因此 do whiledo while 语句不论条件是否成立 至少要执行一次循环体 语句不论条件是否成立 至少要执行一次循环体 练习 5 2 用 do while 语句求解 1 100 的累计和 程序功能 求 1 100 的累计和 main int i 1 sum 0 定义并初始化循环控制变量 以及累计器 Do sum i 累加 i while i 100 循环继续条件 i 100 printf sum d n sum 11 3 for 语句 for 语句的一般格式 for 变量赋初值 循环继续条件 循环变量增值 循环体语句组 for 语句的执行过程 求解 变量赋初值 表达式 求解 循环继续条件 表达式 如果其值非 0 执行 否则 转至 执行循环体语句组 并求解 循环变量增值 表达式 然后转向 执行 for 语句的下一条语句 说明 变量赋初值 循环继续条件 和 循环变量增值 部分均可缺省 甚至全部缺省 但其 间的分号不能省略 当循环体语句组仅由一条语句构成时 可以不使用复合语句形式 循环变量赋初值 表达式 既可以是给循环变量赋初值的赋值表达式 也可以是与此无关 的其它表达式 如逗号表达式 例如 for sum 0 i 100 i sum i for sum 0 i 1 i 100 i sum i 循环继续条件 部分是一个逻辑量 除一般的关系 或逻辑 表达式外 也允许是数值 或字符 表达式 如 如 while E while E 等价于等价于 while 0 while 0 while E while E 等价于等价于 while 1 while 1 forfor 语句最为灵活 不仅可用于循环次数已经确定的情况 也可用于循环次数虽不确定 但给语句最为灵活 不仅可用于循环次数已经确定的情况 也可用于循环次数虽不确定 但给 出了循环继续条件的情况 出了循环继续条件的情况 练习 5 3 求 n 的阶乘 n n 1 2 n 程序功能 求 n main int i n long fact 1 将累乘器 fact 初始化为 1 printf Input n scanf d for i 1 i n i fact i 实现累乘 printf d ld n n fact 程序运行情况如下 Input n 5 5 120 练习练习 5 45 4 有以下程序有以下程序 include void main int a 10 b 10 i for i 0 a 8 b i printf d d a b 程序输出的结果是 10 10 9 1 练习练习 5 55 5 有以下程序有以下程序 include void main 12 int k for k 0 k 10 k printf d k 答案 10 练习练习 5 65 6 以下程序的运行结果是以下程序的运行结果是 include void main int m for m 1 m 1 a 程序执行后 a 的值是 0 练习练习 5 105 10 以下程序以下程序 include void main int i for i 0 i 10 i printf d i 输出结果是 10 5 循环的嵌套 循环语句的循环体内 又包含另一个完整的循环结构 称为循环的嵌套 循环嵌套的概念 对所有高级语言都是一样的 for 语句和 while 语句允许嵌套 do while 语句也不例外 练习 5 11 编程 13 输出下列图形 解 程序功能 打印 5 行 第一行 1 个 第二行 3 个 第三行 5 个 include void main int i 1 while i 5 int j 1 k 1 while j 5 i printf j while k3 14 程序代码如下 include void main int F1 1 F2 1 int F S 2 n 3 while n 12 F F1 F2 F1 F2 F2 F S S F n printf S d n S 第六章第六章 数组数组 数组是数目固定 类型相同的若干变量的有序集合 数组是数目固定 类型相同的若干变量的有序集合 一 一维数组 1 一维数组的定义 数据类型 数组名 常量表达式 数组名 2 常量表达式 2 数据类型 是指数组元素的数据类型 数组名 与变量名一样 必须遵循标识符命名规则 常量表达式 必须用方括号括起来 指的是数组的元素个数 又称数组长度 它是一 个整型值 其中可以包含常数和符号常量 但不能包含变量 数组元素的下标 是元素相对于数组起始地址的偏移量 所以从 0 开始顺序编号 数组名中存放的是一个地址常量 它代表整个数组的首地址 同一数组中的所有元素 按 其下标的顺序占用一段连续的存储单元 注 数组名能与其他变量名相同 数组名后是用方括号括起来的常量表达式 不能和圆括号 注 数组名能与其他变量名相同 数组名后是用方括号括起来的常量表达式 不能和圆括号 2 数组元素的引用 引用数组中的任意一个元素的形式 数组名 下标表达式 下标表达式 可以是任何非负整型数据 取值范围是 0 元素个数 1 1 个数组元素 实质上就是 1 个变量 它具有和相同类型单个变量一样的属性 可以对它 进行赋值和参与各种运算 在 C 语言中 数组作为 1 个整体 不能参加数据运算 只能对单个的元素进行处理 一维数组元素的初始化 初始化格式 数据类型 数组名 常量表达式 初值表 如果对数组的全部元素赋以初值 定义时可以不指定数组长度 系统根据初值个数自动确 定 如果被定义数组的长度 与初值个数不同 则数组长度不能省略 初值表 中的初值个数 可以少于元素个数 即允许只给部分元素赋初值 3 数组元素的存储 数组元素在计算机内存中存储时 占据一片连续的存储空间 数组名代表数组元素占据的内存数组元素在计算机内存中存储时 占据一片连续的存储空间 数组名代表数组元素占据的内存 空间的首地址 由于数组各元素的数据类型相同 因此在数组中 每一个元素在内存里占用的存储空间的首地址 由于数组各元素的数据类型相同 因此在数组中 每一个元素在内存里占用的存储 单元数都是相同的 单元数都是相同的 练习练习 6 16 1 从键盘上任意输入 从键盘上任意输入 n n 个整数 用冒泡法按从小到大地排序 并在屏幕上显示出来 个整数 用冒泡法按从小到大地排序 并在屏幕上显示出来 解 冒泡法排序的基本思想 从第一个数开始依次对相邻两数进行比较 如次序对则不做任何 操作 如次序不对则使这两个数交换位置 第一遍的 N 1 次比较后 最大的数已放在最后 第 二遍只需考虑 N 1 个数 以此类推直到第 N 1 遍比较后就可以完成排序 15 include stdio h define NUM 10 定义符号常量 数据个数 N main int data NUM 定义 1 个 1 维整型数组 data int i j temp 定义循环变量和临时变量 printf 请输入 10 个整数 n for i 0 i NUM i scanf d 冒泡法排序 for i 0 ii j 内循环 进行每趟比较 if data j data j 1 如果 data j 大于 data j 1 交换两者的位置 temp data j data j data j 1 data j 1 temp 输出排序后的数据 printf n 排序后的数据 n for i 0 i NUM i printf d data i printf n 练习练习 6 26 2 下列对一维数组正确赋初值的语句是下列对一维数组正确赋初值的语句是 A int a 10 I am a student B char a I am a student C int a 3 1 3 5 7 9 1 D char a 3 I am a student 练习练习 6 36 3 在下面关于一维数组的定义中 有语法错误的是 在下面关于一维数组的定义中 有语法错误的是 A int x 1 2 3 4 5 B int x 5 0 C int x 5 D int x 答案 D 练习练习 6 6 4 4 青年歌手参加歌曲大奖赛 有青年歌手参加歌曲大奖赛 有 1010 个评委对他进行打分 试编程求这位选手的平均得个评委对他进行打分 试编程求这位选手的平均得 分 去掉一个最高分和一个最低分 分 去掉一个最高分和一个最低分 并在屏幕上输出去掉的最高分和去掉的最低分及这位选手的 并在屏幕上输出去掉的最高分和去掉的最低分及这位选手的 最后得分 最后得分 解 include main int i j min 16 float temp ave 0 float a 11 printf n 输入评委所打的分数 n for i 1 i 10 i scanf f 选择法排序 for i 1 i 9 i 外循环 控制比较趟数 min i for j i 1 ja j min j temp a i a i a min a min temp for i 2 i 9 i 注意 i 值的变化范围 ave ave a i printf 去掉一个最低分 6 1f 分 n a 1 printf 去掉一个最高分 6 1f 分 n a 10 printf 选手最后得分 6 1f 分 n ave 8 二 二维数组 1 二维数组的定义 数据类型 数组名 行常量表达式 列常量表达式 数组名 2 行常量表达式 2 列常量 表达式 2 数组元素在内存中的排列顺序为 按行存放 即先顺序存放第一行的元素 再存放第二 行 以此类推 设有一个 m n 的数组 x 则第 i 行第 j 列的元素 x i j 在数组中的位置为 i n j 注意 行号 列号均从 0 开始计数 2 二维数组元素的引用 引用 2 维数组元素的形式为 数组名 行下标表达式 列下标表达式 行下标表达式 和 列下标表达式 都应是整型表达式或符号常量 行下标表达式 和 列下标表达式 的值 都应在已定义数组大小的范围内 假设有数 组 x 3 4 则可用的行下标范围为 0 2 列下标范围为 0 3 对基本数据类型的变量所能进行的操作 也都适合于相同数据类型的 2 维数组元素 3 二维数组元素的初始化 按行赋初值 数据类型 数组名 行常量表达式 列常量表达式 第 0 行初值表 第 1 行初值表 最后 1 行初值表 17 赋值规则 将 第 0 行初值表 中的数据 依次赋给第 0 行中各元素 将 第 1 行初值表 中 的数据 依次赋给第 1 行各元素 以此类推 按 2 维数组在内存中的排列顺序给各元素赋初值 数据类型 数组名 行常量表达式 列常量表达式 初值表 赋值规则 按 2 维数组在内存中的排列顺序 将初值表中的数据 依次赋给各元素 如果对全部元素都赋初值 可以省略如果对全部元素都赋初值 可以省略 行数行数 但不能省略但不能省略 列数列数 注意 只能省略 注意 只能省略 行数行数 练习练习 6 56 5 执行执行 intint a 3 1 3 5 7 9 11 a 3 1 3 5 7 9 11 语句后语句后 a 1 0 a 1 0 的值是的值是 7 7 练习练习 6 66 6 以下对二维数组以下对二维数组 a a 进行正确初始化的是进行正确初始化的是 A int a 2 3 1 2 3 4 5 6 B int a 3 1 2 3 4 5 6 C int a 2 1 2 3 4 5 6 D int a 2 1 2 3 4 三 字符数组 1 字符数组的定义 1 维字符数组 用于存储和处理 1 个字符串 其定义格式与 1 维数值数组一样 2 维字符数组 用于同时存储和处理多个字符串 其定义格式与 2 维数值数组一样 2 字符数组的初始化 字符数组的初始化 可以通过为每个数组元素指定初值字符来实现 3 字符数组的引用 字符数组的逐个字符引用 与引用数值数组元素类似 字符数组的输入 除了可以通过初始化使字符数组各元素得到初值外 也可以使用 getchar 或 scanf 函数输入字 符 字符数组的输出 字符数组的输出 可以用 putchar 或 printf 函数 四 字符串及其结束标志 所谓字符串 是指若干有效字符的序列 C 语言中的字符串 可以包括字母 数字 专用字符 转义字符等 C 语言规定 以 0 作为字符串结束标志 0 代表 ASCII 码为 0 的字符 表示一个 空 操作 只起一个标志作用 因此可以对字符数组采用另一种方式进行操作了 字符数组的整体 操作 注意 由于系统在存储字符串常量时 会在串尾自动加上 1 个结束标志 所以无需人为地再加 1 个 另外 由于结束标志也要在字符数组中占用一个元素的存储空间 因此在说明字符数组长度时 至少为字符串所需长度加 1 1 字符数组的整体初始化 字符串设置了结束标志以后 对字符数组的初始化 就可以用字符串常量来初始化字符数组 2 字符数组的整体引用 字符串的输入 除了可以通过初始化使字符数组各元素得到初值外 也可以使用 scanf 函数输入字符串 字符串的输出 printf 函数 不仅可以逐个输出字符数组元素 还可以整体输出存放在字符数组中的字符串 五 常用的字符串处理函数 字符串标准函数的原型在头文件 string h 中 1 输入字符串 gets 函数 调用方式 gets 字符数组 函数功能 从标准输入设备 stdin 键盘上 读取 1 个字符串 可以包含空格 并将其 存储到字符数组中去 18 使用说明 gets 读取的字符串 其长度没有限制 编程者要保证字符数组有足够大的空间 存放输 入的字符串 该函数输入的字符串中允许包含空格 而 scanf 函数不允许 2 输出字符串 puts 函数 调用方式 puts 字符数组 函数功能 把字符数组中所存放的字符串 输出到标准输出设备中去 并用 n 取代字符 串的结束标志 0 所以用 puts 函数输出字符串时 不要求另加换行符 使用说明 字符串中允许包含转义字符 输出时产生一个控制操作 该函数一次只能输出一个字符串 而 printf 函数也能用来输出字符串 且一次能输出 多个 3 字符串比较 strcmp 函数 调用方式 strcmp 字符串 1 字符串 2 其中 字符串 可以是串常量 也可以是 1 维字符数组 函数功能 比较两个字符串的大小 如果 字符串 1 字符串 2 函数返回值等于 0 字符串 1字符串 2 函数返回值正整数 使用说明 如果一个字符串是另一个字符串从头开始的子串 则母串为大 不能使用关系运算符 来比较两个字符串 只能用 strcmp 函数来处理 4 拷贝字符串 strcpy 函数 调用方式 strcpy 字符数组 字符串 其中 字符串 可以是串常量 也可以是字符数组 函数功能 将 字符串 完整地复制到 字符数组 中 字符数组中原有内容被覆盖 使用说明 字符数组必须定义得足够大 以便容纳复制过来的字符串 复制时 连同结束标志 0 一 起复制 不能用赋值运算符 将一个字符串直接赋值给一个字符数组 只能用 strcpy 函数 来处理 5 连接字符串 strcat 函数 调用方式 strcat 字符数组 字符串 函数功能 把 字符串 连接到 字符数组 中的字符串尾端 并存储于 字符数组 中 字符数组 中原来的结束标志 被 字符串 的第一个字符覆盖 而 字符串 在操作中未被修 改 使用说明 由于没有边界检查 编程者要注意保证 字符数组 定义得足够大 以便容纳连接后的目 标字符串 否则 会因长度不够而产生问题 连接前两个字符串都有结束标志 0 连接后 字符数组 中存储的字符串的结束标志 0 被舍弃 只在目标串的最后保留一个 0 6 求字符串长度 strlen 函数 len 是 length 的缩写 调用方式 strlen 字符串 函数功能 求字符串 常量或字符数组 的实际长度 不包含结束标志 练习练习 6 76 7 执行执行 charchar str 10 str 10 I I amam a a teacher 0 strlen strteacher 0 strlen str 后的结果是 后的结果是 1414 7 将字符串中大写字母转换成小写 strlwr 函数 调用方式 strlwr 字符串 19 函数功能 将字符串中的大写字母转换成小写 其它字符 包括小写字母和非字母字符 不 转换 8 将字符串中小写字母转换成大写 strupr 函数 调用方式 strupr 字符串 函数功能 将字符串中小写字母转换成大写 其它字符 包括大写字母和非字母字符 不转 换 第七章第七章 函数函数 一 函数的定义与调用 1 函数的定义 任何函数 包括主函数 main 都是由函数说明和函数体两部分组成 根据函数是否需要参 数 可将函数分为无参函数和有参函数两种 无参函数的一般形式 函数类型 函数名 void 说明语句部分 可执行语句部分 注意 在旧标准中 函数可以缺省参数表 但在新标准中 函数不可缺省参数表 如果不需要 参数 则用 void 表示 主函数 main 例外 有参函数的一般形式 函数类型 函数名 数据类型 参数 数据类型 参数 2 说明语句部分 可执行语句部分 有参函数比无参函数多了一个参数表 调用有参函数时 调用函数将赋予这些参数实际的值 为了与调用函数提供的实际参数区别开 将函数定义中的参数表称为形式参数表 简称形参表 练习 7 1 定义一个函数 用于求两个数中的大数 解 功能 定义一个求较大数的函数并在主函数中调用 int max int n1 int n2 定义一个函数 max return n1 n2 n1 n2 main int max int n1 int n2 函数说明 int num1 num2 printf input two numbers n scanf d d return 语句的功能 返回调用函数 并将 返回值表达式 的值带给调用函数 注意 调用函数中无 return 语句 并不是不返回一个值 而是一个不确定的值 为了明确表 示不返回值 可以用 void 定义成 无 空 类型 函数类型 函数的类型说明符指明了函数的类型 它实际上是函数返回值的类型 如果不要求函数有返回函数的类型说明符指明了函数的类型 它实际上是函数返回值的类型 如果不要求函数有返回 值 函数的类型说明符可以写为值 函数的类型说明符可以写为 voidvoid 如果缺省 如果缺省 C C 语言函数返回类型的默认定义类型是语言函数返回类型的默认定义类型是 intint 型 型 在定义函数时 对函数类型的说明 应与 return 语句中 返回值表达式的类型一致 如果不一致 则以函数类型为准 如果缺省函数类型 则系统一律按整型处理 即 在即 在 C C 语言中 函数返回值的数据类型取决于在定义该函数时所指定的数据类型 语言中 函数返回值的数据类型取决于在定义该函数时所指定的数据类型 3 对被调用函数的说明和函数原型 在 ANSI C 新标准中 采用函数原型方式 对被调用函数进行说明 其一般格式如下 函数类型函数类型 函数名函数名 数据类型数据类型 参数名参数名 数据类型数据类型 参数名参数名 2 2 C 语言同时又规定 在以下 3 种情况下 可以省去对被调用函数的说明 当被调用函数的函数定义出现在调用函数之前时 因为在调用之前 编译系统已经知道了被 调用函数的函数类型 参数个数 类型和顺序 如果在所有函数定义之前 在函数外部 例如文件开始处 预先对各个函数进行了说明 则 在调用函数中可缺省对被调用函数的说明 当一个函数是当一个函数是 intint 类型时 它与被调用者的前后位置关系可以忽略 可以省略对被调函数的类型时 它与被调用者的前后位置关系可以忽略 可以省略对被调函数的 说明 说明 4 函数的调用 一般形式为 函数名 实际参数表 切记 实参的个数 类型和顺序 应该与被调用函数所要求的参数 形参 个数 类型和顺序 一致 才能正确地进行数据传递 调用函数方式 函数表达式 函数作为表达式的一项 出现在表达式中 以函数返回值参与表达式的运算 函数语句 C C 语言中的函数可以只进行某些操作而不返回函数值 这时的函数调用可作为 一条独立的语句 函数实参 函数作为另一个函数调用的实际参数出现 这种情况是把该函数的返回值作为实 参进行传送 因此要求该函数必须是有返回值的 说明 调用函数时 函数名称必须与具有该功能的自定义函数名称完全一致 实参在类型上按顺序与形参 必须一一对应和匹配 如果类型不匹配 C 编译程序将按赋值 兼容的规则进行转换 如果实参和形参的类型不赋值兼容 通
温馨提示
- 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年度影视基地租赁合同模板(含拍摄设备使用规定)
- 2025年本科院校基建处招聘考试备考指南与模拟题
- 小学教师个人专业发展三年规划
- 2023年度保安员考试检测卷【研优卷】附答案详解
- 2025云南昆明巫家坝建设发展有限责任公司及下属公司第三季度招聘23人笔试备考试题及答案解析
- 热电厂巡检工培训课件
- 2025年探伤工(二级)重点难点考试试卷
- (正式版)DB15∕T 385-2020 《行业用水定额》
- 曲臂高空作业车施工方案
- 国家电网有限公司输变电工程通 用设计(330~750kV输电线路绝缘子金具串通 用设计分册)2024版
- 厨房设备备品备件及专用工具库
- 1-商务沟通基本原理
评论
0/150
提交评论