![C語言程序設計譚浩強_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/14/e9dad5b2-09da-4532-984d-c8fd322bdf3b/e9dad5b2-09da-4532-984d-c8fd322bdf3b1.gif)
![C語言程序設計譚浩強_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/14/e9dad5b2-09da-4532-984d-c8fd322bdf3b/e9dad5b2-09da-4532-984d-c8fd322bdf3b2.gif)
![C語言程序設計譚浩強_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/14/e9dad5b2-09da-4532-984d-c8fd322bdf3b/e9dad5b2-09da-4532-984d-c8fd322bdf3b3.gif)
![C語言程序設計譚浩強_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/14/e9dad5b2-09da-4532-984d-c8fd322bdf3b/e9dad5b2-09da-4532-984d-c8fd322bdf3b4.gif)
![C語言程序設計譚浩強_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/14/e9dad5b2-09da-4532-984d-c8fd322bdf3b/e9dad5b2-09da-4532-984d-c8fd322bdf3b5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第1章 C+的初步知識一、面向?qū)ο蟮幕靖拍顅 對象/實例(object/instance)v 類(class)v 封裝(encapsulation)v 繼承(inheritance)v 多態(tài)(polymorphism)v 重載(overload)v 消息(message)二、C+的開發(fā)運行環(huán)境1、Visual C+2、GCC:是一個用于Linux系統(tǒng)下編程的編譯器3、WinTC4、Dev-C+三、最簡單的C+程序1、例題1.1#include<iostream>using namespace std;int main()cout<<"This is a C+
2、 program."return 0;程序功能:輸出一行字符:This is a C+ program.程序注釋:(1)預處理命令#include<iostream> iostream輸入、輸出流(2)using namespace std; 使用命名空間std。 第一行和第二行是每個C+都有的語句。(3)C+的主函數(shù)名與C一樣,都是main。(4)C+的輸出使用cout<< cout是輸出流對象,<<是插入運算符。 若要輸出一個字符串,將要輸出的字符串寫在雙引號中;若要輸出一個整數(shù),<<1;若要輸出一個變量,<<a;例如:
3、#include<iostream>using namespace std;int main()int a=2;cout<<"This is a C+ program."<<1<<a;return 0;2、例題1.2#include<iostream>using namespace std;int main()int a,b,sum;cin>>a>>b;sum=a+b;cout<<"a+b="<<sum<<endl;return 0;程
4、序功能:求a和b兩個數(shù)之和。程序注釋:(1)輸入語句:cin>>a>>b; cin:輸入流對象>>:提取運算符C+中的輸入、輸出比C更簡潔,無需格式控制。輸入時用空格或者回車分隔都可以。若想輸入一個整數(shù),一個實數(shù),一個字符怎么寫?#include<iostream>using namespace std;int main()int a;float b;char c;cin>>a>>b>>c;cout<<"a="<<a<<endl;cout<<&
5、quot;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<<&q
6、uot;c="<<c<<endl;return 0;(2)/C+的注釋符,若注釋內(nèi)容較少,一行即可,那么可以使用/,若注釋內(nèi)容較多,需要多行,那么使用/* */。(3)endl是回車換行符,與n的作用一樣。3、例題1.3#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<<&qu
7、ot;max="<<m<<'n'return 0;程序功能:給兩個數(shù)x和y,求兩數(shù)中的大者。程序解釋:(1)與C完全一致。涉及到子函數(shù)和主函數(shù)。4、例題1.4#include<iostream>using namespace std;class Studentprivate: int num; int score;public: void setdata() cin>>num; cin>>score; void display() cout<<"num="<<num
8、<<endl; cout<<"score="<<score<<endl; ;Student stud1,stud2;int main()stud1.setdata();stud2.setdata();stud1.display();stud2.display();return 0;程序功能:定義一個學生類和兩個學生對象,輸入并顯示這兩個學生的學號和成績。程序解釋:(1)class Student 類的定義class是類定義的關(guān)鍵字。 Student是我們自定義的類名。(2)private和public private后定義的內(nèi)
9、容(包括數(shù)據(jù)和函數(shù))只允許類的成員函數(shù)使用,類外不能使用。例如: 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)類中包含了數(shù)據(jù)和函數(shù) 與結(jié)構(gòu)體的最大區(qū)別。(4)Student stud1,stud2; 定義兩個學生對象 類是抽象的,而對象是具體的。(5)stud1.
10、setdata(); stud2.setdata(); stud1.display(); stud2.display();調(diào)用學生類的成員函數(shù),對兩個學生對象賦值并顯示。(6)思考:如何定義新學生對象stud3,學號1003,分數(shù)80。四、C+對C的擴充1、函數(shù)的重載(1)重載是什么意思?(2)為什么C+要增加重載?(3)重載分為函數(shù)重載:在同一作用域中用同一函數(shù)名定義多個函數(shù),這些函數(shù)的參數(shù)個數(shù)和參數(shù)類型不相同。運算符重載:第十章介紹(4)實例:求兩個/三個數(shù)中最大的數(shù)(數(shù)值類型可以為整型、實型、長整型)。用C實現(xiàn)必須定義6個子函數(shù)。® int max1(int a, int b,
11、 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
12、 a; else return b;而C+通過函數(shù)重載,可以使用同一個函數(shù)名,實現(xiàn)上述六個子函數(shù)的功能。® 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>usi
13、ng 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<
14、;<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作業(yè):P16P175、6、7、8、9、10第二講第8章 類和對象一、面向過程的程序設計方法和面向?qū)ο蟮某绦蛟O計方法1、程序功能 對學生基本信息(學號、姓名、性別)進行輸入輸出。2、面向過程的程序設計方法#include<iostream>using names
15、pace 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>>0;while(i!='#')i+;cin>>i;cout<<"sex="cin>>stud.se
16、x;return stud;void display(Student stud)int i;cout<<"num:"<<stud.num<<endl;cout<<"name:"i=0; while(i!='#') cout<<i; i+; cout<<endl;cout<<"sex:"<<stud.sex<<endl;int main()Student stud1;stud1=
17、get_information();display(stud1);return 0;程序運行結(jié)果:3、面向?qū)ο蟮某绦蛟O計方法#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(
18、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:"<<
19、;sex<<endl; ;int main()Student stud1;stud1.get_information();stud1.display();return 0;程序運行結(jié)果:程序解釋:(1)類如何定義(包括數(shù)據(jù)和對數(shù)據(jù)的操作,數(shù)據(jù)的操作用函數(shù)來實現(xiàn),它們之間的關(guān)系更加緊密。)(2)private和public的作用(3)類與結(jié)構(gòu)體的區(qū)別(4)定義對象的方法(類是抽象的,而對象是具體的)(5)面向過程的程序設計中,數(shù)據(jù)與數(shù)據(jù)的操作是分離的,而面向?qū)ο蟮某绦蛟O計中,封裝的思想用類來實現(xiàn)。二、類的成員函數(shù)1、類的成員函數(shù)與一般函數(shù)的區(qū)別 它是屬于一個類的成員,出現(xiàn)在類體中。
20、它可以被指定為私有的,也可以被指定為公用的。將需要被外界調(diào)用的成員函數(shù)指定為public。無需或不能被外界調(diào)用的成員函數(shù)指定為私有的。例如:#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<
21、<"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
22、; cout<<"sex:"<<sex<<endl; ;int main()Student stud1;stud1.get_information();stud1.display();return 0;程序運行結(jié)果:或者:#include<iostream>using namespace std;class Studentprivate:int num; char name20; char sex; void get_name() int i; i=0; cin>>name0; while(namei!='
23、#') 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<&l
24、t;"num:"<<num<<endl; cout<<"name:" display_name(); cout<<endl; cout<<"sex:"<<sex<<endl; ;int main()Student stud1;stud1.get_information();stud1.display();return 0;程序運行結(jié)果:思考:對于姓名的輸入、輸出很麻煩,如果有已經(jīng)設計好的字符串類,可以直接進行輸入和輸出就非常方便。例如:#include
25、<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&
26、lt;<"num:"<<num<<endl; cout<<"name:" <<name<<endl; cout<<"sex:"<<sex<<endl; ;int main()Student stud1;stud1.get_information();stud1.display();return 0;程序運行結(jié)果:注意與未使用string類的區(qū)別。2、類外定義成員函數(shù)#include<iostream>#include<
27、;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; vo
28、id 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;程序運行結(jié)果:3、若增加一個教師類,教師信息包括教工號、姓名、性別,程序需要對教工信息進
29、行輸入、輸出。#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(
30、) 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<
31、;<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<<
32、"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.d
33、isplay();cout<<endl;tech1.display();return 0;程序運行結(jié)果:三、對象成員的引用1、訪問對象中的成員可以有3種方法:(1)通過對象名和成員運算符訪問對象中的成員訪問對象中成員的一般形式為:對象名. 成員名例如:stud1.num=1001;stud1.display( );(2)通過指向?qū)ο蟮闹羔樤L問對象中的成員class Time public: int hour; int minute;Time t, *p;p=&t;cout<<p->hour;(3)通過對象的引用變量訪問對象中的成員class Time pu
34、blic: 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
35、<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl;return 0;運行結(jié)果: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
36、.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;程序運行結(jié)果:上述程
37、序中有相同的代碼段,因此可以使用子函數(shù)對時間進行輸入、輸出。源程序:#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&
38、gt;>t.hour;cin>>t.minute;cin>>t.sec;void show_time(Time &t)cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;運行結(jié)果:對于上述程序的參數(shù)類型設置,需要特別注意。若將之改為:#include<iostream>using namespace std;class Timepublic: int hour; int minute; int
39、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<<&
40、quot;:"<<t.sec<<endl;運行結(jié)果為:這是不正確的。新知識點:有默認參數(shù)的函數(shù)定義:源程序:#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_
41、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;運行結(jié)果:對程序做如下改動:#include&l
42、t;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_ti
43、me(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;運行結(jié)果為:體會默認參數(shù)的用法。3、例題8.3(類的定義和使用)源程序:#include<iostream>u
44、sing 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<
45、;<hour<<":"<<minute<<":"<<sec<<endl;運行結(jié)果:通過本例,學會面向?qū)ο蟮某绦蛟O計方法。4、例題8.4 找出一個整型數(shù)組中的元素的最大值。源程序:#include<iostream>using namespace std;class Array_maxpublic: void set_value(); void max_value(); void show_value();private: int array10; int max;void Ar
46、ray_max:set_value()int i;for(i=0;i<10;i+)cin>>arrayi;void Array_max:max_value()int i;max=array0;for(i=1;i<10;i+)if(arrayi>max) max=arrayi;void Array_max:show_value()cout<<"max="<<max;int main()Array_max arrmax;arrmax.set_value();arrmax.max_value();arrmax.show_val
47、ue();return 0;運行結(jié)果:5、輸入、輸出點的坐標#include<iostream>using namespace std;class pointprivate: float Xcoord, Ycoord;public: void SetX(float x) Xcoord=x; void SetY(float y) Ycoord=y; float GetX() return Xcoord; float GetY() return Ycoord; ;int main()point p1;p1.SetX(1.1);p1.SetY(2.2);cout<<p1.Ge
48、tX()<<endl;cout<<p1.GetY()<<endl;return 0; 運行結(jié)果:6、設計一個棧。#include<iostream>using namespace std;const int maxsize=6;#define false 0#define true 1class stackprivate: float datamaxsize; int top; public: int set_null_stack(void); int empty(void); void push(float a); float pop(void
49、); void show(); ;int stack:set_null_stack(void)top=-1;cout<<"stack initialized."<<endl;return 0;int stack:empty(void)if (top<0) cout<<"stack is empty."return true;else cout<<"stack is not empty."return false;void stack:push(float a)if(top=maxs
50、ize-1)cout<<"Stack overflow!"<<endl;else datatop+1=a; top+; float stack:pop(void)if(top=-1)cout<<"An empty stack!"<<endl;return 0;else top-; cout<<"Stack top:"return datatop+1; void stack:show()for(int i=0;i<=top;i+)cout<<datai<
51、<endl;int main()stack s1;s1.set_null_stack();for( int i=0; i<=maxsize-1; i+) s1.push(2*i);cout<<endl;s1.show();cout<<s1.pop()<<endl;return 0; 運行結(jié)果:完成第1章和第8章的習題。第四講 習題講解第1章 C+初步知識 習題5、分析下面程序運行的結(jié)果。#include<iostream>using namespace std;int main( )cout<<"This&quo
52、t;<<"is"cout<<"a"<<"C+"cout<<"program."<<endl; return 0;6、分析下面程序運行的結(jié)果。#include<iostream>using namespace std;int main( )int a,b,c;a=10;b=23;c=a+b;cout<<"a+b="cout<<c;cout<<endl;return 0;7、分析下面程序運行的
53、結(jié)果。#include<iostream>using namespace std;int main( )int a,b,c;int f(int x, int y, int z);cin>>a>>b>>c;c=f(a,b,c);cout<<c<<endl;return 0;int f(int x, int y, int z)int m;if(x<y) m=x;else m=y;if(z<m) m=z;return(m);8、下列程序是否有錯誤。int main(); int a,b; c=a+b; cout>>"a+b=">>a+b;錯誤的地方:(1) main()后有分號;(2) 無a、b的輸入語句;(3) 無c的定義;(4) 缺少#include<iostream>using namespace std;(5) cout后應為<<。9、正確程序#include<iostream>using
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年計算器及貨幣專用設備合作協(xié)議書
- 2025年棕、藤、草制品合作協(xié)議書
- 2025年壓力校驗器合作協(xié)議書
- 2025年高壓化成箔合作協(xié)議書
- 2022-2023學年山東省德州市夏津縣四年級(上)期末數(shù)學試卷
- 惠州惠東縣幼兒教師招聘幼兒考試試題及答案
- 滬教版四年級下冊數(shù)學小數(shù)的加減法測試題
- 歷年高級財務會計試題及部分答案
- 四年級下冊人教版數(shù)學教學計劃
- 2025年交通事故一次性終結(jié)賠償協(xié)議范文(2篇)
- 2025年魯泰集團招聘170人高頻重點提升(共500題)附帶答案詳解
- 2024-2025學年成都高新區(qū)七上數(shù)學期末考試試卷【含答案】
- 企業(yè)員工食堂管理制度框架
- 電力溝施工組織設計-電纜溝
- 2024年煤礦安全生產(chǎn)知識培訓考試必答題庫及答案(共190題)
- 《法律援助》課件
- 2024年山東鐵投集團招聘筆試參考題庫含答案解析
- (完整word版)中國銀行交易流水明細清單模版
- 軟件功能點估算.xls
- 燃氣輪機LM2500介紹
- (精選)淺談在小學數(shù)學教學中如何進行有效提問
評論
0/150
提交評論