C语言基础.pptx_第1页
C语言基础.pptx_第2页
C语言基础.pptx_第3页
C语言基础.pptx_第4页
C语言基础.pptx_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计教程 任课教师 王娟勤教师email wangjq 信息工程学院基础部 第2章C语言基础 2 0预备知识计算机中数的表示及进制转换数码 基与权数码 表示数的符号基 数码的个数权 每一位所具有的值数制 十进制 4956 4 10 9 10 5 10 6 10 二进制 1011 1 2 0 2 1 2 1 2 十六进制 81AE 8 16 1 16 10 16 14 16 八进制 4275 4 8 2 8 7 8 5 8 各种进制之间的转换二进制 八进制 十六进制转换成十进制方法 按权相加 各种进制之间的转换 整数 二进制 八进制 十六进制转换成十进制方法 按权相加 十进制转换成二进制 八进制 十六进制 方法 连续除以基 从低到高记录余数 直至商为0 二进制与八进制之间的转换二进制转换成八进制 从右向左 每3位一组 不足3位左补0 转换成八进制八进制转换成二进制 用3位二进制数代替每一位八进制数 例 1101001 2 001 101 001 2 151 8 例 246 8 010 100 110 2 10100110 2 000 0001 1010 2011 3100 4101 5110 6111 7 二进制与十六进制之间的转换二进制转换成十六进制 从右向左 每4位一组 不足4位左补0 转换成十六进制十六进制转换成二进制 用4位二进制数代替每一位十六进制数 例 11010101111101 2 0011 0101 0111 1101 2 357D 16 例 4B9E 16 0100 1011 1001 1110 2 100101110011110 2 0000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 F 字节和位内存以字节为单元组成每个字节有一个地址一个字节一般由8个二进制位组成每个二进位的值是0或1 数值的表示方法 原码 反码和补码原码 最高位为符号位 其余各位为数值本身的绝对值反码 正数 反码与原码相同负数 符号位为1 其余位对原码取反补码 正数 原码 反码 补码相同负数 最高位为1 其余位为原码取反 再对整个数加1 用一字节表示数 2 1数据与C语言的数据类型 数据是对客观事物的符号表示 是所有能被输入到计算机中 且能被计算机处理的符号 数字 字符等 的集合 它是计算机操作对象的总称 在程序中对各种数据进行处理之前都要对其类型预先进行说明 一是便于为数据分配相应的存储空间 二是说明了程序处理数据时应采用何种运算方法 操作 数组类型 结构体类型 struct 共用体类型 union 实型 单精度型 float 双精度型 double 2 1数据与C语言的数据类型数据类型总表 数据类型决定 1 数据占内存字节数2 数据取值范围3 其上可进行的操作 字符型 char 整型 short int long unsigned 基本类型 数据类型 构造类型 指针类型 空类型 void 枚举类型 enum 基本数据类型 整型 字符型 实型 有 无 说明 数据类型所占字节数随编译系统不同而不完全相同 如 TurboC中int占2字节 CodeBlocks和VC中int占4字节 voidmain intnum total num 15 total num 8 printf d total definePRICE8voidmain intnum total num 15 total num PRICE printf d total 用一个c程序 说明 一般用大写字母是宏定义预处理命令 不是C语句 如 definePRICE30 常量定义 程序运行时其值不能改变的量 即常数 分类 符号常量 用标识符代表常量定义格式 define符号常量常量 definePRICE30 includevoidmain intnum total num 10 total num PRICE printf total d n total 运行结果 total 300 2 2常量及其类型 常量定义 程序运行时其值不能改变的量 即常数 分类 符号常量 用标识符代表常量定义格式 define符号常量常量定义格式 const类型符号常量 常量 例如 constfloatPI 3 1425926 定义格式 const类型符号常量 常量直接常量 整型常量实型常量字符常量字符串常量 常量定义 程序运行时其值不能改变的量 即常数 分类 符号常量 用标识符代表常量定义格式 define符号常量常量 整型常量 整常数 三种形式 十进制整数 由数字0 9和正负号表示 如123 456 0八进制整数 由数字0开头 后跟数字0 7表示 如0123 011十六进制整数 由0 x开头 后跟0 9 a f A F表示 如0 x123 0Xff 例12与12L 例30000为int型65536为int型 整型常量的类型默认为int类型在整常量后加字母l或L 认为它是longint型常量 问题 0123 100 x123 100Xff 10 实型常量 实数或浮点数 表示形式 十进制数形式 必须有小数点 如0 123 123 123 0 0 0 123 指数形式 e或E之前必须有数字 指数必须为整数 如12 3e3 123E2 1 23e4 e 5 1 2E 3 5 实型常量的类型默认double型在实型常量后加字母f或F 认为它是float型 aaa 22 字符常量定义 用单引号括起来的单个普通字符或转义字符 字符常量的值 该字符的ASCII码值 如 101 A 012 n 376 x61 a 60 0 483 例 A 101 x41 65 如 A 65 a 97 0 48 n 10 如 a A n 101 转义字符 反斜线后面跟一个字符或一个代码值表示 例转义字符举例main printf 101 x42C n printf Isay Howareyou n printf CProgram n printf Turbo C 运行结果 屏幕显示 ABCIsay Howareyou CProgram Turbo C 例main printf Y b n 运行结果 屏幕显示 打印机输出 转义字符及其含义 字符常量与字符串常量不同 字符串常量定义 用双引号 括起来的字符序列存储 每个字符串尾自动加一个 0 作为字符串结束标志 2 3变量定义及初始化标识符定义 用来标识变量 常量 数组 函数等的字符序列组成 1 标识符只能由字母 数字和下划线组成 且第一个字符必需为字母或下划线 2 C语言中大小写字母是两个不同的字符 3 关键字 特殊字不能做变量名及一些函数 数组名 长度 最长32个字符命名原则 见名知意不宜混淆如l与I o与0 例 判断下列标识符号合法性sumSumM D JohndayDate3daysstudent name 33lotus 1 2 3chara b above 123 M D John 3days 33 char 123 a b 变量概念 其值可以改变的量变量名与变量值变量定义的一般格式 数据类型变量1 变量2 变量n 变量初始化 定义时赋初值 例 inta b c floatdata 决定分配字节数和数的表示范围 合法标识符 例 inta 2 b c 4 floatdata 3 67 charch A intx 1 y 1 z 1 intx y z 1 变量的使用 先定义 后使用 例1intstudent stadent 19 Undefinedsymbol statent infunctionmain 例2floata b c c a b Illegaluseoffloatingpointinfunctionmain 变量定义位置 一般放在函数开头 整型变量占字节数随系统不同而不同short int long可用sizeof 类型标识符 测量 实型变量float 占4字节 可存储7位有效数字double 占8字节 可存储15 16位有效数字 字符型变量字符变量存放字符ASCII码char与int数据间可进行算术运算 例floata a 111111 111 a 111111 1 doubleb b 111111 111 b 111111 111 例a D a 68 x A 5 x 65 5 s G s 33 71 没有字符串变量 用字符数组存放 例 definePRICE12 5main intnum 3 floattotal charch1 ch2 D total num PRICE ch1 ch2 A a printf total f ch1 c n total ch1 运行结果 total 37 500000 ch1 d 2 4运算符 学习运算符应注意 运算符功能与运算量关系要求运算量个数要求运算量类型运算符优先级别结合方向结果的类型 2 4 1算术运算符和表达式基本算术运算符 结合方向 从左向右优先级 2 3 4 说明 为单目运算符时 右结合性两整数相除 结果为整数 要求两侧均为整型数据 例5 2 5 2 0 例5 2 5 2 1 10 5 1 5 5 2 例5 2 2 5 2 0 2 5 例5 2 1 5 2 1 取被除数符号 1 10 15 1 05 5 2 自增 自减运算符 作用 使变量值加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 自增 自减运算符 作用 使变量值加1或减1种类 前置 i i 先执行i 1或i 1 再使用i值 后置i i 先使用i值 再执行i 1或i 1 说明 不能用于常量和表达式 如5 a b 结合方向 自右向左优先级 2 3 4 例 i i i 3 printf d i 3 例 i i 3 printf d i 例 算术表达式计算优先级和结合性规则 includevoidmain inta 3 b 5 c 15 d 2 printf d n 6 a b c d printf d n a a printf d n a 不同类型数据间的转换隐式转换 自动类型转换 什么情况下发生运算转换 不同类型数据混合运算时赋值转换 把一个值赋给与其类型不同的变量时输出转换 输出时转换成指定的输出格式函数调用转换 实参与形参类型不一致时转换运算转换规则 不同类型数据运算时先自动转换成同一类型 例 算术表达式计算自动类型转换规则 includevoidmain charch a inti 5 unsignedintj 6 longk 12 floatf 3 0 doubled 6 0 printf lf n ch i i k j k f d f i 38 500000 显式转换 强制转换 一般形式 类型名 表达式 例 int x y int x y double 3 2 int 3 6说明 强制转换得到所需类型的中间变量 原变量类型不变 例main floatx inti x 3 6 i int x printf x f i d x i 结果 x 3 600000 i 3 2 4 2赋值运算符和表达式简单赋值运算符符号 格式 变量标识符 表达式作用 将一个数据 常量或表达式 赋给一个变量 复合赋值运算符种类 含义 exp1op exp2 exp1 exp1opexp2 例a 3 d func c d 2 说明 结合方向 自右向左优先级 14左侧必须是变量 不能是常量或表达式 赋值转换规则 使赋值号右边表达式值自动转换成其左边变量的类型 例3 x 2 y a b 3 例floatf inti i 10 f i 则f 10 0 例inti i 2 56 结果i 2 例 a b c 5a b 5 a 5 c 6 a b 4 c 6 a b 10 c 2 表达式值为5 a b c值为5 b 5 a 5 表达式值11 c 6 a 11 表达式值10 a 10 b 4 c 6 表达式值5 a 5 b 10 c 2 赋值表达式的值与变量值相等 且可嵌套 说明 结合方向 自右向左优先级 14左侧必须是变量 不能是常量或表达式 说明 结合方向 自右向左优先级 14左侧必须是变量 不能是常量或表达式 赋值表达式的值与变量值相等 且可嵌套 例 a 12 a a a a 例 inta 2 a 4 1 a a a a 3 a 264等价于a a a a a a a 0等价于a a a a a a a a 3 2 4 3逗号运算符和表达式形式 表达式1 表达式2 表达式n结合性 从左向右优先级 15逗号表达式的值 等于表达式n的值用途 常用于循环for语句中 例a 3 5 a 4a 3 5 a 4 a 5例x a 3 6 3 x a 3 6 a例a 1 b 2 c 3 printf d d d a b c printf d d d a b c b c a 15 表达式值60 a 15 表达式值20 赋值表达式 表达式值18 x 18 逗号表达式 表达式值18 x 3 1 2 3 3 2 3 2 4 3逗号运算符和表达式形式 表达式1 表达式2 表达式n结合性 从左向右优先级 15逗号表达式的值 等于表达式n的值用途 常用于循环for语句中 例 ch2 6 c includemain intx y 7 floatz 4 x y y 6 y z printf x d n x 运行结果 x 3 2 4 4关系运算符和表达式关系运算符种类 结合方向 自左向右优先级别 例c a b c a b a b c a b ca bc a b c 关系表达式的值 是逻辑值 真 或 假 用1和0表示 例inta 3 b 2 c 1 d f a b a b cb cbf a b c 表达式值1 表达式值1 表达式值0 d 1 f 0 关系运算注意 例若a 0 b 0 5 x 0 3 则a x b的值为 0 例5 2 7 8在C中是允许的 值为 0 例inti 1 j 7 a a i j 4 0 则a 2 例 a 0结果为 A 100结果为 1 0 关系运算注意 例注意区分 与 inta 0 b 1 if a b printf aequaltob elseprintf anotequaltob 例应避免对实数作相等或不等的判断如1 0 3 0 3 0 1 0可改写为 fabs 1 0 3 0 3 0 1 0 1e 6 2 4 5逻辑运算符和表达式逻辑运算符种类 逻辑运算真值表 C语言中 运算量 0表示 假 非0表示 真 运算结果 0表示 假 1表示 真 例ab x ya b x y a a b 优先级 结合方向 a x x b a b x y a b x y a a b 优先级 结合方向 例a 4 b 5 aa ba b a b4 0 25 3 2 8 4 0 c d 值为1 值为0 值为1 值为1 值为1 值为1 5 3 2 8 4 0 值为1 优先级 结合方向 短路特性 逻辑表达式求解时 并非所有的逻辑运算符都被执行 只是在必须执行下一个逻辑运算符才能求出表达式的解时 才执行该运算符 例a m a b n c d 结果m 0 n 1 1 例 逻辑表达式的计算和逻辑表达式的值 include defineEOF1voidmain inta 3 b 4 c 5 printf d n 3 a b c 会写逻辑式 1 判断两个变量能不能整除 能不能被2整除等 2 判断输入的三条边能不能构成三角形 3 判断一个数x是否属于某区间 a b 4 闰年的判断方法 能被4整除但不能被100整除 或者能被100整除也能被400整除 2 4 6条件运算符与表达式一般形式 表达式1 表达式2 表达式3执行过程 求两个数据的最大值 例 a b Y N x 2 1 1 0 x 0 x x c a c z c a A c Max a b a b 54 2 4 6条件运算符与表达式 条件运算符可嵌套如x 0 1 x 0 1 0 优先级 13 结合方向 自右向左如a b a c d c d a b a c d c d 表达式1 表达式2 表达式3类型可不同 表达式值取较高的类型 例x a b x 0 表达式值为 b x 0 表达式值为 a x y 1 1 5 x y 值为1 0 x y 值为1 5 55 条件表达式的使用条件表达式常用在赋值语句中代替if else语句 例 从键盘接收一个字符存放在变量c中 要求只把输入的小写字母转换成大写字母 其他字符不变 并显示是输入了小写字母还是其他字符 includevoidmain charch c scanf c 2 4 7测试数据长度运算符 为了能够确定某一种类型数据的长度 C语言提供了测试数据长度运算符sizeof 它的一般格式为 sizeof exp 其中 exp可以是类型关键字 变量或表达式 其功能是给出exp所代表的数据类型 变量或表达式占用的内存字节数 sizeof double sizeof x sizeof a b sizeof 3 1 46 7 28 sizeof是一元运算符 它的优先级与 等相同 结合性为从右至左 例 用sizeof测试CodeBlocks中各种数据类型的长度 includevoidmain charch a intx 5 y 6 floata 1 28f b 3000 0f printf char d n sizeof ch printf shortint dint dlongint d n sizeof shortint sizeof int sizeof longint printf float d n sizeof a printf double dlongdouble d n sizeof double sizeof longdouble printf intexpress d n sizeof x y printf floatexpress d n sizeof a b printf characterexpress d n sizeof a 0 2 4 8常用数学函数 C编译系统在标题文件math h中定义了众多的数学函数 当需要调用这些数学函数时 要用 include 命令行包含该标题文件 下面列出的函数中 自变量x和y为double型 n为int型 所有的函数值均为double型 三角函数的自变量以弧度为单位 反三角函数的函数值以弧度为单位 作业 1 从键盘输入一个4位整数 编程将此4位数逆置后输出 如输入1234 输出4321 2 求下面表达式的值后编程验证 1 x a 3 int x y 2 4设x 2 5 a 7 y 4 7 2 float a b 2 int x int y设a 2 b 3 x 3 5 y 2 53 设圆半径为7 编写程序 求圆的周长和面积 作业 作业 3 存款利息的计算 有1000元 想存5年 可按以下5种办法存 请编程计算每种存法的本息和 1 一次存5年期 2 先存2年期 到期后将本息再存3年期 3 先存3年期 到期后将本息再存2年期 4 存1年期 到期后将本息再存1年期 连续存5次 5 存活期存款 活期利息每一季度结算一次 2007年12月1日的银行存款利息如下 1年期定期存款利息为4 14 2年期定期存款利息为4 68 3年期定期存款利息为5 4 5年期定期存款利息为5 85 活期存款利息为0 72 活期存款每季度结算一次利息 如果r为年利率 n为存款年数 则结算本息和的公式为 作业 格式 putchar c 参数 c为字符常量 变量或表达式功能 把字符c输出到显示器上返回值 为显示字符的代码值 2 5不同类型数据的输入与输出 C语言无I O语句 I O操作由函数实现 include数据输出单个字符输出函数putchar includemain intc chara c 65 a B putchar c putchar n putchar a 运行结果 AB 举例 格式 printf 格式控制串 输出表 功能 按指定格式向显示器输出数据返回值 返回输出数据字节数 格式输出函数printf 输出表 要输出的数据 可以没有 多个时以 分隔 格式控制串 包含两种信息格式说明 修饰符 格式字符 用于指定输出格式普通字符或转义序列 原样输出格式字符 inta 567 printf d a inta 255 printf x a inta 65 printf o a inta 567 printf u a chara 65 printf c a printf s ABC floata 567 789 printf e a floata 567 789 printf f a floata 567 789 printf g a printf 567 ff 101 567 A ABC 5 677890e 002 567 789001 567 789 说明格式字符除X E G外要用小写格式字符与输出项个数应相同 按先后顺序一一对应输出转换 格式字符与输出项类型不一致 自动按指定格式输出 例inta 3 b 4 printf d d n a b printf a d b d n a b 输出结果 34a 3 b 4 例main unsignedintu 4294967295 printf u d n u 输出结果 u 1 附加格式说明符 修饰符 修饰符 格式字符 例inta 1234 floatf 123 456 charch a printf 8d 2d n a a printf f 8f 8 1f 2f 2e g n f f f f f f printf 3c n ch 例 ch3 2 c m n 例ch3 3 cchara Hello world printf s n 15s n 10 5s n 2 5s n 3s n a a a a a 运行结果 例inta 1234 floatf 123 456 charc Hello world printf 8d 8d n a a printf 10 2f 10 1f n f f printf 10 5s 10 3s n c c 运行结果 例ch3 4 c 例inta 1234 floatf 123 456 printf 08d n a printf 010 2f n f printf 0 8d n a printf 0 10 2f n f 例ch3 5 c0 例inta 123 printf o o X X n a a a a 例ch3 6 c 例l 00001234 0000123 46 0001234 000123 46 173 0173 7B 0X7B 例longa 655366789 printf d 8ld n a a 655366789 655366789 格式说明类型表 总结 格式说明符应和输出的列表项对应 产生相应的输出 其中输出的表项应与格式说明符类型一致 printf a 5d nb f 2 3 5 34 格式说明串的一般形式和意义 m nl格式类型字符 一个字母 格式说明标志 对齐方式 缺省为右对齐 为左对齐 宽度 精度 位数 宽度 输出总列数 精度 小数位数 或字符个数 类型长度 缺省整型 l表示long或double 格式 getchar 功能 从键盘读一字符返回值 读取字符的代码值 数据输入单字符输入函数getchar 例 includemain intc printf Enteracharacter c getchar printf c hex x n c c 运行结果 Enteracharacter A A hex41 格式输入函数scanf 格

温馨提示

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

评论

0/150

提交评论