欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C++语言程序设计-谭浩强.doc

    • 资源ID:33412533       资源大小:3.06MB        全文页数:228页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++语言程序设计-谭浩强.doc

    -作者xxxx-日期xxxxC+语言程序设计-谭浩强【精品文档】第1章 C+的初步知识一、面向对象的基本概念v 对象/实例(object/instance)v 类(class)v 封装(encapsulation)v 继承(inheritance)v 多态(polymorphism)v 重载(overload)v 消息(message)二、C+的开发运行环境1、Visual C+2、GCC:是一个用于Linux系统下编程的编译器3、WinTC4、Dev-C+三、最简单的C+程序#include<iostream>using namespace std;int main()cout<<"This is a C+ program."return 0;程序功能:输出一行字符:This is a C+ program.程序注释:(1)预处理命令#include<iostream> iostream输入、输出流(2)using namespace std; 使用命名空间std。 第一行和第二行是每个C+都有的语句。(3)C+的主函数名与C一样,都是main。(4)C+的输出使用cout<< cout是输出流对象,<<是插入运算符。 若要输出一个字符串,将要输出的字符串写在双引号中;若要输出一个整数,<<1;若要输出一个变量,<<a;例如:#include<iostream>using namespace std;int main()int a=2;cout<<"This is a C+ program."<<1<<a;return 0;#include<iostream>using namespace std;int main()int a,b,sum;cin>>a>>b;sum=a+b;cout<<"a+b="<<sum<<endl;return 0;程序功能:求a和b两个数之和。程序注释:(1)输入语句:cin>>a>>b; cin:输入流对象>>:提取运算符C+中的输入、输出比C更简洁,无需格式控制。输入时用空格或者回车分隔都可以。若想输入一个整数,一个实数,一个字符怎么写?#include<iostream>using namespace std;int main()int a;float b;char c;cin>>a>>b>>c;cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;cout<<"c="<<c<<endl;return 0;或者#include<iostream>using namespace std;int main()int a;float b;char c;cin>>a>>b>>c;cout<<"a="<<a<<endl<<"b="<<b<<endl<<"c="<<c<<endl;return 0;(2)/C+的注释符,若注释内容较少,一行即可,那么可以使用/,若注释内容较多,需要多行,那么使用/* */。(3)endl是回车换行符,与n的作用一样。#include<iostream>using namespace std;int max(int x, int y)int z;if(x>y) z=x;else z=y;return(z);int main()int a,b,m;cin>>a>>b;m=max(a,b);cout<<"max="<<m<<'n'return 0;程序功能:给两个数x和y,求两数中的大者。程序解释:(1)与C完全一致。涉及到子函数和主函数。#include<iostream>using namespace std;class Studentprivate: int num; int score;public: void setdata() cin>>num; cin>>score; void display() cout<<"num="<<num<<endl; cout<<"score="<<score<<endl; ;Student stud1,stud2;int main()stud1.setdata();stud2.setdata();stud1.display();stud2.display();return 0;程序功能:定义一个学生类和两个学生对象,输入并显示这两个学生的学号和成绩。程序解释:(1)class Student 类的定义class是类定义的关键字。 Student是我们自定义的类名。(2)private和public private后定义的内容(包括数据和函数)只允许类的成员函数使用,类外不能使用。例如: int main() cout<<stud1.num; stud1.setdata(); stud2.setdata(); stud1.display(); stud2.display(); return 0;错误提示:error c2248:num: cannot access private member declared in class Student(3)类中包含了数据和函数 与结构体的最大区别。(4)Student stud1,stud2; 定义两个学生对象 类是抽象的,而对象是具体的。(5)stud1.setdata(); stud2.setdata(); stud1.display(); stud2.display();调用学生类的成员函数,对两个学生对象赋值并显示。(6)思考:如何定义新学生对象stud3,学号1003,分数80。四、C+对C的扩充1、函数的重载(1)重载是什么意思?(2)为什么C+要增加重载?(3)重载分为函数重载:在同一作用域中用同一函数名定义多个函数,这些函数的参数个数和参数类型不相同。运算符重载:第十章介绍(4)实例:求两个/三个数中最大的数(数值类型可以为整型、实型、长整型)。用C实现必须定义6个子函数。® int max1(int a, int b, int c);® float max2(float a, float b, float c);® long max3(long a, long b, long c);® int max4(int a, int b);® float max5(float a, float b);® long max6(long a, long b);int max1(int a, int b, int c)if(b>a) a=b;if(c>a) a=c;return a;int max4(int a, int b)if(a>b) return a; else return b;而C+通过函数重载,可以使用同一个函数名,实现上述六个子函数的功能。® int max(int a, int b, int c);® float max(float a, float b, float c);® long max(long a, long b, long c);® int max(int a, int b);® float max(float a, float b);® long max(long a, long b);程序代码:#include<iostream>using namespace std;int max(int a, int b, int c)if(b>a) a=b;if(c>a) a=c;return a;float max(float a, float b, float c)if(b>a) a=b;if(c>a) a=c;return a;int main()int a,b,c;float d,e,f;cin>>a>>b>>c;cout<<max(a,b,c);cout<<endl;cin>>d>>e>>f;cout<<max(d,e,f);/cout<<max(1.1,1.2,1.3);return 0;注意:语句cout<<max(1.1,1.2,1.3); 编译器提示错误。error C2668: 'max' : ambiguous call to overloaded function作业:P16P175、6、7、8、9、10第二讲第8章 类和对象一、面向过程的程序设计方法和面向对象的程序设计方法1、程序功能 对学生基本信息(学号、姓名、性别)进行输入输出。2、面向过程的程序设计方法#include<iostream>using namespace std;struct Studentint num;char name20;char sex;Student get_information()Student stud;int i;cout<<"num="cin>>stud.num;cout<<"name="i=0;cin>>stud.name0;while(stud.namei!='#')i+;cin>>stud.namei;cout<<"sex="cin>>stud.sex;return stud;void display(Student stud)int i;cout<<"num:"<<stud.num<<endl;cout<<"name:"i=0; while(stud.namei!='#') cout<<stud.namei; i+; cout<<endl;cout<<"sex:"<<stud.sex<<endl;int main()Student stud1;stud1=get_information();display(stud1);return 0;程序运行结果:3、面向对象的程序设计方法#include<iostream>using namespace std;class Studentprivate:int num; char name20; char sex;public: void get_information() int i; cout<<"num=" cin>>num; cout<<"name=" i=0; cin>>name0; while(namei!='#') i+; cin>>namei; cout<<"sex=" cin>>sex; void display( ) int i; cout<<"num:"<<num<<endl; cout<<"name:" i=0; while(namei!='#') cout<<namei; i+; cout<<endl; cout<<"sex:"<<sex<<endl; ;int main()Student stud1;stud1.get_information();stud1.display();return 0;程序运行结果:程序解释:(1)类如何定义(包括数据和对数据的操作,数据的操作用函数来实现,它们之间的关系更加紧密。)(2)private和public的作用(3)类与结构体的区别(4)定义对象的方法(类是抽象的,而对象是具体的)(5)面向过程的程序设计中,数据与数据的操作是分离的,而面向对象的程序设计中,封装的思想用类来实现。二、类的成员函数1、类的成员函数与一般函数的区别 它是属于一个类的成员,出现在类体中。 它可以被指定为私有的,也可以被指定为公用的。将需要被外界调用的成员函数指定为public。无需或不能被外界调用的成员函数指定为私有的。例如:#include<iostream>using namespace std;class Studentprivate:int num; char name20; char sex; void get_name() int i; i=0; cin>>name0; while(namei!='#') i+; cin>>namei; public: void get_information() cout<<"num=" cin>>num; cout<<"name=" get_name(); cout<<"sex=" cin>>sex; void display( ) int i; cout<<"num:"<<num<<endl; cout<<"name:" i=0; while(namei!='#') cout<<namei; i+; cout<<endl; cout<<"sex:"<<sex<<endl; ;int main()Student stud1;stud1.get_information();stud1.display();return 0;程序运行结果:或者:#include<iostream>using namespace std;class Studentprivate:int num; char name20; char sex; void get_name() int i; i=0; cin>>name0; while(namei!='#') i+; cin>>namei; void display_name() int i; i=0; while(namei!='#') cout<<namei; i+; public: void get_information() cout<<"num=" cin>>num; cout<<"name=" get_name(); cout<<"sex=" cin>>sex; void display( ) cout<<"num:"<<num<<endl; cout<<"name:" display_name(); cout<<endl; cout<<"sex:"<<sex<<endl; ;int main()Student stud1;stud1.get_information();stud1.display();return 0;程序运行结果:思考:对于姓名的输入、输出很麻烦,如果有已经设计好的字符串类,可以直接进行输入和输出就非常方便。例如:#include<iostream>#include<string>using namespace std;class Studentprivate:int num; string name; char sex; public: void get_information() cout<<"num=" cin>>num; cout<<"name=" cin>>name; cout<<"sex=" cin>>sex; void display( ) cout<<"num:"<<num<<endl; cout<<"name:" <<name<<endl; cout<<"sex:"<<sex<<endl; ;int main()Student stud1;stud1.get_information();stud1.display();return 0;程序运行结果:注意与未使用string类的区别。2、类外定义成员函数#include<iostream>#include<string>using namespace std;class Studentprivate:int num; string name; char sex;public: void get_information();void display( );void Student:get_information() cout<<"num=" cin>>num; cout<<"name=" cin>>name; cout<<"sex=" cin>>sex; void Student:display( ) cout<<"num:"<<num<<endl; cout<<"name:"<<name<<endl; cout<<"sex:"<<sex<<endl; int main()Student stud1;stud1.get_information();stud1.display();return 0;程序运行结果:3、若增加一个教师类,教师信息包括教工号、姓名、性别,程序需要对教工信息进行输入、输出。#include<iostream>#include<string>using namespace std;class Studentprivate:int num; string name; char sex;public: void get_information();void display( );class Teacherprivate:int num; string name; char sex;public: void get_information();void display( );void Student:get_information() cout<<"Student_num=" cin>>num; cout<<"Student_name=" cin>>name; cout<<"Student_sex=" cin>>sex; void Student:display( ) cout<<"Student_num:"<<num<<endl; cout<<"Student_name:"<<name<<endl; cout<<"Student_sex:"<<sex<<endl; void Teacher:get_information() cout<<"Teacher_num=" cin>>num; cout<<"Teacher_name=" cin>>name; cout<<"Teacher_sex=" cin>>sex; void Teacher:display( ) cout<<"Teacher_num:"<<num<<endl; cout<<"Teacher_name:"<<name<<endl; cout<<"Teacher_sex:"<<sex<<endl; int main()Student stud1;Teacher tech1;stud1.get_information();cout<<endl;tech1.get_information();cout<<endl;stud1.display();cout<<endl;tech1.display();return 0;程序运行结果:三、对象成员的引用1、访问对象中的成员可以有3种方法:(1)通过对象名和成员运算符访问对象中的成员访问对象中成员的一般形式为:对象名. 成员名例如:stud1.num=1001;stud1.display( );(2)通过指向对象的指针访问对象中的成员class Time public: int hour; int minute;Time t, *p;p=&t;cout<<p->hour;(3)通过对象的引用变量访问对象中的成员class Time public: int hour; int minute;Time t1;Time &t2=t1;cout<<t2.hour;第三讲四、类和对象的简单应用举例1、例题8.1 最简单的例子 程序功能:输入输出时间(包括时、分、秒)。 源代码:#include<iostream>using namespace std;class Timepublic: int hour; int minute; int sec;int main()Time t1;cin>>t1.hour;cin>>t1.minute;cin>>t1.sec;cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl;return 0;运行结果:2、例题8.2 输入、输出多个时间。源程序:#include<iostream>using namespace std;class Timepublic: int hour; int minute; int sec;int main()Time t1;cin>>t1.hour;cin>>t1.minute;cin>>t1.sec;cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl;Time t2;cin>>t2.hour;cin>>t2.minute;cin>>t2.sec;cout<<t2.hour<<":"<<t2.minute<<":"<<t2.sec<<endl;return 0;程序运行结果:上述程序中有相同的代码段,因此可以使用子函数对时间进行输入、输出。源程序:#include<iostream>using namespace std;class Timepublic: int hour; int minute; int sec;int main()void set_time(Time &t);void show_time(Time &t);Time t1;set_time(t1);show_time(t1);Time t2;set_time(t2);show_time(t2);return 0;void set_time(Time &t)cin>>t.hour;cin>>t.minute;cin>>t.sec;void show_time(Time &t)cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;运行结果:对于上述程序的参数类型设置,需要特别注意。若将之改为:#include<iostream>using namespace std;class Timepublic: int hour; int minute; int sec;int main()void set_time(Time t);void show_time(Time t);Time t1;set_time(t1);show_time(t1);Time t2;set_time(t2);show_time(t2);return 0;void set_time(Time t)cin>>t.hour;cin>>t.minute;cin>>t.sec;void show_time(Time t)cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;运行结果为:这是不正确的。新知识点:有默认参数的函数定义:源程序:#include<iostream>using namespace std;class Timepublic: int hour; int minute; int sec;int main()void set_time(Time &t, int hour=0, int minute=0, int sec=0);void show_time(Time &t);Time t1;set_time(t1,12,23,34);show_time(t1);Time t2;set_time(t2);show_time(t2);return 0;void set_time(Time &t,int hour, int minute, int sec)t.hour=hour;t.minute=minute;t.sec=sec;void show_time(Time &t)cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;运行结果:对程序做如下改动:#include<iostream>using namespace std;class Timepublic: int hour; int minute; int sec;int main()void set_time(Time &t, int hour=0, int minute=0, int sec=0);void show_time(Time &t);Time t1;set_time(t1,12,23,34);show_time(t1);Time t2;set_time(t2,12);show_time(t2);Time t3;set_time(t3,12,23);show_time(t3);return 0;void set_time(Time &t,int hour, int minute, int sec)t.hour=hour;t.minute=minute;t.sec=sec;void show_time(Time &t)cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;运行结果为:体会默认参数的用法。3、例题8.3(类的定义和使用)源程序:#include<iostream>using namespace std;class Timepublic: void set_time(); void show_time();private: int hour; int minute; int sec;int main()Time t1;t1.set_time();t1.show_time();Time t2;t2.set_time();t2.show_time();return 0;void Time:set_time()cin>>hour;cin>>minute;cin>>sec;void Time:show_time()cout<<hour<<":"<<minute<<":"<<sec<<endl;运行结果:通过本例,学会面向对象的程序设计方法。4、例题8.4 找出一个整型数组中的元素的最大值。源程序:#include<iostream>using namespace

    注意事项

    本文(C++语言程序设计-谭浩强.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开