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

下载本文档

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

文档简介

总复习 考试安排 时间 25日上午现科下午本部 考场以教学班为单位考试形式 笔试考试题型 选择题 20分 每题一分 判断题 20分 每题两分 问答题 30分 每题六分 包括 读程序写结果 写程序功能 写程序执行过程 编程题 30分 每题十分 顺序结构 选择结构和循环结构各一题 本门课程成绩比例构成 平时成绩 10 实验成绩 30 期末成绩 60 第一章 概述 函数与主函数C语言是一种函数式语言 其程序基本组成是函数 程序由一个或多个函数组成 函数可以是系统提供的库函数 也可以是用户根据需要自己编制设计的函数必须有且只能有一个主函数main 不管主函数在程序中的位置如何 程序执行从main开始 在main中结束 其它函数通过嵌套调用得以执行 C程序开发步骤 程序代码的录入 生成源程序 c 语法分析查错 翻译生成目标程序 obj 与其它目标程序或库链接装配 生成可执行程序 exe 第二章 变量与表达式 一 算术运算符和表达式基本算术运算符 结合方向 从左向右优先级 可为单目运算符时 右结合性两整数相除 结果为整数 要求两侧均为整型数据 余数符号与被除数符号一致 2 1简单表达式 利用 和 可以求整数每一位上的数字 例235 10 5235 100 10 3235 100 2 标识符组成 只能由字母 数字 下划线组成 且第一个字母必须是字母或下划线大小写敏感长度 最长32个字符 2 2常量与变量 关键字定义 有特殊含义的系统保留标识符 不能用来作为用户程序中定义的标识符 C语言保留的关键字 autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile 常量定义 程序运行时其值不能改变的量 即常数 分类 符号常量 用标识符代表常量定义格式 define符号常量常量 符号常量不同于变量 它的值在其作用域 在本例中为主函数 内不能改变 也不能再被赋值 如 definePRICE30 直接常量 例 intia ib ic floatfdata 决定分配字节数和数的表示范围 合法标识符 变量定义的一般格式 数据类型变量1 变量2 变量n 变量初始化 定义时赋初值 变量的使用 先定义 后使用 变量定义位置 一般放在函数开头 2 2数据类型 一 整型数据 整型常量 整常数 三种形式 十进制整数 由数字0 9和正负号表示 如123 456 0八进制整数 由数字0开头 后跟数字0 7表示 如0123 011十六进制整数 由0 x开头 后跟0 9 a f A F表示 如0 x123 0 xff 整型变量的分类整型变量的基本类型符为int 根据数值的范围定义为以下三种整型变量 1 基本整型 以int表示 2 短整型 以shortint表示 或以short表示 3 长整型 以longint表示 或以long表示 在turboc中一个int型的变量的值范围为 215 215 1 即 32768 32767 有符号基本整型 signed int无符号基本整型unsignedint有符号短整型 signed short int 无符号短整型unsignedshort int 有符号长整型 signed long int 无符号长整型unsignedlong int 整型变量占字节数随机器不同而不同 一般占一个机器字short int long可用sizeof 类型标识符 测量 整型常量的类型 1 根据其值所在范围确定其数据类型 2 在整常量后加字母l或L 认为它是longint型常量 例12与12L 例30000为int型65536为longint型 二 实型数据 实型常量 实数或浮点数 表示形式 十进制数形式 由数字和小数点组成 必须有小数点 如0 123 123 123 0 0 0 123 指数形式 e或E之前必须有数字 指数必须为整数 如12 3e3 123E2 1 23e4 e 5 1 2E 3 5规范化的指数形式 即在字母e 或e 之前的小数部分中 小数点左边应有一位 且只能有一位 非零的数字 实型变量的分类单精度 float 占4字节 提供7位有效数字双精度 double 占8字节 提供15 16位有效数字长双精度 longdouble 实型变量 实型常量的类型默认double型在实型常量后加字母f或F 认为它是float型 三 字符型数据 字符常量 定义 用单引号括起来的单个普通字符或转义字符 如 a A n 101 字符常量的值 该字符的ASCII码值 如 A 65 a 97 0 48 n 10 如 101 A 012 n 376 x61 a 060 0 483 例 A 101 x41 65 转义字符 反斜线后面跟一个字符或一个代码值表示 字符变量字符型变量用来存放字符常量 只能放一个字符 一个字符变量在内存中占一个字节 字符变量在内存中的存储方式字符变量存放字符的ASCII码 存储形式与整型类似 一个字符数据既可以以字符形式输出 也可以以整数形式输出 char与int数据间可进行算术运算 字符型数据和整型数据是通用的 它们既可以用字符形式输出 用 c 也可以用整数形式输出 用 d 注意 字符数据只占一个字节 它只能存放0 255范围内的整数 字符串常量定义 用双引号 括起来的字符序列注意 不能把字符串赋给字符变量 字符常量与字符串常量不同 例 charch ch A 存储 每个字符串尾自动加一个 0 作为字符串结束标志 没有字符串变量 用字符数组存放 四 各类数值型数据间的混合运算 显式转换 强制转换 一般形式 类型名 表达式 例 int x y int x y double 3 2 int 3 6说明 强制转换得到所需类型的中间变量 原变量类型不变 2 3运算符与表达式 一 算术运算符和表达式基本算术运算符 结合方向 从左向右优先级 说明 2 3 4 可为单目运算符时 右结合性两整数相除 结果为整数 要求两侧均为整型数据 自增 自减运算符 作用 使变量值加1或减1种类 前置 i i 先执行i 1或i 1 再使用i值 后置i i 先使用i值 再执行i 1或i 1 例j 3 k j j 3 k j j 3 printf d j j 3 printf d j a 3 b 5 c a b a 3 b 5 c a b k 4 j 4 k 3 j 4 4 3 c 20 a 4 c 15 a 4 说明 不能用于常量和表达式 如5 a b 结合方向 自右向左优先级 2 3 4 二 赋值运算符和赋值表达式 简单赋值运算符符号 格式 变量标识符 表达式 复合赋值运算符种类 说明 结合方向 自右向左优先级 14左侧必须是变量 不能是常量或表达式 赋值转换规则 使赋值号右边表达式值自动转换成其左边变量的类型 赋值表达式的值与变量值相等 且可嵌套 例 a b 4 c 6 a b 10 c 2 表达式值10 a 10 b 4 c 6 表达式值5 a 5 b 10 c 2 例 a 12 a a a a a 264等价于a a a a a a 三 逗号运算符和逗号表达式 形式 表达式1 表达式2 表达式n结合性 从左向右优先级 15逗号表达式的值 等于表达式n的值用途 常用于循环for语句中 例a 3 5 a 4 a 5例a 1 b 2 c 3 printf d d d a b c b c a 15 表达式值20 3 2 3 四 关系运算符和关系表达式 关系运算符种类 结合方向 自左向右优先级别 关系运算符的优先级低于算术运算符 高于赋值运算符 关系表达式的值 是逻辑值 真 或 假 用1和0表示 例intia 3 ib 2 ic 1 ie ie ia ib ic ie 0 注意区分 与 讨论 if 1 x 2 的条件为什么恒为真 五 逻辑运算符和逻辑表达式 逻辑运算符种类 逻辑运算真值表 优先级 结合方向 逻辑表达式的值 是逻辑值 真 或 假 用1和0表示 C语言中 运算量 0表示假 非0表示真运算结果 0表示假 1表示真 例5 3 2 8 4 0 c d 值为1 值为1 短路特性 逻辑表达式求解时 并非所有的逻辑运算符都被执行 只是在必须执行下一个逻辑运算符才能求出表达式的解时 才执行该运算符 例a m a b n c d 结果m 0 n 1 一 字符数据的输入输出 putchar函数 字符输出函数 格式 putchar c 参数 c为字符常量 变量或表达式 整型变量 功能 把字符c输出到显示器上返值 正常 为显示的代码值 出错 为EOF 1 2 4基本输入输出函数 getchar函数 字符输入函数 格式 getchar 功能 从输入设备输入一个字符返值 正常 返回读取的代码值 出错 为EOF 1 注意 getchar 只能接收一个字符 二 格式化输入与输出 printf函数 格式输出函数 格式 printf 格式控制串 输出表列 格式控制串 用双引号括起来的字符串 包含两种信息格式说明 由 和格式字符组成 如 d f等 将输出的数据转换为指定的格式输出 格式说明总是由 字符开始的 普通字符或转义序列 原样输出输出表 要输出的数据 可以是表达式 可以没有 多个时以 分隔 格式字符 1 d格式符 用来输出十进制整数 d 按整型数据的实际长度输出 md m为指定的输出字段的宽度 如果数据的位数小于m 则左端补以空格 若大于 则按实际位数输出 ld 输出长整型数据 对long型数据应当用 ld格式输出 也可以指定字段宽度 2 o格式符 以八进制无符号形式输出整数 3 x格式符 以十六进制无符号形式输出整数 4 u格式符 用来输出unsigned型数据 即无符号数 以十进制形式输出 5 c格式符 用来输出一个字符 6 s格式符 用来输出一个字符串 s 例如 printf s china 输出结果 china ms 输出的字符串占 列 如字符串本身长度大于m 则突破 的限制 将字符串全部输出 若串长小于m 则左补空格 ms 如果串长小于 则在 列范围内 字符串向左靠 右补空格 m ns 输出占 列 但只取字符串中左端n个字符 这n个字符输出在 列的右侧 左补空格 m ns 其中 n含义同上 n个字符输出在 列范围的左侧 右补空格 如果n 则 自动取n值 即保证n个字符正常输出 7 f格式符 用来输出实数 包括单 双精度 以小数形式输出 f 不指定字段宽度 由系统自动指定 使整数部分全部如数输出 并输出6位小数 应当注意 并非全部数字都是有效数字 单精度实数的有效位数一般为7位 nf指定输出的数据共占 列 其中有n位小数 如果数值长度小于 则左端补空格 nf与 nf基本相同 只是使输出的数值向左端靠 右端补空格 说明格式字符要用小写 X E G除外 格式字符与输出项个数应相同 按先后顺序一一对应一个格式说明以 开头 d o x u c s f e g9个格式字符之一为结束 中间可以插入附加格式字符 也称修饰符 如果想输出字符 则应该在 格式控制 字符串中用连续两个 表示 printf f 1 0 3 输出 0 333333 scanf函数 格式输入函数 格式 scanf 格式控制 地址表列 地址表列是由若干个地址组成的表列 可以是变量的地址 或字符串的首地址 常用取地址运算符 格式字符 d i o x u c s f e 说明 d d d 表示按十进制整数形式输入数据 输入数据时 在两个数据之间以一个或多个空格间隔 也可以用回车键 跳格键tab 不能用逗号作两个数据间的分隔符 下面输入不合法 3 4 5 格式说明以 开始 以一个格式字符结束 中间可以插入附加的字符 2 可以指定输入数据所占列数 系统自动按它截取所需数据 如 scanf 3d 3d a b 输入 123456 123赋给a 456赋给b scanf 3c ch 输入 abcch a 3 如果在 后有一个 附加说明符 表示跳过它指定的列数 scanf 2d 3d 2d a b 输入如下信息 1234567 a 12b 67在利用现成的一批数据时 有时不需要其中某些数据 可用此法 跳过 它们 4 输入数据时不能规定精度 scanf 7 2f a 是不合法的 注意的问题 1 scanf函数中的 格式控制 后面应当是变量地址 而不应是变量名 scanf d d a b 错scanf d d a b 对 2 如果在 格式控制 字符串中除了格式说明以外还有其他字符 则在输入数据时应输入与这些字符相同的字符 例scanf a d b d c d 输入a 12 b 24 c 36 3 在用 c 格式输入字符时 空格字符和 转义字符 都作为有效字符输入 如scanf c c c 若输入a b c 则a c1 c2 b c3 4 输入数据时 遇以下情况认为该数据结束 遇空格 TAB 或回车遇宽度结束遇非法输入 若有定义 intm n chara b c 在程序运行时输入数据56 回车 YOU 回车 则把整数5赋值给m 把整数6赋值给n 把字符Y赋值给a 把字符O赋值给b 把字符U赋值给c 以下哪一个是正确的程序段 A scanf d d c c c 56 回车 Y O U 回车 56 回车 Y 回车 O 回车 U 回车 三 常用函数 使用标准库函数 需要掌握以下两方面 库函数所在的头文件 函数的原型 1 绝对值函数fabs 数学函数所在的头文件为math h fabs函数函数原型 doublefabs doublex 使用方法 fabs x 2 平方根函数sqrt 函数原型 doublesqrt doublex 使用方法 sqrt x 第三章 控制语句 3 1if else语句 if语句是用来判定所给定的条件是否满足 根据判定的结果 真或假 决定执行给出的两种操作之一 if语句的三种形式形式一 格式 if 表达式 语句功能 首先对表达式进行求解 若表达式的值为真 则执行语句 若表达式的值为假 则该语句不起作用 而继续执行if语句下面的语句 if igrade 80 printf A 形式二 格式 if 表达式 语句1else语句2功能 首先对表达式进行求解 若表达式的值为真 则执行语句1 否则执行语句2 if igrade 60 printf PASS elseprintf NotPASS Pleaseworkhard 形式三 格式 if 表达式1 语句1elseif 表达式2 语句2elseif 表达式3 语句 elseif 表达式n 语句nelse语句n 1功能 依次判断表达式的值 当某个表达式i为真时 则执行其对应的语句i 然后跳到整个if语句之后继续执行程序 如果所有的表达式均不为真 则执行语句n 1 然后执行后续程序 if igrade 80 printf A elseif igrade 70 printf B elseif igrade 60 printf C elseprintf D 如 if a b 说明 if后面的表达式类型任意 第二 第三种形式的if语句中 每个else前有一分号 整个语句结束处有一分号 else子句不能作为语句单独使用 它必须是if语句的一部分 与if配对使用 语句可以是复合语句 if x if x 0 if x if x 0 ia 3 ib 8 if ia ib printf themaxis d ia printf theminis d ib ia 3 ib 8 if ia ib printf themaxis d ia printf theminis d ib 比较输出结果 if else配对原则 缺省 时 else总是和它上面离它最近的未配对的if配对 if语句的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套 例 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 实现if else正确配对方法 加 条件运算符一般形式 表达式1 表达式2 表达式3 max a b a b if a b max a elsemax b 功能 如果表达式1的值为非0 则表达式2的值作为条件表达式的值 否则以表达式3的值作为条件表达式的值 条件表达式常用于赋值语句中 优先级 条件运算符优先于赋值运算符 优先级别比关系运算符和算术运算符都低 结合性 自右至左 3 2switch case语句 多分支选择语句 switch 表达式 case常量表达式1 语句1case常量表达式2 语句2 case常量表达式n 语句ndefault 语句n 1 一般形式 说明 1 switch后面括弧内的 表达式 可为任何类型 2 当表达式的值与某一个case后面的常量表达式的值相等时 就执行此case后面的语句 若所有的case中的常量表达式的值都没有与表达式的值匹配的 就执行default后面的语句 3 每一个case的常量表达式的值必须互不相同 4 各个case和default的出现次序不影响执行结果 5 case常量表达式 只是起语句标号作用 并不是在该处进行条件判断 在执行switch语句时 根据switch后面表达式的值找到匹配的入口标号 就从此标号开始执行下去 不再进行判断 必须用break跳出 switch grade case A printf 85 100 n case B printf 70 84 n case C printf 60 69 n case D printf 60 n default printf error n 若grade的值等于 A 则将连续输出 85 10070 8460 69 60error switch grade case A printf 85 100 n break case B printf 70 84 n break case C printf 60 69 n break case D printf 60 n break default printf error n 6 case后可包含多个可执行语句 且不必加 7 多个case可以共用一组执行语句 如 case A case B case C printf score 60 n break 3 3循环概述 循环是在循环条件为真时计算机反复执行的一组指令 循环体 循环控制通常有两种方式 计数控制事先能够准确知道循环次数时用之用专门的循环变量来计算循环的次数 循环变量的值在每次执行完循环体各语句后递增 达到预定循环次数时则终止循环 继续执行循环结构后的语句 标记控制事先不知道准确的循环次数时用之由专门的标记变量控制循环是否继续进行 当标记变量的值达到指定的标记值时 循环终止 继续执行循环结构后的语句 循环结构两大要素 循环条件p 结束循环的条件表达式循环体A 循环执行的语句或语句组设置循环条件要特别注意确定 循环变量的初值循环变量的终值循环变量的变化规律 3 3循环概述 一般形式 3 4for语句 for 表达式1 表达式2 表达式3 循环体语句 执行流程 1 先求解表达式1 2 求解表达式2 若其值为真 非0 则执行循环体语句 然后执行第 3 步 若为假 值为0 则结束循环 转到第 5 步 3 求解表达式3 4 转回上面第 2 步骤继续执行 5 循环结束 执行for语句下面的一个语句 for语句一般应用形式 for 循环变量赋初值 循环条件 循环变量增值 循环体语句 说明 for语句中表达式1 表达式2和表达式3类型任意 都可省略 但分号 不可省 1 省略表达式1 此时应在for语句之前给循环变量赋初值 ii 1 for ii 100 ii isum isum ii 2 表达式2省略 即不判断循环条件 认为表达式2始终为真 循环无终止地进行下去 for ii 1 ii isum isum ii 3 省略表达式3 但此时应保证循环能正常结束 for ii 1 ii 100 isum isum ii ii 4 省略表达式1和表达式3 只有表达式2 即只给循环条件 for ii 100 while ii 100 isum isum ii相当于 isum isum ii ii ii 5 三个表达式都可省略 无限循环 for 语句相当于while 1 语句 6 表达式一般是关系表达式或逻辑表达式 但也可以是数值表达式或字符表达式 只要其值为非零 就执行循环体 3 5while do while语句 一般形式 while 表达式 循环体语句 执行流程 先判断表达式 当表达式的值为非0时 反复执行循环体语句 直到表达式的值为0 退出while语句 特点 先判断表达式 后执行循环体说明 循环体有可能一次也不执行循环体可为任意类型语句下列情况 退出while循环条件表达式不成立 为零 循环体内遇break return goto无限循环 while 1 循环体 一 while语句 例求 main intii isum 0 ii 1 while ii 100 isum isum ii ii printf d isum 注意 1 循环体包含一个以上的语句 应用花括弧括起来 2 循环体中应有使循环趋向于结束的语句 二 do while语句 一般形式 do循环体语句 while 表达式 执行流程 先执行循环体 然后判断表达式的值 若为非0时 反复执行循环体语句 直到表达式的值为0 退出while语句 特点 先执行循环体 后判断表达式说明 至少执行一次循环体do while可转化成while结构 3 6break语句和continue语句 break语句功能 在循环语句和switch语句中 终止并跳出循环体或开关体一般形式为 break 说明 break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中在循环语句中 break语句一般都是与if语句一起使用 continue语句功能 结束本次循环 跳过循环体中尚未执行的语句 进行下一次是否执行循环体的判断 如 while 表达式1 语句组1if 表达式2 continue 语句组2 当表达式1成立时 进入循环体执行语句组1 若表达式2成立时执行continue语句 语句组2就不再执行 而转去判定下一次循环是否执行 continue语句和break语句的区别是 continue语句只结束本次循环 而不是终止整个循环的执行 而break语句则是结束整个循环过程 不再判断执行循环的条件是否成立 说明 continue语句使用应该注意的问题 1 continue语句只能用在循环语句中 2 一般都是与if语句一起使用 第四章 数组 4 2一维数组 inta 10 它表示数组名为a 此数组有10个元素 说明 1 数组名定名规则和变量名相同 遵循标识符定名规则 2 数组名后是用方括弧括起来的常量表达式 不能用圆括弧 下面用法不对 inta 10 一维数组的定义定义方式 数据类型数组名 常量表达式 说明 3 常量表达式表示元素的个数 即数组长度 下标从0开始 4 常量表达式中可以包括常量和符号常量 不能包含变量 错误 intn 5 inta n 正确 defineN5inta N 一维数组的引用数组必须先定义 后使用只能逐个引用数组元素 不能一次引用整个数组数组元素表示形式 数组名 下标 其中 下标可以是常量或整型表达式a 0 a 5 a 7 a 2 3 例inta 6 编译时分配连续内存内存字节数 数组维数 sizeof 元素数据类型 数组名表示内存首地址 是地址常量 C语言对数组不作越界检查 使用时要注意 一维数组的初始化初始化方式 在定义数组时 为数组元素赋初值 在编译阶段使之得到初值 inta 5 1 2 3 4 5 等价于 a 0 1 a 1 2 a 2 3 a 3 4 a 4 5 说明 数组不初始化 其元素值为随机数对static数组元素不赋初值 系统会自动赋以0值 当全部数组元素赋初值时 可不指定数组长度 如inta 5 6 2 3 等价于 a 0 6 a 1 2 a 2 3 a 3 0 a 4 0 如inta 3 6 2 3 5 1 只给部分数组元素赋初值 行数 列数 元素个数 行数 列数 例inta 3 4 floatb 2 5 intc 2 3 4 inta 3 4 4 3二维数组的定义和引用二维数组的定义定义方式 数据类型数组名 常量表达式 常量表达式 二维数组元素的引用形式 数组名 下标 下标 注意 下标值应在已定义的数组大小的范围内 区分定义数组时的a 3 4 和引用元素时的a 3 4 的区别二维数组元素的初始化分行初始化 按元素排列顺序初始化 二维数组的动态赋值 双重循环 intia 3 4 intii ij for ii 0 ii 3 ii for ij 0 ij 4 ij scanf d 例charc 10 ch 3 4 可以用整型数值来存放字符型数据 intc 10 合法 但浪费存储空间 4 4字符数组字符数组的定义定义方式 字符数组的初始化逐个字符赋值 字符串及其结束标志无字符串变量 用字符数组处理字符串字符串结束标志 0 说明 0 代表ASCII码为0的字符 不是一个可以显示的字符 而是一个 空操作符 即它什么也不做 只起一个供辨别的标志 用字符串常量使字符数组初始化 字符数组的输入输出逐个字符I O c整个字符串I O s 例用 cmain charstr 5 inti for i 0 i 5 i scanf c 例用 smain charstr 5 scanf s str printf s str 用字符数组名 不要加 输入串长度 数组维数遇空格或回车结束自动加 0 用字符数组名 遇 0 结束 例main chara 5 H e l l o printf s a 例main chara Hello printf s a 结果 Hello 结果 Hello 用 s 输出时 遇 0 结束 main chara h e l 0 l o 0 printf s a 输出 hel 数组中有多个 0 时 遇第一个结束 例字符串输入举例 includemain chara 15 b 5 c 5 scanf s s s a b c printf a s nb s nc s n a b c scanf s a printf a s n a 运行情况 输入 Howareyou 输出 a Howb arec you scanf中 s输入时 遇空格或回车结束 输入 Howareyou 输出 a How 常用的字符串处理函数包含在头文件string h 字符串输出函数puts格式 puts 字符数组 功能 向显示器输出字符串 输出完 换行 说明 字符数组必须以 0 结束 字符串输入函数gets格式 gets 字符数组 功能 从键盘输入一以回车结束的字符串放入字符数组中 并自动加 0 函数值为字符数组的起始地址 说明 输入串长度应小于字符数组维数 注意 用puts和gets函数只能输入或输出一个字符串 字符串连接函数strcat格式 strcat 字符数组1 字符数组2 功能 把字符数组2连到字符数组1后面返值 返回字符数组1的首地址举例 charstr1 30 people srepublicof charstr2 china printf s strcat str1 str2 输出 people srepublicofchina说明 字符数组1必须足够大 连接前 两串均以 0 结束 连接后 串1的 0 取消 新串最后加 0 字符串拷贝函数strcpy格式 strcpy 字符数组1 字符串2 功能 将字符串2 拷贝到字符数组1中去返值 返回字符数组1的首地址举例 charstr1 10 str2 china strcpy str1 str2 说明 字符数组1必须足够大 拷贝时 0 一同拷贝 字符数组1 必须写成数组名形式 如Str1 字符串2 可以是字符数组名 也可以是一个字符串常量 strcpy str1 china 不能使用赋值语句为一个字符数组赋值例charstr1 20 str2 20 str1 Hello str2 str1 可以用strncpy函数将字符串2中前面若干个字符复制到字符数组1中去 例如 strncpy Str1 Str2 2 字符串比较函数strcmp格式 strcmp 字符串1 字符串2 功能 比较两个字符串举例 strcmp Str1 Str2 strcmp computer compare 比较规则 对两串从左向右逐个字符比较 ASCII码 直到遇到不同字符或 0 为止 英文字母的比较规律 在英文字典中位置在后面的为 大 小写字母比大写字母 大 返值 返回int型整数 a 若字符串1字符串2 返回正整数c 若字符串1 字符串2 返回零说明 字符串比较不能用 必须用strcmp if Str1 Str2 printf yes 错if strcmp Str1 Str2 0 printf yes 字符串长度函数strlen格式 strlen 字符数组 功能 计算字符串长度返值 返回字符串实际长度 不包括 0 在内 例对于以下字符串 strlen s 的值为 1 chars 10 A 0 B C 0 D 2 chars t v 0will n 3 chars x69 082 n 4 charstr 10 china 答案 1315 字符串小写函数strlwr格式 strlwr 字符串 功能 将字符串中大写字母换成小写字母 字符串大写函数strupr格式 strupr 字符串 功能 将字符串中小写字母换成大写字母 例比较inta 2 3 5 6 7 8 与inta 2 3 5 6 7 8 例inta 10 floatf 2 1 2 2 2 例inta 5 a 2 4 6 8 10 例charstr Hello charstr H e l l o 给出如下定义 charstr1 Hello charstr2 H e l l o 则正确的叙述为 A 数组str1和数组str2等价B 数组str1和数组str2的长度相同C 数组str1的长度大于数组str2的长度D 数组str1长度小于数组str2的长度 第五章 函数 5 1函数的定义 C是模块化程序设计语言 C是函数式语言必须有且只能有一个名为main的主函数C程序的执行总是从main函数开始 在main中结束函数不能嵌套定义 可以嵌套调用 函数定义一般格式 合法标识符 函数返回值类型缺省int型无返回值void 函数体 例有参函数intmax intx inty intz z x y x y return z 函数的返回语句形式 return 表达式 或return表达式 功能 使程序控制从被调用函数返回到调用函数中 同时把返值带给调用函数说明 函数中可有多个return语句若无return语句 遇 时 自动返回调用函数若函数类型与return语句中表达式值的类型不一致 按前者为准 自动转换 函数调用转换void型函数 例无返回值函数voidswap intx inty inttemp temp x x y y temp 5 2函数的运用一 函数的调用调用形式函数名 实参表 说明 实参与形参个数相等 类型一致 按顺序一一对应 调用方式函数语句 例printstar printf Hello World n 函数表达式 例m max a b 2 函数参数 例printf d max a b m max a max b c 函数说明对被调用函数要求 必须是已存在的函数库函数 include用户自定义函数 函数类型声明函数声明一般形式 函数类型函数名 形参类型 形参名 作用 告诉编译系统函数类型 参数个数及类型 以便检验 函数定义与函数声明不同函数声明位置 程序的数据说明部分 函数内或外 下列情况下 可不作函数声明若函数返值是char或int型 系统自动按int型处理被调用函数定义出现在主调函数之前 例函数说明举例 main floatadd float float functiondeclaration floata b c scanf f f 二 函数参数及其传递方式形参与实参形式参数 定义函数时函数名后面括号中的变量名实际参数 调用函数时函数名后面括号中的表达式 例比较两个数并输出大者 main inta b c scanf d d 说明 实参必须有确定的值形参必须指定类型形参与实参类型一致 个数相同若形参与实参类型不一致 自动按形参类型转换 函数调用转换形参在函数被调用前不占内存 函数调用时为形参分配内存 调用结束 内存释放 二 函数参数及其传递方式形参与实参形式参数 定义函数时函数名后面括号中的变量名实际参数 调用函数时函数名后面括号中的表达式 参数传递方式值传递方式方式 函数调用时 为形参分配单元 并将实参的值复制到形参中 调用结束 形参单元被释放 实参单元仍保留并维持原值特点 形参与实参占用不同的内存单元实参可以是常量 变量或表达式 形参必须指定类型 形参与实参的类型应相同或赋值兼容 个数一致 一一对应 单向传递 例交换两个数 includevoidswap intix intiy voidmain intia 7 ib 11 printf ia d tib d n ia ib printf swapped n swap ia ib printf ia d tib d n ia ib voidswap intix intiy intitemp itemp ix ix iy iy itemp 地址传递方式 函数调用时 将数据的存储地址作为参数传递给形参特点 形参与实参占用同样的存储单元 双向 传递实参和形参必须是地址常量或变量 数组名作函数参数地址传递在主调函数与被调函数分别定义数组 且类型应一致形参数组大小 多维数组第一维 可不指定形参数组名是地址变量 例数组元素与数组名作函数参数比较 includevoidswap2 intx inty intz z x x y y z main inta 2 1 2 swap2 a 0 a 1 printf a 0 d na 1 d n a 0 a 1 值传递 includevoidswap2 intx intz z x 0 x 0 x 1 x 1 z main inta 2 1 2 swap2 a printf a 0 d na 1 d n a 0 a 1 地址传递 例数组元素与数组名作函数参数比较 5 3变量的作用域与存储类别一 变量的作用域作用域 变量在某区域内有效 局部变量与全局变量局部变量定义 在一个函数内部定义的变量是内部变量 它只在本函数范围内有效 floatf1 inta 函数f1 intb c a b c有效 说明 main中定义的变量只在main中有效不同函数中同名变量 占不同内存单元形参属于局部变量可定义在复合语句中有效的变量 f inta intb intc c a b 变量c只在此复合语句内起作用 全局变量定义 在函数外部定义的变量称作外部变量 外部变量属于全局变量 全局变量的作用域是从定义变量的位置开始到本源文件结束 说明 在一个函数内部 即可以使用本函数定义的局部变量 也可以使用在此函数前定义的全局变量 若外部变量与局部变量同名 则外部变量被屏蔽 变量的存储类型auto 自动型register 寄存器型static 静态型extern 外部型变量定义格式 存储类型 数据类型变量表 如 intsum autointa b c registerinti staticfloatx y 二 变量的存储类别 auto型 自动变量型 变量值存放在主存储器的动态存储区 堆栈方式 优点 同一内存区可被不同变量反复使用 函数中的形参和在函数中定义的变量 包括在复合语句中定义的变量 属于此类 关键字auto可以省略 static型 静态变量型 变量值存放在主存储器的静态存储区 程序执行开始至结束 始终占用该存储空间 说明 静态局部变量在静态存储区内分配存储单元 在程序整个运行期间都不释放 自动变量占动态存储区空间函数调用结束后即释放 静态局部变量在编译时赋初值 程序运行时已有初值 以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值 自动变量赋初值是在函数调用时进行 每调用一次函数重新给一次初值 局部静态变量如果不对其进行初始化 那么系统自动对其赋值0 对数值型变量 或空字符 对字符变量 自动变量不初始化则它的值是一个不确定的值 静态局部变量在函数调用结束后仍然存在 但其他函数是不能引用它的 register型 寄存器型 变量值存放在运算器的寄存器中 存取速度快 只有局部自动变量和形式参数可以作为寄存器变量 一般只允许2 3个 且限于char型和int型 通常用于循环变量 在微机的TurboC中实际上自动转为auto型 extern型 外部型 外部变量 全局变量 分配在静态存储区 有时需要用extern来声明外部变量 以扩展外部变量的作用城 5 4函数的嵌套与递归调用嵌套调用C规定 函数定义不可嵌套 但可以嵌套调用函数 常用算法 累加和 求奇数和 偶数和 正数之和 能被某个数整除 或不能整除 的数之和等等 给出一个数列 求前n项和联乘积 求阶乘求最大值 最小值 两个数或三个数 数的交换数的逆序输出分段函数的计算 多分支应用 求面积 周长 实数精度的控制 保留两位小数 数据个数的统计及输出格式的控制对于一维数组 求最大值 最小值及其下标 最大值和最小值交换 求和 求平均 统计正数 负数个数等 字符的判断 大写 小写 数字及其他 素数的判断排序 冒泡 选择 查找 第六章 指针 指针与指针变量指针 一个变量的地址指针变量 专门存放变量地址的变量叫指针变量 2000 指针 指针变量 变量的内容 变量的地址 与 运算符含义 含义 取变量的地址单目运算符优先级 2结合性 自右向左 含义 取指针所指向变量的内容单目运算符优先级 2结合性 自右向左 两者关系 互为逆运算理解 i pointer 指针变量 它的内容是地址量 i pointer 指针的目标变量 它的内容是数据 i pointer 指针变量占用内存的地址 i pointer i i pointer i i pointer i i pointer i i pointer i i pointer i 6 2指针变量指针变量与其所指向的变量之间的关系 指针变量的定义一般形式 存储类型 数据类型 指针名 合法标识符 指针变量本身的存储类型 指针的目标变量的数据类型 表示定义指针变量不是 运算符 例int p1 p2 float q staticchar name 注意 1 int p1 p2 与int p1 p2 2 指针变量名是p1 p2 不是 p1 p23 指针变量只能指向定义时所规定类型的变量4 指针变量定义后 变量值不确定 应用前必须先赋值 变量声明时 p表示定义了一个用来存放变量地址而非数据 数值 字符等 的指针变量 程序中引用时 p表示取指针变量p所指变量的值 指针变量的初始化一般形式 存储类型 数据类型 指针名 初始地址值 例inti int p 例inti int p 指针变量必须先赋值 再使用 零指针零指针 空指针 defineNULL0int p NULL 6 3指针与数组指向数组元素的指针变量 例intarray 10 int p p 数组名是表示数组首地址的地址常量 指针的运算指针变量的赋值运算p 指针变量p2值 p1 不能把一个整数 p 也不能把p的值 整型变量 指针的算术运算 加 减p i p i d i为整型数 d为p指向的变量所占字节数 p p p i p i p i p i等若p1与p2指向同一数组 p1 p2 两指针

温馨提示

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

评论

0/150

提交评论