已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第二讲 C+对C的非面向对象扩充,面向对象程序设计,2,本章主要内容,(一)数据类型,(二)数据的输入与输出,(三)函数,(四)指针,(五)引用,3,(一)数据类型,C+的数据类型有基本数据类型和非基本数据类型,基本数据类型是C+内部预先定义的数据类型,非基本数据类型也称用户定义数据类型。,4,5,数据类型常量与变量,(1) 常量 直接常量:整型常量、实型常量、 字符常量 符号常量:在+语言中,用一个标识符来表示一个常量,称为符号常量。 符号常量用之前必须先定义,编译预定义指令为: #define 标识符 常量(字符串) # define PI 3.1415926 const 类型 标识符 常量或常量表达式 ;,const float pi = 3.141592653 ; /只存储7位有效位 pi=3.141593,6,const float pi; pi = 3.1415926 ; /常量名不能放在赋值语句左边 Constant variable pi must be initialized 常量可初始化成一个常量表达式 const int size=100*sizeof(int); sizeof不是函数 ,是基本操作符,编译前能确定值,const int number=max(15,23) ; /表达式不能含函数 函数要在程序运行时才能求值,编译不确定 在C中,定义变量的方法是用编译预定义指令,PI不是具有一定类型的常量,C+容许define定义常量兼容C,一般常量定义用 const,7,常类型,常类型的变量或对象必须进行初始化,而且不能被更新。 常数组:数组元素不能被更新。 类型说明符 const 数组名大小. 常对象:必须进行初始化,不能被更新。 类名 const 对象名 常引用:被引用的对象不能被更新。 const 类型说明符 &引用名 常指针:指向常量的指针。,8,数据类型 布尔型数据,布尔型变量的说明:例:bool flag; 布尔型数据的取值:有 false 和 true 两个值,#include void main() bool a,b; a=true; b=false; couta“,“b“,”; a=-10; b=false; couta“,“b;,1,0,1,0,9,枚举类型、枚举常量,将需要的变量值一一列举,便构成一个枚举类型。 枚举类型的定义形式如下: enum 枚举类型名枚举常量值列表; 如:enum COLORRED,BLUE,GREEN,WHITE; RED=0,BLUE=1. COLOR是枚举类型名,不是变量名,不占空间 枚举常量是符号常量,在内存中以整数表示 给枚举常量指定枚举值: enum COLORRED=100,BLUE=200,GREEN,WHITE;,10,枚举元素按常量处理,不能对它们赋值。不能写:RED=0;,设某次体育比赛的结果有四种可能:胜(win)、负(lose)、平局(tie)、比赛取消(cancel),编写程序顺序输出这四种情况。 分析:由于比赛结果只有四种可能,所以可以定义一个枚举类型,声明一个枚举类型的变量来存放比赛结果。,定义枚举类型变量,并用枚举常量初始化 COLOR paint =GREEN; paint=200; /error Cannot convert fromconst int to enum color,11,#include enum game_result WIN, LOSE, TIE, CANCEL; int main() game_result result; game_result omit = CANCEL; int count; for (count = WIN ; count = CANCEL ; count+) result = (game_result)count; if (result = omit) cout “The game was cancelledn“; ,12,else cout “The game was played “; if (result = WIN) cout “and we won!“; if (result = LOSE) cout “and we lost.“; cout “n“; return 0; ,13,运行结果 The game was played and we won! The game was played and we lost. The game was played The game was cancelled,14,(二)数据的输入与输出,Printf和scanf的缺陷:非安全类型和不可扩充性 错用数据类型,编译也能通过 输入输出格式是未预先定义的,要求更灵活,C+语言中,数据的输入和结果的输出是分别使用系 统所提供的输入流对象cin和输出流对象cout来完成的。 程序的开头嵌入相应的头文件“iostream.h”即可。,数据的输出cout 输出流对象输出数据的语句格式为: cout数据1数据2数据n;,15,(1)可将多个被输出数据写在一个cout中,各输出项间用“”操作符隔开即可,但要注意cout首先按从右向左的顺序计算出各输出项的值,然后再输出各项的值。cout“ value of a:“a“ value of b:“b“ The result is :“ sqrt(a*a+b*b); 设变量i的值为10,则couti“,“i+“,“i+;的输出结果为:12,11,10 (2)一个cout语句也可拆成若干行书写,但注意语句结束符“;”只能写在最后一行上。如:对于上面的语句也可写成如下形式:,16,cout“ value of a:“ /注意行末无分号 a “ value of b:“ b “ The result is :“ sqrt(a*a+b*b); /在此处书写分号 (3)在cout中,实现输出数据换行功能方法:可用 转义字符“n”,也可用表示行结束的流操作endl。,cout“This is first Line.n“This is second line. “; cout“This is first Line.“endl“This is second line. “;,17,(4)在cout中还可使用流控制符控制数据的输出格式,但使用这些流控制符时,要在程序的头上嵌入头文件#include 。常用的流控制符及其功能如表2.12所示。,18,表2.12 I/O流的常用控制符,19, 设置域宽:域宽是被输出数据所占的输出宽度(单位是字符数)。设置域宽可以使用流控制符setw(n), 其中n为正整数,表示域宽。 参数n的值比实际被输出数据宽度大时,则给定的域宽内,数据靠右输出,不足部分自动填充空格符;若输出数据实际宽度比n值大时,则数据所占的实际位数输出设置域宽的参数n不再起作用。,20,#include #include void main() int a=21,b=999; coutsetw(3)asetw(4)asetw(5)aendl; coutsetw(3)bsetw(4)bsetw(5)bendl; coutsetw(3)a+bsetw(4)a+bsetw(5)a+bendl; 其输出结果是: 21 21 21 /程序中第一个cout输出结果 999999 999 /程序中第二个cout输出结果 102010201020 /程序中第三个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 /要用到格式控制符 void main() double am = 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.14286 3 3 3.1 3.14 3.143 3.14285714 3.14285714e+00,23,设置域内填充字符:在默认情况下,当被输出的数据未占满域宽时,会自动在域内靠左边填充相应个数的空格符。但我们也可以设置在域内填充其他的字符,方法是利用cout的fill方法cout.fill(c)或setfill(c)。 cout.fill(c)上和 setfill(c)可以对所有被输出的数据起作用。 #include “iostream.h” #include “iomanip.h” void main() int a=21,b=999; cout.fill(#); /设置域内填充字符为#字符 coutsetw(3)asetw(4)asetw(5)aendl;,24,coutsetw(3)bsetw(4)bsetw(5)bendl; cout.fill(%); /将域内填充字符改为%字coutsetw(3)a+bsetw(4)a+bsetw(5)a+bendl; coutsetfill();/恢复默认设置 其输出结果是: #21#21#21 /程序中第一个cout的输出结果,未占 满域宽的部分填充#字符。 999#999#999 /程序中第二个cout的输出结果 10201020%1020 /程序中第三个cout的输出结果,未占满 域宽的部分填充%字符。,25,设置输出数据进位计数制:在默认情况下,被输出的数据按十进制格式输出。但可以使用流控制符hex和oct控制数据的输出格式为十六进制和八进制,一旦设置成某种进位计数制后,数据的输出就以该种数制为主,可利用流控制符dec将数制重新成十进制。 强制显示小数点和符号 #include /*ch2_5*/ #include void main() cout 10.0/5 endl; cout setiosflags(ios:showpoint) 10.0/5 endl;,2 2.00000,26,#include /*ch2_6*/ #include void main() 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=“ cinxx; /错误,因含有字符x= cinx10; /错误,因含有常量10,cin后面所跟的变量可为任何数据类型,若变量为整 型数据类型,则在程序运行过程中从键盘输入数据时,可 分别按十进制、八进制或十六进制输入该整数。,28,但要注意: 当按十进制格式输入整数时,可直接输入数据本身即可; 若以十六进制输入整数时,数据前要冠以0x或0X; 若按八进制格式输入整数时,数据前要冠以数字0,。 若cin后面的变量为浮点类型(单精度或双精度)时,可分别按小数或指数的格式表示该浮点数。 若cin后面的变量为字符类型时,可直接输入字符数据而不能在字符的两端加单引号。,29,当程序中用cin输入数据时,最好在该语句之前用cout输出一个需要输入数据的提示信息,以正确引导和提示用户输入正确的数据。如: coutx; 当一个cin后面同时跟有多个变量时,则用户在输入数据时的个数应与变量的个数相同,各数据之前用一个或多个空格隔开,输入完后按回车键;或者,每输入一个数据按回车键也可。如对于以下程序段: int x; double a; char c1; cout“输入一个整数、一个浮点数和一个字符:“;,30,cinxac1; cout“整数:“x“浮点数:“a“字符:“c1; 运行过程中,屏幕上显示 “输入一个整数、一个浮点数和一个字符:”,用户输入数据的格式可以是: 1003.14a 或者: 100 3.14 a 最后程序的输出结果为:“整数:100浮点数:3.14字符:a”,31,字符串的输入/输出,方法 逐个字符输入输出 将整个字符串一次输入或输出 例:char c =“China“; coutc; 注意 输出字符不包括 0 输出字符串时,输出项是字符数组名,输出时遇到0结束。 输入多个字符串时,以空格分隔;输入单个字符串时其中不能有空格。 Char.cpp,32,char str15,str25,str35; cinstr1str2str3; 运行时输入数据: How are you?,若改为: char str13; cinstr; 运行时输入数据: How are you?,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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学《考古学-考古地层学》考试备考题库及答案解析
- 电力面试题及答案
- 2025年大学《供应链管理-供应链风险管理》考试模拟试题及答案解析
- 2025年大学《城市地下空间工程-城市地下空间工程概论》考试备考试题及答案解析
- 2025年河北建投能源投资股份有限公司所属单位招聘笔试参考题库及答案
- 劳动关系制度2025年试题及答案
- 环卫行业2025年垃圾桶转运考核模拟卷及答案
- 六年级上册8 我们受特殊保护第1课时教案设计
- 2025年大学《表演-影视表演》考试参考题库及答案解析
- 2025年大学《数理基础科学-概率论与数理统计》考试参考题库及答案解析
- 2025年社工(初级)《社会工作实务(初级)》考试题库及答案
- 2024-2025学年度农业系统职称考试题库含答案详解(完整版)
- 仓库物料标识卡知识培训
- 实施指南(2025)《HG-T 4127-2017医用干式胶片》
- 生物安全培训海报模板课件
- 2025年中国电信校园招聘面试全攻略及模拟题集
- 藤县埌南永泽养殖场生猪养殖二期项目环境影响报告书
- 建筑工程加固施工技术交底
- 英语数字教学课件
- (人教A版)必修一高一数学上册期中模拟卷01(解析版)
- 铁路工务专业毕业论文
评论
0/150
提交评论