全国计算机等级考试二级C语言教程64总复习.ppt

上传人:xt****7 文档编号:5210306 上传时间:2020-01-23 格式:PPT 页数:71 大小:605.36KB
返回 下载 相关 举报
全国计算机等级考试二级C语言教程64总复习.ppt_第1页
第1页 / 共71页
全国计算机等级考试二级C语言教程64总复习.ppt_第2页
第2页 / 共71页
全国计算机等级考试二级C语言教程64总复习.ppt_第3页
第3页 / 共71页
点击查看更多>>
资源描述
C语言总复习 64学时 以考试难度为限 一 C语言的数据表示 1 1常量和变量1 2表达式1 3数据类型简单类型 结构类型 指针类型1 4输入 输出 1 1常量和变量 1 常量常量是在程序执行中 值不发生改变的数据 其值预先决定 之后不变 有不同的数据类型 1 常数 有的称直接常量 页面常量 例如的 整数 5 3 017 八进制 0 x1f 16进制 实数 浮点数 3 14 1 2E 3 1E10单个字符 A 占一个字节 转义字符 非法 77 八进制ASCII码63 78 非法 x3f 十六进制ASCII码63 x3g 非法字符串 A 后面有 0 占两个字节 E3 2E3 0不合法 不是整型量 占一个字节 2 符号常量给常量起标识符名字 C语言的符号常量 用宏定义 definePI3 14159265好处 提高程序易读性 方便修改常量的值 注意 1 一般用大写字母 2 defineM3不是C语句 后面没有 3 可以做M 1 不能做M 3 地址常量当数组在定义时 其变量名为其首地址 是地址常量 inta 10 可以做a 1 不能做a 1 1常量和变量 2 变量用各种操作来改变值数据 从 名 和 值 两个角度认识变量 1 变量名每个变量 要在使用前定义变量的名字 遵循标识符命名规则 只能用字母 数字和下划线组成 不能以数字开头 不能用保留字 int printf main 变量定义就是申请数据的存储空间 登记数据的各种存储特性 例如 intm 2个字节 215 215 1 32768 32767 longn 4个字节 231 231 1charch 1个字节0 255floatx 4个字节 3 4 10 38 1038 doubley 8个字节 1 7 10 308 10308 可以用sizeof获得字长sizeof char 1sizeof int 2sizeof double 8 2 变量的值变量值就是由变量名所指定空间上的存储数据内容 即变量的当前值 数据内容用语言的操作语句来改变 赋值语句 键盘输入语句 charchx intm 变量的定义 chx A m 12 3 赋值语句 scanf d 键盘输入语句 在程序运行时 将数据存入制定内存空间 变量初始化 定义变量时同时确定变量初值 例如 charchy a intweight 2 1 2C语言的表达式 1 算术表达式2 关系表达式3 逻辑表达式4 赋值表达式5 逗号表达式6 条件表达式7 其他表达式 C语言的表达式 使用规定的运算符 将常量 变量 函数 调用 连结的一个有意义的式子 1 算术表达式 用算术运算符来表示对数据的算术运算求值过程 算术运算符 2 3结果是0 2 3结果是2 注意不同类型运算问题 2 关系表达式 关系运算符 0 sin x 0 5 a b c d 注意语法合理与数学逻辑错误问题 分析 10 a 15a 9是假 10 a 15 10 a假0 0 15真 所以要写成10 a a 15 3 逻辑表达式 用逻辑表达式来表示对数据的逻辑关系判断 运算结果是逻辑值 真 1或者 假 0 C逻辑运算符包括 a c均按非0 即真 处理 逻辑运算规律 在 与 表达式中 若 的左端为假 则不再计算另一端 该表达式值肯定为0 假 在 或 表达式中 若 的左端为真 则不再计算另一端 表达式的值必定为1 真 inta 5 b 1k a0k b 假 后面不算了 k 0 b 1 判断闰年的条件是 能被4整除但不能被100整除 或能被400整除 x 4 0 x 100 0 水仙花数是指一个三位正整数 其各位数字的立方和等于该数本身 k 100 m 10 n k k k m m m n n n 三角形的基本条件 a b c c b a c a b 4 赋值表达式 单目 单目 级别仅高于逗号表达式 右结合 inta 3 c 2 ba b c n m 2相当于n n m 2 k i 先k i 再i i 1k i 先i i 1 再k i c赋值给b b 2b赋值给a a 2 5 条件表达式e1 e2 e3若e1为真 表达式的值为e2 否则为e3 a b a b 5 1 4Ta 4 aa 3表达式的值为3 a 5 b 4 4 1 5Fb 6 b b 7表达式的值为6 a 4 b 5 条件表达式的值的类型为e2 e3二者中类型较高者 如果y 5 y 3 1 0 2其值为2 0 6 逗号表达式表达式的值等于最后一个表达式的值 运算等级最低 a 5 b 2 c 3a 7 b c a a 7 b c a a 12 a 5 7 强制类型转换表达式 单目 intm sqrt float m 并没有改变m的类型和数值 理解记忆运算符表 右结合单目运算符赋值运算符 1 3数据类型 数据类型 在高级语言的数据表示机制中 数据类型 datatyPe 是个核心概念 简单类型 构造类型 指针类型 整型 实型 字符型 数组 结构体 共用体 数值型 枚举型 空类型 1 3数据类型 1 整型 输入 输出格式 d 类型名字节数数值范围int2 32768 32767short2 32768 32767long4 2147483648 2147483647还有无符号整型 输入 输出格式 u Unsigned int 20 65535Unsignedshort20 65535Unsignedlong40 4294967295 1 简单类型 2 实型实型 float 数据的值集是实数集的一个有限子集 3 4e38 3 4e 39 3 4E 38 3 4E38 1 简单类型 类型名字节数输入 输出格式有效数字位float4 f7doubule8 lf16longdoubule16 lf19 不要以为是长整型 E38非法 3 字符型 输入 输出格式 c ASCII码 一个字符占1字节 charca ca 注意转义字符 的使用 4 字符串 输入 输出格式 s 所谓 字符串 是指若干有效字符的序列 语言字符串可以包括字母 数字 专用字符 转义字符等 字符串常量 使用双引号 China BASIC a b c Li Li 39 4 d n 解放军 字符型的一维数组 相当于字符串变量 charst 8 str 10 strcpy st 12345 strcpy str st 不能st 12345 str st 2 结构类型 结构 一般可以称为数据元素 在不同的结构类型中 数据元素会有特定的名称 结构类型的数据由更加基本的成分组成 这些成分称为 数据项 结构的子成员 1 3数据类型 1 数组A 0 A 1 A 2 A 3 A 4 A 5 A 6 A 7 1020304050607080一个数组 array 是由相同类型的若干数组元素构成的有限序列 C语言的数定义 intB 8 A 8 charC 10 2 结构类型 例日期类型的定义 2 结构体 C语言中实现 structDate intmonth 月 intday 日 intyear 年 structDatemyd 12 16 1978 系统分配给它的内存是各成员所需内存量的总和 本例是6 1 指针 变量名的在内存中的存储地址 2 指针变量inti 12 p P 把存放变量i的地址的变量p称作指针变量 指针变量的存放内容是数据的地址 3 指针类型 3 指针引用变量指针变量可以指向各种不同的数据类型 因此指针变量也要有不同的指针类型 如 intm p floatx q inta rm 12 p 注意 是否用 1 4输入 输出 输出 printf d 6d ld c s f 10 2f lf 20 8lf n 3 printf n d d d n n n 计算从右到左 输出从左到右 s是输出以指定首地址到第一个 0或空格之间的字符串 chara abcdefg p a printf s p bcd 5 5 3 1 4输入 输出 输入 scanf d ld对应intlong c s对应charcharstr f lf对应flaotdouble 常见错误inta b chard e 20 scanf d f n 1 表达式语句 2 流程控制语句 3 复合语句 C语言语句 指令语句 非指令语句 数据定义语句floatx intm 编译预处理 宏定义 definePI3 14159 文件包含处理 include 二 C语言的程序结构与相关语句 表达式语句 1 表达式语句的组成 由一个表达式后接一个分号组成的 i i 1 是表达式 没有构成语句 i i 1 是语句 x y 是合法语句 但没有实际意义 表达式语句的分类 赋值语句 i 1 c getchar 函数调用语句 printf n Hello world 空语句 其形式为 逗号表达式语句 a b 完成一定的控制功能 9种控制语句 判断语句条件判断语句if else 多分支选择语句switch case循环语句循环次数控制语句for 先判断后执行循环控制语句while 先执行后判断循环控制语句do while 转移控制语句直接转移语句goto终止语句break 用在循环结构 swicth 跳转语句continue 仅用在循环结构 返回语句return 流程控制语句 复合语句 一组语句括在一对花括号之中 称复合语句 c getchar putchar c 注意 一个复合语句的后花括号之后不应再写分号 在语法上是一个整体 相当于一个语句 凡是能够使用简单语句的地方 都可以使用复合语句 一个复合语句中又可以包含另一个或多个复合语句 二 C语言的程序结构与相关语句 程序的三种基本结构 顺序结构选择结构if else switch case循环结构for while do while 选择结构 单分支结构if a b printf yes 双分支结构if a b printf yes elseprintf no 多分支结构switch case 多分支选择语句 switch 表达式 case常量表达式1 语句序列1 break case常量表达式2 语句序列2 break case常量表达式n 语句序列n break default 语句序列n 1 根据 表达式 的值从上至下去寻找与表达式的值相匹配的 case常量表达式 执行一个分支后 再执行下一个分支 直到break结束 然后执行switch结构后面的程序 找不到匹配的入口标号时 执行 语句序列n 1 然后结束 顺序向下执行程序 main inta 1 b 1 switch a case1 switch b case0 printf break case1 printf break case2 printf case2 printf case3 printf break case4 printf a 1case1 swtch 1 b 1printf break跳出switch b 结构进入switch a 结构case2 printf case2 printf break跳出switch a 结构 for while do while三种结构 循环变量初始化 继续循环条件 改变循环变量是不可缺少的三个环节 for常用于循环次数已知的问题中 括号中的两个 不可省 while与do while常用于循环次数未知的问题中 注意 在for和while语句之后一般没有分号有分号表示循环体就是分号之前的内容 空循环体 while i 100 i for i 0 i 100 i printf d i if swtich while for后面的语句只能是一句 因此 多句时别忘了 在while e 和for e 中的e是循环继续的条件 不能写其它条件 如果缺省 就是死循环 在if e while e 和for e 中e的值是逻辑值 0或非0 e一般是关系表达式 逻辑表达式或变量 if x 1 if x 1 main inti 1 do i while i printf d i A 1B 0C 1D 陷入死循环 i 1i i 0 while i 终止循环i i 1 输出i 1i i 0 break coutinue break只能用于switch和循环语句中 作用提前终止本层次switch和循环 coutinue是跳过循环体内尚未执行的语句 接着执行下次循环 常用的循环算法 求素数 水仙花数 最小公倍数 最大公约数 分解多位数的数字 累加 累乘 分解质因数等 各种有规律的图案 while m k m 10 求最低位的数字 m m 10 除去最低位的数字 分解多位数的数字 判断素数 main inti x flag 0 scanf d 求阶乘x longfacto intx longy for y 1 x 0 x y x return y main longy for y 1 x 0 x y x printf ld y main intm n longcmn facto scanf d d 求C m n m n m n 数组的定义类型标识符数组名 常量表达式 错误的定义是 或intn intn 10 scanf d 定义inta 5 时 a 0 a 1 随机数 只有inta 5 3 后 后面几项自动赋0 三数组 数组的初始化 合法 inta 1 2 3 4 5 inti 3 1 2 3 4 5 6 inta 5 1 2 3 chara 4 boy chara 3 b o y 不合法 inta 5 2 4 5 inti 2 1 2 3 4 5 6 inta 5 chara 4 boy 分别用三种方法 数组元素下标法 数组名地址法 指针变量法 访问数组元素 includevoidmain inta 5 1 3 5 7 9 i p for i 0 i 5 i printf d a i 下标法 printf n for i 0 i 5 i printf d a i 地址法 printf n for p a p a 5 p printf d p 指针变量 数组的操作往往用循环结构 数值数组 defineM10inta M for i 0 i M i 字符数组 defineM10chara M for i 0 a i 0 i 数值数组倒序 defineM10main inti j a M for i 0 i M i scanf d a i for i 0 j M i j i i 交换a i a j 字符数组倒序main inti j chara 50 gets a for i 0 j strlen a i j i i 交换a i a j 用函数实现倒序 数值数组voidinv intx intn defineM10main inti j a M for i 0 i M i scanf d a i inv a M for i 0 i M i printf d a i 字符数组voidinv charx main inti j chara 50 gets a inv a puts a 多一个参数 表示元素个数 可以整体输入 输出 必须单个输入 输出 数值数组voidinv intx intm inti j k j m for i 0 i j i i k x i x i x j x j k 字符数组voidinv intx inti j k j strlen x for i 0 i j i i k x i x i x j x j k main inti j s 0 a 3 3 for i 0 i 3 i for j 0 j 3 j scanf d 主对角线i j副对角线i j 2 累加 积 defineM10main inti a M s 0 for i 0 i M i scanf d defineM10main inti a M s 1 for i 0 i M i scanf d 求最大 小 值 defineM30main inti k k i a M for i 0 i M i scanf d 最小值if k a i 最大值 字符数组 charstr 50 inti for i 0 str i 0 i 构造新的字符数组 删除 插入 复制 连接 倒序 1 用和不用字符串函数实现上述功能 2 用指针实现 3 必须注意最后一项一定是 str i 0 或 p 0 二维字符数组 二维数组在内存中的排列顺序是 按行优先存放 二维数组a m n 可以视为由n个一维数组a m 组成的 二维字符数组中m由其中最长的字符串决定 charstu 5 6 Tom Anne Mary Peter 其中stu 0 Tom stu 1 Anne 字符串函数 要用 include字符串拷贝函数strcpy字符串连接函数strcat字符串比较函数strcmp测字符串长度函数strlen函数strlen的值为 0 之前的全部字符个数 它与数组长度不是一个概念 chars 6 H o w 0 o k strlen s 3 字符串函数的应用 字符串赋值字符串比较 s1 s2 strcpy s1 s2 s1 s2 strcmp s1 s2 0 s1 s2 strcmp s1 s2 0 s1 s2 strcmp s1 s2 0 一函数定义的形式 存储类型 数据类型函数名 形式参数表 变量数据定义语句序列 可执行语句序列 intfun intx inty intz z x y returnz 函数体 四函数 非void型intfun intx inty main inta b scanf d d 作为框架记住 void型voidfun intx inty main inta b scanf d d 填main charfun intx inty intz z x y returnz main inta b 函数实参 charc 函数返回值 scanf d d a b 实参赋值 c fun a b 调用函数 printf c c 输出结果 注意变量数据类型的对应int dlong ldfloat fdouble lfchar c或 s 递归调用的概念在 语言中 一个函数直接或间接地调用自身 便构成了函数的递归调用 前者为直接递归调用 后者称间接递归调用 计算n 的函数rfact longfac intn longp if n 0 n 1 p 1 elsep n fac n 1 自己调自己 returnp voidmain printf ld fac 5 记住递归调用的框架 数组名作函数实参 voidfun inta intn main intarr 10 i for i 0 i 10 i scanf d main inti a 2 for i 1 i 5 i f i printf d n a f j intj staticinta 100 autok 1 k printf d d d d n a k j a k j a 10 函数调用 函数定义 函数内定义 值不保留 运行结果 100 2 1 103110 2 2 114120 2 3 125130 2 4 136140 2 5 1472 两个函数变量同名 互不影响 静态变量 五指针 1 指针 某变量的地址值称为该变量的指针 2 指针变量 指针变量是存放普通变量地址的变量 指针变量指向这个普通变量 1112 ab 地址10101012 指针变量整型变量 指针变量的定义 数据类型 指针变量名1 double pd d1 d2 pd为指向double型变量的指针 char pc c1 c2 pc为指向char型变量的指针 float pf f1 f2 pf为指向float型变量的指针 定义指针变量必须在变量名前加指针说明符 指针变量名本身不含 号 定义指针变量后 系统为这个指针变量也分配一个存储单元 这个存贮单元一般都占有固定的字节 如16位计算机是2个字节 该存贮单元用于存放普通变量的地址 指针变量的初始化 char str abcdef charstr abcdef pf str floatf1 3 14 pf 指针变量的引用 floata b P a 1 23 P 结果为 1 23 1 23 1 23 1010 1 23 p p 5 与 p 5 char p 5 是一个有5个元素的数组 数组元素的数据类型是指向int型的指针型char p 5 是指向一个有5个元素的一维数组 结构体 structdate是一个类型 可以用它定义变量structdatebirthday birthday是一个结构体类型的变量 structdate intyear 年 intmonth 月 intday 日 year month day 结构变量的各个成员分量在内存中占用连续存储区域 所占内存大小为结构中每个成员的占用内存的长度之和 结构变量today占用内存的情况如图所示 结构变量占用内存情况 结构体变量的初始化 按照成员的顺序和类型对成员初始化 structdatebirthday 1984 10 20 结构体变量的引用 一般形式 结构体变量名 成员名成员运算符 具有最高的优先级 自左向右结合 printf 4d 02d 02d birthday year birthday month birthday day 指向结构体的指针 指向结构体的指针定义 使用与其他基本类型指针类似可以使用指向运算符 引用指针所指向的结构体的成员指向运算符 结构体指针 成员名具有最高的优先级 自左向右结合若structstudentstu p stu 则stu num p num p num等效 考试 单选填空25 1 25 读程序写结果25 5 5 改错20 2 10 程序填空20 2 10 写程序10
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!