已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第二讲C 对C的非面向对象扩充 面向对象程序设计 2 本章主要内容 一 数据类型 二 数据的输入与输出 三 函数 四 指针 五 引用 3 一 数据类型 C 的数据类型有基本数据类型和非基本数据类型 基本数据类型是C 内部预先定义的数据类型 非基本数据类型也称用户定义数据类型 4 5 数据类型 常量与变量 1 常量直接常量 整型常量 实型常量 字符常量符号常量 在 语言中 用一个标识符来表示一个常量 称为符号常量 符号常量用之前必须先定义 编译预定义指令为 define标识符常量 字符串 definePI3 1415926const类型标识符常量或常量表达式 constfloatpi 3 141592653 只存储7位有效位pi 3 141593 6 constfloatpi pi 3 1415926 常量名不能放在赋值语句左边Constantvariable pi mustbeinitialized常量可初始化成一个常量表达式constintsize 100 sizeof int sizeof不是函数 是基本操作符 编译前能确定值 constintnumber max 15 23 表达式不能含函数函数要在程序运行时才能求值 编译不确定在C中 定义变量的方法是用编译预定义指令 PI不是具有一定类型的常量 C 容许define定义常量兼容C 一般常量定义用const 7 常类型 常类型的变量或对象必须进行初始化 而且不能被更新 常数组 数组元素不能被更新 类型说明符const数组名 大小 常对象 必须进行初始化 不能被更新 类名const对象名常引用 被引用的对象不能被更新 const类型说明符 引用名常指针 指向常量的指针 8 数据类型 布尔型数据 布尔型变量的说明 例 boolflag 布尔型数据的取值 有false和true两个值 includevoidmain boola b a true b false cout a b a 10 b false cout a b 1 0 1 0 9 枚举类型 枚举常量 将需要的变量值一一列举 便构成一个枚举类型 枚举类型的定义形式如下 enum枚举类型名 枚举常量值列表 如 enumCOLOR RED BLUE GREEN WHITE RED 0 BLUE 1 COLOR是枚举类型名 不是变量名 不占空间枚举常量是符号常量 在内存中以整数表示给枚举常量指定枚举值 enumCOLOR RED 100 BLUE 200 GREEN WHITE 10 枚举元素按常量处理 不能对它们赋值 不能写 RED 0 设某次体育比赛的结果有四种可能 胜 win 负 lose 平局 tie 比赛取消 cancel 编写程序顺序输出这四种情况 分析 由于比赛结果只有四种可能 所以可以定义一个枚举类型 声明一个枚举类型的变量来存放比赛结果 定义枚举类型变量 并用枚举常量初始化COLORpaint GREEN paint 200 errorCannotconvertfrom constint to enumcolor 11 includeenumgame result WIN LOSE TIE CANCEL intmain game resultresult game resultomit CANCEL intcount for count WIN count CANCEL count result game result count if result omit cout Thegamewascancelled n 12 else cout Thegamewasplayed if result WIN cout andwewon if result LOSE cout andwelost cout n return0 13 运行结果Thegamewasplayedandwewon Thegamewasplayedandwelost ThegamewasplayedThegamewascancelled 14 二 数据的输入与输出 Printf和scanf的缺陷 非安全类型和不可扩充性错用数据类型 编译也能通过输入输出格式是未预先定义的 要求更灵活 C 语言中 数据的输入和结果的输出是分别使用系统所提供的输入流对象cin和输出流对象cout来完成的 程序的开头嵌入相应的头文件 iostream h 即可 数据的输出cout输出流对象输出数据的语句格式为 cout 数据1 数据2 数据n 15 1 可将多个被输出数据写在一个cout中 各输出项间用 操作符隔开即可 但要注意cout首先按从右向左的顺序计算出各输出项的值 然后再输出各项的值 cout valueofa a valueofb b Theresultis sqrt a a b b 设变量i的值为10 则cout i i i 的输出结果为 12 11 10 2 一个cout语句也可拆成若干行书写 但注意语句结束符 只能写在最后一行上 如 对于上面的语句也可写成如下形式 16 cout valueofa 注意行末无分号 a valueofb b Theresultis sqrt a a b b 在此处书写分号 3 在cout中 实现输出数据换行功能方法 可用转义字符 n 也可用表示行结束的流操作endl cout ThisisfirstLine n Thisissecondline cout ThisisfirstLine endl Thisissecondline 17 4 在cout中还可使用流控制符控制数据的输出格式 但使用这些流控制符时 要在程序的头上嵌入头文件 include 常用的流控制符及其功能如表2 12所示 18 表2 12I O流的常用控制符 19 设置域宽 域宽是被输出数据所占的输出宽度 单位是字符数 设置域宽可以使用流控制符setw n 其中n为正整数 表示域宽 参数n的值比实际被输出数据宽度大时 则给定的域宽内 数据靠右输出 不足部分自动填充空格符 若输出数据实际宽度比n值大时 则数据所占的实际位数输出设置域宽的参数n不再起作用 20 include includevoidmain inta 21 b 999 cout setw 3 a setw 4 a setw 5 a endl cout setw 3 b setw 4 b setw 5 b endl cout setw 3 a b setw 4 a b setw 5 a b endl 其输出结果是 21 21 21 程序中第一个cout输出结果999 999 999 程序中第二个cout输出结果10201020 1020 程序中第三个cout输出结果 setw n 仅仅影响下一个数值输出 21 cout setw 8 10 20 endl 1020 setprecision n 可控制输出流显示浮点数的数字个数 默认流输出数值为6 浮点数既可用小数格式输出 也可用指数格式输出 可setiosflags ios fixed 和setiosflags ios scientific 来控制 setiosflags ios fixed 与setprecision n 合用 可控制小数点右边的数字个数setiosflags ios scientific 与setprecision n 合用 可控制指数表示法的小数位数 22 include ch2 1 cpp include 要用到格式控制符voidmain doubleam 22 0 7 cout am endl cout setprecision 0 am endl setprecision 1 am endl setprecision 2 am endl setprecision 3 am endl setprecision 4 am endl cout setiosflags ios fixed cout setprecision 8 am endl cout setiosflags ios scientific am endl cout setprecision 6 重新设置成原默认设置 3 14286333 13 143 1433 142857143 14285714e 00 23 设置域内填充字符 在默认情况下 当被输出的数据未占满域宽时 会自动在域内靠左边填充相应个数的空格符 但我们也可以设置在域内填充其他的字符 方法是利用cout的fill方法cout fill c 或setfill c cout fill c 上和setfill c 可以对所有被输出的数据起作用 include iostream h include iomanip h voidmain inta 21 b 999 cout fill 设置域内填充字符为 字符cout setw 3 a setw 4 a setw 5 a endl 24 cout setw 3 b setw 4 b setw 5 b endl cout fill 将域内填充字符改为 字cout setw 3 a b setw 4 a b setw 5 a b endl cout setfill 恢复默认设置 其输出结果是 21 21 21 程序中第一个cout的输出结果 未占满域宽的部分填充 字符 999 999 999 程序中第二个cout的输出结果10201020 1020 程序中第三个cout的输出结果 未占满域宽的部分填充 字符 25 设置输出数据进位计数制 在默认情况下 被输出的数据按十进制格式输出 但可以使用流控制符hex和oct控制数据的输出格式为十六进制和八进制 一旦设置成某种进位计数制后 数据的输出就以该种数制为主 可利用流控制符dec将数制重新成十进制 强制显示小数点和符号 include ch2 5 includevoidmain cout 10 0 5 endl cout setiosflags ios showpoint 10 0 5 endl 22 00000 26 include ch2 6 includevoidmain cout 10 20 endl cout setiosflags ios showpos 10 20 endl 20 10 20 C 程序中 数据的输入采用cin流对象来完成 格式如下 cin 变量名1 变量名2 变量名n cin功能 运行执行到cin时 程序暂停执行并等待从键盘输入相应数目的数据 输入完数据并回车后 cin从输入流中取得相应的数据并传送给其后的变量中 27 说明 操作符后除了变量名外不得有其他数字 字符串或字符 否则系统会报错 如 cin x x 错误 因含有字符串 x cin x x 错误 因含有字符 x cin x 10 错误 因含有常量10 cin后面所跟的变量可为任何数据类型 若变量为整型数据类型 则在程序运行过程中从键盘输入数据时 可分别按十进制 八进制或十六进制输入该整数 28 但要注意 当按十进制格式输入整数时 可直接输入数据本身即可 若以十六进制输入整数时 数据前要冠以0 x或0X 若按八进制格式输入整数时 数据前要冠以数字0 若cin后面的变量为浮点类型 单精度或双精度 时 可分别按小数或指数的格式表示该浮点数 若cin后面的变量为字符类型时 可直接输入字符数据而不能在字符的两端加单引号 29 当程序中用cin输入数据时 最好在该语句之前用cout输出一个需要输入数据的提示信息 以正确引导和提示用户输入正确的数据 如 cout x 当一个cin后面同时跟有多个变量时 则用户在输入数据时的个数应与变量的个数相同 各数据之前用一个或多个空格隔开 输入完后按回车键 或者 每输入一个数据按回车键也可 如对于以下程序段 intx doublea charc1 cout 输入一个整数 一个浮点数和一个字符 30 cin x a c1 cout 整数 x 浮点数 a 字符 c1 运行过程中 屏幕上显示 输入一个整数 一个浮点数和一个字符 用户输入数据的格式可以是 100 3 14 a或者 1003 14a最后程序的输出结果为 整数 100浮点数 3 14字符 a 31 字符串的输入 输出 方法逐个字符输入输出将整个字符串一次输入或输出例 charc China cout c 注意输出字符不包括 0 输出字符串时 输出项是字符数组名 输出时遇到 0 结束 输入多个字符串时 以空格分隔 输入单个字符串时其中不能有空格 Char cpp 32 charstr1 5 str2 5 str3 5 cin str1 str2 str3 运行时输入数据 Howareyou 若改为 charstr 13 cin str 运行时输入数据 Howareyou 33 整行输入字符串 cin getline 字符数组名St 字符个数N 结束符 N包括字符串结束标记 0 功能 一次连续读入多个字符 可以包括空格 直到读满N个 或遇到指定的结束符 缺省为 n 读入的字符串存放于字符数组St中 读取但不存储结束符 遇到结束符后结束输入 cin get 字符数组名St 字符个数N 结束符 功能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初三物理《力与运动》一轮复习:二力平衡教学设计
- XX羽毛球馆体育场馆设施维护安全总结
- 企业工会管理制度
- 外墙水包水多彩涂料验收记录
- 2026汽车驾驶员考试题库及考试答案(中级)
- XX建材燃气企业设备维护安全总结
- 空调机组安装专项方案
- 2026年设备监理师光伏发电设备安装与并网质量控制专题试卷及解析
- 建筑工地防护触电事故计划
- 青少年基础体能锻炼服务规范
- 酒店维修保养合同协议
- (2025年)《三级综合医院评审标准细则》考核试题附答案
- 用电检查知识课件
- 2026年河南高考生物真题试卷含答案
- 浙江国企招聘-2025年杭州市临安区城市发展投资集团有限公司下属子公司公开招聘工作人员1人(公共基础知识)综合能力测试题附答案
- 2025年一级注册结构专业考试题目及答案
- 水稳车辆运输合同范本
- 2025年江苏省中职职教高考统考英语试卷真题(含答案)
- 成都市青羊区教育局2025年“蓉漂人才荟”赴高校公开考核招聘240名教师笔试参考题库附答案解析
- 风电场防洪防汛课件
- T-CFLP 0016-2023《国有企业采购操作规范》【2023修订版】
评论
0/150
提交评论