C++-結構化程序設計(兼容-C語言)教學課件_第1頁
C++-結構化程序設計(兼容-C語言)教學課件_第2頁
C++-結構化程序設計(兼容-C語言)教學課件_第3頁
C++-結構化程序設計(兼容-C語言)教學課件_第4頁
C++-結構化程序設計(兼容-C語言)教學課件_第5頁
已閱讀5頁,還剩28頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C++結構化程序設計(兼容C語言)51、山氣日夕佳,飛鳥相與還。52、木欣欣以向榮,泉涓涓而始流。53、富貴非吾愿,帝鄉不可期。54、雄發指危冠,猛氣沖長纓。55、土地平曠,屋舍儼然,有良田美池桑竹之屬,阡陌交通,雞犬相聞。C++結構化程序設計(兼容C語言)C++結構化程序設計(兼容C語言)51、山氣日夕佳,飛鳥相與還。52、木欣欣以向榮,泉涓涓而始流。53、富貴非吾愿,帝鄉不可期。54、雄發指危冠,猛氣沖長纓。55、土地平曠,屋舍儼然,有良田美池桑竹之屬,阡陌交通,雞犬相聞。第1章

C++結構化程序設計(兼容C語言)1.1C++簡介隨著C語言應用的推廣,C語言存在的一些缺陷或不足也開始流露出來,并受到大家的關注。如:C語言對數據類型檢查的機制比較弱;缺少支持代碼重用的結構;隨著軟件工程規模的擴大,難以適應開發特大型的程序1.3第一個簡單的C++程序#include<iostream.h>intmain(){ cout<<"HelloWorld!"<<endl; return1;}1.4C++的數據類型C++(C)中的數據類型分為常量和變量,C++中的基本數據類型有:關鍵字常量表示占用字節數(vc中)整型長整型long(int)24整型int4短整型short(int)2字符型char‘a’1實型單精度float2.0f4雙精度double2.08邏輯型booltruefalse1#include<iostream.h>intmain(){ intiV1=2; intiV2=iV1; cout<<"iV1="<<iV1<<endl<<"iV2="<<iV2<<endl;cout<<sizeof(int)<<endl<<sizeof(2)<<endl<<sizeof(iV1)<<endl; return1;}1.5程序結構1.5.1順序結構1.5.2選擇結構(a)關系運算符:<,<=,>,>=,==,!=.關系表達式:例2>1,2+1==3關系表達式返回一個邏輯值0或1(b)邏輯運算符:與&&,或||,非!邏輯表達式:例2>1&&3>20&&32>3||4>3!(2>4)if(邏輯表達式){程序語句1;}程序語句2;if(邏輯表達式){程序語句1;}else{程序語句2;}if(邏輯表達式){程序語句1;}elseif(邏輯表達式){程序語句2;}例:從鍵盤輸入兩個整數,輸出這兩個數中最大者;#include<iostream.h>intmain(){ inta; intb; cin>>a>>b;

if(a>b) cout<<a; else cout<<b<<"isthebigger!"<<endl; return1;}

對于簡單的選擇結構可直接用條件運算符?#include<iostream>usingnamespacestd;intmain(){ inta; intb; cin>>a>>b; intc=(a>b)?a:b; cout<<c<<"isthebigger"<<endl; return1;}(表達式1)?(表達式2):(表達式3)多分支選擇結構switch語句chargrade; cin>>grade; switch(grade) { case'a':cout<<"80--90"<<endl;break; case'b':cout<<"70--80"<<endl;break; case'c':cout<<"60--70"<<endl;break; case'd':cout<<"<60"<<endl;break; default:cout<<"error"<<endl; }1.5.3循環結構while(表達式){語句塊}do{語句塊}while(表達式)inti=1; intsum=0; while(i<=100) { sum+=i; i++; }inti=1; intsum=0;

do { sum+=i; i++; }while(i<=100);for(表達式1;表達式2;表達式3){語句塊}intmain(){ intsum=0; for(inti=1;i<=100;i++) { sum+=i; } cout<<sum<<endl<<i<<endl; return1;}表達式1表達式2語句塊真表達式3假1.6.1一維數組的定義1.6數組類型數組名[常量表達式]inta[10]charb[10+5]數組維數不能為變量(必須在編譯時就確定)inta;cin>>a;int[a];#defineNUM10inta[NUM];例:用一維數組輸出Fibonacci數列的前20項1,1,2,3,5,8,……#include<iostream>usingnamespacestd;intmain(){ intFib[20]={1,1}; for(inti=2;i<20;i++) { Fib[i]=Fib[i-1]+Fib[i-2]; }

for(intj=0;j<20;j++) { if(j%5==0) cout<<endl; cout<<Fib[j]<<""; }}

