c语言程序设计3第三讲(第二章下).ppt_第1页
c语言程序设计3第三讲(第二章下).ppt_第2页
c语言程序设计3第三讲(第二章下).ppt_第3页
c语言程序设计3第三讲(第二章下).ppt_第4页
c语言程序设计3第三讲(第二章下).ppt_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

编程能力 不是听会的 也不是看会的 而是动手动脑练会的 高级语言程序设计 主讲教师 贾彩燕计算机与信息技术学院计算机科学与技术系cyjia 第一章程序设计与C语言 预备知识计算机的基本构成计算机中数的表示及进制转换一个简单的C程序集成开发环境VC6 0程序和程序语言程序和程序语言算法及其描述工具程序开发过程问题与程序设计 注意 C程序是函数式程序 程序从main函数开始执行 随main函数结束而结束 一个工程内只能有一个带main函数的程序文件 C程序缩进式书写格式intmain printf hello n return0 第二章数据对象与计算 主要内容基本字符 标识符和关键字数据类型基本类型与数据表示基本输入输出运算符 表达式与计算数学函数库及使用学习本章的目标学习写最简单的C程序 顺序结构程序 并能调试和运行 知识回顾 什么是标识符 标识符的命名规则 C语言基本的数据类形有几种 是哪些 什么是常量 常量有几种 什么是变量 变量定义的一般形式是什么 程序功能 输出各种基本数据类型在内存中所占字节数 includeintmain printf short t t d n sizeof short printf int t t d n sizeof int printf long t t d n sizeof long printf unsignedshort d n sizeof unsignedshort printf unsignedint t d n sizeof unsignedint printf unsignedlong t d n sizeof unsignedlong printf float t t d n sizeof float printf double t d n sizeof double printf longdouble t d n sizeof longdouble printf char t t d n sizeof char printf unsignedchar t d n sizeof char return0 short 2int 4long 4unsignedshort 2unsignedint 4unsignedlong 4float 4double 8longdouble 8char 1unsignedchar 1 VC环境下各数据类型所占内存大小及表示范围 字符类型数据的表示范围 128 127短整数的表示范围 32768 32767 2 15 2 15 1 整数和长整数的表示范围 2147483648 2147483647 2 31 2 31 1 单精度浮点数的表示范围 3 4e 38 3 4e38约7位有效数字双精度浮点数的表示范围 1 7e 308 1 7e308约16位有效数字 主要内容 基本字符 标识符和关键字数据类型基本类型与数据表示整数类型和整数的表示实数类型和实数的表示字符类型和字符的表示数据的外部表示 内部表示与转换基本输入输出运算符 表达式与计算数学函数库及使用本章学习目标学习写最简单的C程序 顺序结构程序 并能调试和运行 2 4数据的外部表示 内部表示与转换 外部表示 源程序中写数据时用的形式 给正运行中的程序提供数据时用的形式或者程序输出的形式内部表示 数据在计算机内的二进制编码形式 计算机内部存储和处理数据时所用的形式 数据输出 数据的内部表示转换为外部表示 格式 putchar c 参数 c为字符常量 变量或表达式功能 把字符c输出到显示器上返值 正常 为显示的代码值 出错 为EOF 1 C语言无I O语句 I O操作由函数实现如何将信息送到标准输出 一般到屏幕 include 字符输出函数 格式 printf 格式控制串 输出表 功能 按指定格式向显示器输出数据返值 正常 返回输出字节数 出错 返回EOF 1 输出表 要输出的数据 可以没有 多个时以 分隔 格式控制串 包含两种信息格式说明 修饰符 格式字符 用于指定输出格式普通字符或转义序列 原样输出 格式输出函数 printf Pleaseinputxandy n printf d d d n x y m includeintmain printf Welcome n printf to n printf Beijing n return0 WelcometoBeijing 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 02 567 789000 567 789 说明格式字符一般用小写格式字符与输出项个数应相同 按先后顺序一一对应输出转换 格式字符与输出项类型不一致 自动按指定格式输出 格式字符表格 n 对实数 指定小数点后位数 四舍五入 修饰符 功能 m 输出数据域宽 长度 m 左补空格 否则按实际输出 输出数据在域内左对齐 缺省右对齐 指定在有符号数的正数前显示正号 输出数值时指定左面不使用的空位置自动填0 0 在八进制和十六进制数前显示前导0 0 x 在d o x u前 指定输出精度为long型在e f g前 指定输出精度为longdouble型 l 修饰符 对字符串 指定实际输出位数 格式字符实现的转换对应参数的类型 d整数转换输出int类型 mdm为指定的输出字段宽度 ld长整数转换输出long类型 m nf实数转换输出float和double类型 lf实数转换输出longdouble类型 s输出字符串字符串 c输出字符字符 编码 printf len 7 2f width 7 2f area 7 2f n 2 2 3 5 7 7 常用转换 输出整数 printf Test d d d n 2 3 5 Test 2 3 5 例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 0 例inta 123 printf o o X X n a a a a 例 例longa 65536 printf d 8ld n a a 例l 00001234 0000123 46 000 1234 000 123 56 173 0173 7B 0X7B 0 65536 例 格式 getchar 功能 从键盘读一字符返值 正常 返回读取的代码值 出错 返回EOF 1 字符输入函数 例 includeintmain intc printf Enteracharacter c getchar printf c hex x n c c return0 运行结果 Enteracharacter A A hex41 数据输入 数据的外部表示转换为内部表示 格式 scanf 格式控制串 地址表 功能 按指定格式从键盘读入数据 存入地址表指定的存储单元中 并按回车键结束返值 正常 返回输入数据个数 地址表 变量的地址 常用取地址运算符 格式字符 d i o x u c s f e 例scanf d 输入 10 则a 10 例scanf x 输入 11 则a 17 格式输入函数 附加格式说明符 修饰符 l 修饰符 功能 h m 用于d o x前 指定输入为short型整数 用于d o x前 指定输入为long型整数 用于e f前 指定输入为double型实数 指定输入数据宽度 遇空格或不可转换字符则结束 抑制符 指定输入项读入后不赋给变量 例scanf 4d 2d 2d 输入19991015 则1999 yy 10 mm 15 dd 修饰符功能 一般以空格 TAB或回车键作为分隔符其它字符做分隔符 格式串中两个格式符间字符 例scanf d o x 输入123123123 输出a 123 b 83 c 291 例scanf d d d 输入12 30 45 则12 h 30 m 45 s 例scanf d d a b 输入3 4 则3 a 4 b 例scanf a d b d c d 输入a 12 b 24 c 36 输入分隔符的指定 如scanf c c c 若输入a b c 则a c1 c2 b c3 说明 1 用 c 格式符时 空格和转义字符作为有效字符输入2 输入数据时 遇以下情况认为该数据结束 遇空格 TAB 或回车遇宽度结束遇非法输入 如scanf d c f 若输入1234a123o 26 则1234 a a b 123 c 输入函数留下的 垃圾 例intx charch scanf d 执行 123 输出 x 123 ch 10 解决方法 用格式串中空格或 c 来 吃掉 例intx charch scanf d 主要内容 基本字符 标识符和关键字数据类型基本类型与数据表示基本输入输出运算符 表达式与计算算术运算符算法表达式表达式求值计算和类型数学函数库及使用本章学习目标学习写最简单的C程序 顺序结构程序 并能调试和运行 2 5运算符 表达式与计算 运算符 描述运算的特殊符号 C语言的所有运算符都用一个或两个特殊字符表示 个别例外 表达式 描述计算的最基本结构 由计算对象和运算符 按一定规则 构成 根据运算对象的个数的不同分为 单目 双目和多目运算符 例 237 23 37 14 运算符表 1 算术运算符 运算符使用形式意义 一元和二元运算符一元正号 二元加法 一元和二元运算符一元负号 二元减法 二元运算符乘法运算 二元运算符除法运算 二元运算符取模运算 求余数 由 的上下文可确定是 一元 还是 二元 只能用于整型 其余可用于各种算术类型 2 算术表达式 形式与数学的算术表达式类似 28 32 16 7 4 25 3 6 234同类型值的运算结果仍是该类型的值 例 3 5计算结果是int类型的8 3L 5L的结果是long 3 2 2 88的结果是double 例 计算半径为6 5厘米的圆球体积 用printf输出计算结果 运行时输出 V 1150 349200cm 3 程序功能 计算半径为6 5cm的圆球的体积 includeintmain printf V fcm 3 n 3 1416 6 5 6 5 6 5 4 0 3 0 return0 includeintmain printf Factorialof dis f n 7 1 2 3 4 5 6 7 return0 错在哪里 与转换描述不一致 3 表达式求值 表达式计算又称 表达式求值 一个表达式的意义就是它求出的值 学习运算符应注意运算符功能与运算量关系要求运算量个数 单 双 多目 要求运算量类型运算符的优先级结合方向结果的类型表达式求值应注意运算符的优先级结合方向 多个 运算对象的求值顺序括号的意义 结合方式 同优先级运算符相邻时的计算顺序一元算术运算符自右向左结合 二元算术运算符自左向右结合 符合数学习惯 例 166 8 5 3 8 优先级 运算符在表达式中相邻出现时 优先级高的运算符先算 附录A运算符表 算术运算符分三个优先级 一元 高 中 二元 低 例 5 3 4 6 符合数学习惯 运算对象的求值顺序 例 5 8 6 4 5 8 和 6 4 中哪个先做 C对此问题无规定程序中不应写依赖特殊计算顺序的表达式 那样将无法保证得到的结果C里可以写出对求值顺序敏感的表达式 但不要去写这种表达式 数学中无此问题 括号 改变计算顺序 括号括起的部分先算 2 6 4 3 5 括号是控制计算顺序的手段 符合数学习惯 有关格式的建议 表达式较复杂时 应适当加括号 以利阅读表达式可换行 应采取某种对齐方式 以利理解 出错也容易发现和改正 2 3 23 1 66 2 87 4 13 2 8326 2 1034 4 783 0 27 3 1 133 24 328 9 includeintmain printf Averageof dand dis d n 68 39 68 39 2 return0 问题在哪里 4 计算和类型 表达式计算中有许多与类型有关的问题例 下面表达式对的结果不同 14 8 12和14 12 81 3 3和1 3 3 int数据计算得到int结果int采用整除 商是整数 余数丢掉long类型与int一样 实数类型和实数类型计算得实数 算术计算的溢出 每个类型有明确取值范围计算有确定的结果类型计算中结果超出类型表示范围称为溢出 C程序对溢出不报错 溢出后的计算不再有意义 例 若int由16位表示 下面表达式有问题 32766 18应选择合适类型 如改为 32766L 18L实数计算也可能发生溢出 上溢和下溢 混合类型计算和类型转换 通常 编译程序根据运算对象类型确定怎样做 3 2用int类型的加法运算3 0 2 0用double类型的加法运算但 运算对象类型不同时形成混合类型计算 3 27 201 出现混合类型计算 程序自动将运算对象转换到相同类型的值 而后计算是自动类型转换 不需要在程序里明确写出 自动类型转换原则 把表示范围小的类型的值转换为表示范围大的类型的值从小到大是 int long float double longdouble double float long unsigned int char short 必定的转换 不同类型时转换的方向 提升格式转换 混合类型计算中自动插入数值转换动作 由原类型的值产生出新值后参与计算 写程序或读程序应注意 表达式中计算对象的类型子表达式计算结果的类型哪些地方会发生类型转换 怎么转换 显示类型转换 也称强制转换或类型强制写法表达式前写括起的类型名例 int 3 6 15 8 4实数类型转为整型时丢掉小数部分 与类型转换有关的问题 类型转换可能丢失信息 若被转换值在结果类型里无法表示 结果无法预计 写强制转换时必须注意 显式类型转换看作一元运算符 与其他一元运算符有同样优先级和结合方式 类型转换是值转换 从一个数据值出发 产生另一类型的新值 原值不变 数值类型间都可以转换 例1写出下面算术表达式的值 设a 2 b 3 x 3 5 y 2 5 float a b 2 int x int y 3 5 程序功能 输入小写字母转换成大写字母输出 顺序结构程序 includeintmain charc1 c2 c1 getchar printf c d n c1 c1 c2 c1 32 printf c d n c2 c2 return0 输入 A 输出 A 65a 97 例2从键盘输入大写字母 用小写字母输出 主要内容 基本字符 标识符和关键字数据类型基本类型与数据表示基本输入输出运算符 表达式与计算数学函数库及使用函数 函数调用数学函数及其使用函数调用中的类型转换本章学习目标学习写最简单的C程序 顺序结构程序 并能调试和运行 2 6数学函数库及其使用 1 函数 函数调用标准库提供了许多函数 实现许多功能 如printf 其中有一组数学函数 实现常用数学函数计算 要用函数 只需了解其功能 不必关心功能如何实现 提供这些常用功能是为了写程序方便 例 标准函数sin 2 0 sin 2 4 函数值可参与计算 sin 2 4 sin 3 98 括号里是实际参数 实参 得到结果 返回值 sin函数参数个数类型和返回值类型 类型特征 doublesin double 使用形式函数名 实参 实参 函数通常规定了需要几个实参和实参类型 标准库函数名都由小写字母拼写 例 计算两边长分别为3 5和4 72 夹角为37度的三角形的面积 3 5 4 72 sin 37 0 180 0 3 1416 2 0 函数值相当于表达式 2 数学函数的使用 主要数学函数 参见谭浩强书附录E sincostanasinacosatansinhcoshtanhexploglog10sqrtfabspowfmodrand 绝对值函数 doublefabs doublex 函数功能 求x的绝对值求平方根函数 doublesqrt doublex 函数功能 计算x的平方根例 fabs 2 5 sqrt 9 sqrt 2 0 使用标准库数学函数 程序前面写 include 例1 求两邻边长为3 5和4 72米 两边夹角为37度的三角形的面积 程序功能 已知两边长及之间夹角计算三角形的面积 顺序结构程序 include includeintmain printf Area fm 2 n 3 5 4 72 sin 37 0 180 3 1416 2 return0 转换

温馨提示

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

评论

0/150

提交评论