1.6.2多維數組的定義類型數組名[常量表達式][常量表達式]……inta[10][10]intmain(){ inta[4][5]; for(inti=0;i<4;i++) { for(intj=0;j<5;j++) { a[i][j]=i*j; cout<<a[i][j]<<""; } cout<<endl; }}1.6.3字符數組與字符串例charc[4]={‘a’,’b’,’c’,’\0’};C(C++)中把字符數組當作字符串處理charc[5]="abcd";//c[4]=‘\0’cout<<c;//其它類型數組不能cout數組名來輸出所有元素1.7函數1.7.1函數的定義返回類型函數名(形參列表){函數體語句塊;}例求兩個int形數據的最大值的函數intmax(inta,intb){if(a>=b)returna;elsereturnb}C(C++)都是以函數調用來組織程序,都有一個入口函數main,c中main函數的返回類型為void。C++標準規定main有一個整形返回值。但有的C++編譯器,(如VC6.0)也支持void返回值的main函數。1.7.2函數的調用調用函數時的數據傳遞(形參與實參)形參:定義函數時函數名后的括號中的變量。實參:函數調用時函數名后的括號中的變量或常量。#include<iostream.h>intmax(inta,intb){ if(a>=b) returna; else returnb;}intmain(){ intc; intma=2; intmb=5; c=max(ma,mb); cout<<c<<endl;}此處的a,b為形參此處的ma,mb為實參a.)定義函數時并不為函數中的變量分配內存空間,而是在函數調用時在內存的棧區為函數分配空間來存放函數中的變量。b.)函數調用時將實參的值復制給被調函數棧中的形參,然后對形參的值進行加工處理后以函數返回值的形傳給主調函數。所以函數就是一個數據加工廠,吸收原料加工產品。1.7.3函數的申明當被調函數定義在主調函數之后時,要在調用語句以前對被調函數進行申明,格式如下:返回類型函數名(形參表);#include<iostream>intmax(inta,intb);intmain(){ intc; inta=2; intb=5; c=max(a,b); cout<<c<<endl; return0;}intmax(inta,intb){ if(a>=b) returna; else returnb;}a)函數申明可以放在調用語句之前的任何地方。b)如果只有函數的申明而沒有函數的定義或函數的申明與定義形式不一致。則編譯無錯,而鏈接有錯。1.7.4函數的遞歸調用函數的遞歸調用:在調用一個函數的過程中又出現直接或間接地調用該函數本身。函數f調用函數f函數f1調用函數f2函數f2函數f1直接遞歸調用間接遞歸調用例:定義求n!的遞歸函數n=0n>0#include<iostream.h>intfactorial(intn);intmain(){ cout<<factorial(3)<<endl;}intfactorial(intn){ if(n==0) return1; else returnn*factorial(n-1);}factorial(3)factorial(2)factorial(1)1.8指針1.8.1地址和指針地址:定義了一個變量,運行時就按照變量的類型為變量分配一定字節的內存單元。內存區的每一個字節都有一個編號。首字節的編號就稱為變量的地址。在變量名前加一個&符就表示該變量的地址。(例如&a)指針:專門用來存放變量地址的變量。指針變量的定義:類型*指針變量名例如:int*pI;1.8.2指針的應用#include<iostream.h>intmain(){ inta=2; int*pa=&a;//pa指向了變量a cout<<"a="<<a<<"*pa="<<*pa<<endl; *pa=5;//指針的間接應用 cout<<"a="<<a<<endl; a=7; cout<<"*pa="<<*pa<<endl;}a)數組名代表了數組的首地址。b)指針或變量+1等于將其向后移動它所指向的變量所占的字節數。#include<iostream>usingnamespacestd;intmain(){ inta[5]={2,6,3,4,5}; for(int*pa=a;pa<a+5;pa++) cout<<*pa<<","; cout<<endl; return0;}1.8.3指針變量作為函數參數#include<iostream>usingnamespacestd;voidswap(int*a,int*b);intmain(){ inta=2,b=4; swap(&a,&b); cout<<"a="<<a<<"b="<<b<<endl;}voidswap(int*pa,int*pb){ inttemp=*pa; *pa=*pb; *pb=temp;}a)如果以傳值方式調用函數,則被調函數只能以返回值來影響主調函數。而以傳指針方式調用函數可以在被調函數中通過指針修改主調函數中的變量值。voidswap(inta,intb){ inttemp=a; a=b; b=temp;}voidswap(int*a,int*b){ int*temp=a; a=b; b=temp;}若將swap函數改為如下兩個可以不?1.8.4字符指針表示的字符串字符串的表示(1)字符數組例chara[]=“abcd”;cout<<a<<endl;//字符串cout<<*a;//字符(2)字符指針例char*pc=“abcd”;cout<<pc<<endl;cout<<*pc<<endl;使用字符指針和字符數組來表示字符串的區別:字符數組名為地址,是常量,所以不能先定義字符數組,然后再賦值。字符指針是變量,所以可以先定義字符指針,然后再賦值。chara[10];a=“abcdefg”;錯誤char*p;p=“abcdefg”;正確1.9結構體為了表示大型的數據結構,有時需要將若干基本數據類型復合起來表示一個數據類型。C、C++提供了結構體來讓用戶自己定義數據類型。struct結構體名{成員列表;};//末尾要加分號例:structPeople{charname[20]; intsex;intid;};1.9.1結構體類型的定義1.9.2結構體變量的定義與初始化結構體類型是用戶自定義的類型。它的作用如同基本類型(int,char等)一樣,定義了好了結構體類型以后就可以用它來定義變量了。也可以定義結構體變量數組,指針。C形式:structPeoplep1;C++形式:Peoplep1;也可以在定義結構體類型的同時定義變量。structPeople{charname[20]; intsex; charid[18];}p1,p2;1.9.3結構體變量的初始化結構體變量的初始化可以在定義變量時以類似數組初始化的方式初始化,也可以在定義變量后單個成員

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論