




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1第1章C++語言簡介1.1C++程序的基本結(jié)構(gòu)1.2算法與程序1.3C++程序的基本要素1.4分析問題、編碼和運(yùn)行21.1C++程序的基本結(jié)構(gòu)
例1-1第一個(gè)C++程序,在計(jì)算機(jī)屏幕上顯示:
HelloWorld!//Example1-1:屏幕上顯示:HelloWorld!#include<iostream> usingnamespacestd; intmain() { cout<<"HelloWorld!"<<endl; return0; }3結(jié)構(gòu)分析1、C++程序由函數(shù)組成。該程序只由一個(gè)主函數(shù)main()構(gòu)成。2、一對(duì)花括號(hào)“{}”是函數(shù)的定界符。3、函數(shù)由語句組成語句用分號(hào)結(jié)束;41.2算法與程序算法:也就是解決問題的方案。舉例:給定兩個(gè)正整數(shù)p和q,求其最大公因數(shù)?古希臘數(shù)學(xué)家歐幾里德的算法:步驟1:如果p<q,交換p和q步驟2:求p/q的余數(shù)r步驟3:如果r=0,則q就是所求的結(jié)果如果r!=0,做如下工作:
令p=q,q=r,重復(fù)步驟2、3,直到r=0為止5例1.2按照歐幾里德算法編程//Example1-2:計(jì)算兩個(gè)正整數(shù)的最大公因數(shù)#include<iostream> usingnamespacestd; intmain(){ //說明三個(gè)整型變量p,q,r intp,q,r; //提示用戶由鍵盤輸入兩個(gè)正整數(shù)
cout<<"Pleaseinputtwointegers:"<<endl; cin>>p>>q;6接上頁: //如果p<q,交換p和q if(p<q) { r=p; p=q; q=r; } //計(jì)算p除以q的余數(shù)r r=p%q;7接上頁: //只要r不等于0,重復(fù)進(jìn)行下列計(jì)算
while(r!=0) { p=q; q=r; r=p%q; } //輸出結(jié)果
cout<<"Themaximumcommondivisoris"<<q<<"."<<endl; return0;}81.3C++程序的基本要素一、C++關(guān)鍵詞asm,auto,bad_cast,bad_typed,bool,break,case,catch,char,class,const,const_cast,continue,default,delete,do,double,dynamic_cast,else,enum,except,extern,explicit,false,finally,float,for,friend,goto,if,inline,int,long,mutable,namespace,new,operator,private,9C++關(guān)鍵詞(續(xù))protected,public,register,reinterpret_cast,return,short,signed,sizeof,static,static_cast,struct,switch,template,this,throw,try,type_info,typedef,typeid,union,unsigned,using,virtual,void,volatile,while10二、注釋1、多行注釋:/*注釋內(nèi)容*/2、單行注釋://注釋內(nèi)容11三、輸入和輸出(1)標(biāo)準(zhǔn)輸入流對(duì)象cin格式:cin>>v1>>v2>>v3…說明:1)>>稱為提取運(yùn)算符2)V1、V2、V3是已定義的變量3)輸入多個(gè)數(shù)據(jù),數(shù)據(jù)之間可以用空格、回車鍵或Tab分開12(2)標(biāo)準(zhǔn)輸出流對(duì)象cout格式:cout<<E1<<E2<<E3…1)<<稱為插入運(yùn)算符2)輸出表達(dá)式E1、E2、E3例如:cout<<"Hello";//字符串常量
cout<<4;//常量
cout<<a;//輸出變量的值
cout<<a+6;//先計(jì)算后輸出131.4分析問題、編碼、運(yùn)行1.算法研制2.編寫程序;3.編輯源程序4.編譯和連接5.反復(fù)上機(jī)調(diào)試程序,直到改正了所有的編譯錯(cuò)誤和運(yùn)行錯(cuò)誤。6.運(yùn)行。14例1-3加法計(jì)算器程序#include<iostream>usingnamespacestd; intmain(){ doublea,b,c; cout<<"Pleaseinputtwonumbers:"; cin>>a>>b; c=a+b; cout<<a<<"+"<<b<<"="<<c<<endl; return0;}151-4:顯示生日卡#include<iostream>usingnamespacestd; intmain(){ charname1[41],name2[41]; cout<<endl<<"Pleaseinputyourfriend'sname:"; cin>>name1; cout<<endl<<"Pleaseinputyourname:"; cin>>name2;16 cout<<endl<<"===================================="<<endl; cout<<"Mydear"<<name1<<","<<endl; cout<<"Happybirthdaytoyou!"<<endl; cout<<"yours,"<<endl; cout<<""<<name2<<endl; cout<<"===================================="<<endl; return0;}17例1-5:用梯形法計(jì)算定積分使用梯形法計(jì)算定積分,其中a=0,b=1,被積函數(shù)為sin(x),取積分區(qū)間等分?jǐn)?shù)為1000。abxyf(x)xixi+1h梯型面積=(上底+下低)x高218//Example#include<iostream>#include<cmath> usingnamespacestd; intmain(){ doublea,b;doubleh; doublesum; intn; inti; a=0.0; b=1.0; n=1000; h=(b-a)/n; sum=(sin(a)+sin(b))/2;19
for(i=1;i<n;i=i+1) sum=sum+sin(a+i*h); sum=sum*h; cout<<"Theresultis"<<sum<<endl; return0;}20例1-6:計(jì)算星球之間的萬有引力#include<iostream>usingnamespacestd; doublegrav(doublem1,doublem2,doubledistance){ doubleg,G=6.67E-11; g=G*m1*m2/(distance*distance); returng; }21intmain(){doubleGse,Gme,Msun,Mearth,Mmoon,Dme; Msun=1.987E30; //太陽質(zhì)量1.987×1030千克Mearth=5.975E24; //地球質(zhì)量5.975×1024千克Gse=grav(Msun,Mearth,1.495E11);//太陽與地球兩者間距1.495×1011米
cout<<"Thegravitationbetweensunandearthis"<<Gse<<"N."<<endl; Mmoon=7.348E22; //月亮質(zhì)量7.348×1022千克Dme=3.844E5; //月亮與地球兩者間距3.844×105米
Gme=grav(Mmoon,Mearth,Dme); cout<<"Thegravitationbetweenmoonandearthis"<<Gme<<"N."<<endl; return0;}22學(xué)好計(jì)算機(jī)的唯一途徑是
你的編程能力與你在計(jì)算機(jī)上投入的時(shí)間成
結(jié) 束 語上機(jī)練習(xí)正比23第2章基本數(shù)據(jù)類型與表達(dá)式2.1數(shù)據(jù)類型2.2常量2.3變量2.4運(yùn)算符與表達(dá)式1.算術(shù)運(yùn)算符和算術(shù)表達(dá)式2.關(guān)系運(yùn)算符和關(guān)系表達(dá)式3.邏輯運(yùn)算符和邏輯表達(dá)式4.賦值運(yùn)算符和賦值表達(dá)式5.自增運(yùn)算符和自減運(yùn)算符2.5表達(dá)式中各運(yùn)算符的運(yùn)算順序2.6類型不同的數(shù)據(jù)之間的混合算術(shù)運(yùn)算程序設(shè)計(jì)舉例242.1數(shù)據(jù)類型C++的數(shù)據(jù)有兩種:常量和變量。常量通過本身的書寫格式就說明了該常量的類型;變量必須先說明其類型,否則程序無法為該變量分配存儲(chǔ)空間。在計(jì)算機(jī)中為了區(qū)別不同的數(shù),使用了不同的表示方法。包括:整數(shù)的表示實(shí)數(shù)的表示字符數(shù)據(jù)的表示數(shù)組的表示25數(shù)據(jù)類型計(jì)算機(jī)只能存放二進(jìn)制數(shù)據(jù)。不同類型的事物如何區(qū)分和描述?由此產(chǎn)生數(shù)據(jù)類型。不同類型的數(shù)據(jù)占據(jù)不同長度的存儲(chǔ)單元。不同類型的數(shù)據(jù)對(duì)應(yīng)不同的值域范圍。不同類型的數(shù)據(jù)對(duì)應(yīng)不同的操作(運(yùn)算)及規(guī)則。數(shù)據(jù)類型越豐富,求解能力越強(qiáng)大。26圖2.1C++的數(shù)據(jù)類型27基本數(shù)據(jù)類型
數(shù)據(jù)類型類型說明浮占用字節(jié)字符型 char1個(gè)短整數(shù) short2個(gè)整型 int4個(gè)浮點(diǎn)型 float4個(gè)雙精度型 double8個(gè)28數(shù)據(jù)在計(jì)算機(jī)中的存放數(shù)據(jù)在計(jì)算機(jī)中采用二進(jìn)制存放;一個(gè)字節(jié)8個(gè)二進(jìn)制位,示意圖如下:數(shù)的表示范圍:-2^7~2^7-1(-128~127)顯然,一個(gè)字節(jié)表示數(shù)的范圍是有限的。要表示更大范圍內(nèi)的數(shù),就要使用多個(gè)字節(jié)。7029整數(shù)的存儲(chǔ)格式字符型短整型
短整數(shù)表示范圍為:-2^15~2^15-1(-32768~32767)長整型
長整數(shù)表示范圍為:-2^31~2^31-17015870312423161587030實(shí)數(shù)的表示實(shí)數(shù)也稱為浮點(diǎn)數(shù),用于表示小數(shù);有兩種形式:十進(jìn)制形式:xxxxx.xxxx指數(shù)形式:xxx.Exx一般浮點(diǎn)數(shù)的可以達(dá)到7位有效數(shù)字。例如1234.567。雙精度浮點(diǎn)數(shù)的有效位數(shù)可以達(dá)到15~16位。尾數(shù)部分指數(shù)部分3124231615870312.2常量1.整型常量8進(jìn)制常量,例04400,0777,010010進(jìn)制常量,例230416進(jìn)制常量,0x900,0xABC,0xffff2.實(shí)型常量0.0,
2.68,3.141593,637.312,32767.0,
32768.0,…0.0E0,
6.226E
4,1.267E20,…323.字符型常量字符常量,例'a','A','1','','+',轉(zhuǎn)義常量'\n'(換行),'\r'(回車),'\t'(橫向跳格),'\''(單引號(hào)),…4.字符串常量"VisualC++","12.34","Thisisastring.\n",…5.布爾型常量整數(shù)0表示false,1表示true332.3變量一.變量定義格式:<類型說明符><變量名1>;例:charc1,c2; //說明了2個(gè)字符型變量inti,j,k; //說明了3個(gè)整型變量longlen; //說明了1個(gè)長整型變量
floataverage,sum; //說明了兩個(gè)浮點(diǎn)類型的變量
doubledistance,weight; //說明了兩個(gè)雙精度類型的變量34二.變量(標(biāo)識(shí)符)命名命名規(guī)則:(1)變量名只能由字母、數(shù)字或下劃線組成;(2)變量名的第一個(gè)字符必須是字母或下劃線;(3)變量名長度不超過32個(gè)字符(TC);(4)不要用保留字定義變量名(有32個(gè)保留字)。合法變量名:
a、b1、_area、employee_name不合法變量名:1-name、maxone、float、*account35三.變量初始化定義變量時(shí)賦值例如:charc=‘A’;intcount=0;intcount(0);362.4運(yùn)算符與表達(dá)式運(yùn)算是數(shù)據(jù)的加工過程。記述不同運(yùn)算的符號(hào)稱為運(yùn)算符。參加運(yùn)算的數(shù)據(jù)稱為操作數(shù)或運(yùn)算數(shù)。由運(yùn)算符運(yùn)算符和運(yùn)算數(shù)組成的式子是表達(dá)式。不同類型的表達(dá)式按不同運(yùn)算規(guī)則進(jìn)行計(jì)算37一、算術(shù)運(yùn)算符和算術(shù)表達(dá)式算術(shù)運(yùn)算符:+ - */%運(yùn)算對(duì)象:數(shù)值變量、常數(shù)、函數(shù)、表達(dá)式等計(jì)算結(jié)果:數(shù)值優(yōu)先級(jí):先乘、除、取余,后加、減結(jié)合性:從左至右注意事項(xiàng):5X2
應(yīng)寫成5*X*X(x+y)(x-y)改為(x+y)*(x-y)38二.關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算是對(duì)兩個(gè)運(yùn)算數(shù)進(jìn)行大小關(guān)系等的比較。關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式(可以是算術(shù)表達(dá)式或關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、字符表達(dá)式)連接起來的式子。39運(yùn)算符名稱例子關(guān)系>大于a>ba大于b<小于a<ba小于b==等于a==ba等于b!=不等于a!=ba不等于b>=大于等于a>=ba大于等于b<=小于等于a<=ba小于等于b40關(guān)系表達(dá)式計(jì)算結(jié)果邏輯值(true和false)。c++語言沒有邏輯型數(shù)據(jù)以“非0”代表“真”,以“0”代表“假”。例如,“5==3”的值為“假”;“5>=0”的值為“真”優(yōu)先級(jí):{>,>=,<,<=}高于{==,!=}41三.邏輯運(yùn)算符和邏輯表達(dá)式計(jì)算結(jié)果:邏輯值(“真”和“假”)優(yōu)先級(jí):!>&&>||賦值運(yùn)算<&&、||
<關(guān)系運(yùn)算<算術(shù)運(yùn)算<?。ǚ牵┻\(yùn)算對(duì)象:算術(shù)、關(guān)系、賦值、字符及邏輯表達(dá)式運(yùn)算符名稱例子關(guān)系!邏輯非!a非a&&邏輯與a&&ba與b||邏輯或a||ba或b42舉例x*y>z&&x*y<100||-*y>0&&!isgreat(z)判別閏年表達(dá)式:(year%4==0&&year%100!=0)||year%400==0xc或xb至少之一成立
x<=c||x>=b43i和j均小于或等于100,或者i和j均大于k(i<=100&&j<=100)||(i>k&&j>k)選未婚、30歲以上女講師和35歲以上男副教授!婚否&&((性別=‘男’&&職稱=‘副教授’&&年齡〉=35)||(性別=‘女’&&職稱=‘講師’&&年齡〉=30))44四.賦值運(yùn)算符和賦值表達(dá)式1.賦值運(yùn)算符“=”:2.賦值的格式:變量名=表達(dá)式3.作用將表達(dá)式的值存入變量45舉例i=j=m*n;計(jì)算表達(dá)式m*n的值,將其結(jié)果存入變量j中,然后再將結(jié)果存入變量i中。temp=a;a=b;b=temp;交換a和b的值sum=sum+i;(等價(jià)于sum+=i;)計(jì)算sum與i的和,結(jié)果送sum465、自增、自減運(yùn)算符表2-2自增運(yùn)算符和自減運(yùn)算符的用法舉例i++; //i增加1
i; //i減少1472.5表達(dá)式中各運(yùn)算符的運(yùn)算順序優(yōu)先級(jí)別運(yùn)算符運(yùn)算形式名稱或含義1()[](e)a[e]圓括號(hào)數(shù)組下標(biāo)2-+++--!-e++x或x++負(fù)號(hào)和正號(hào)自增運(yùn)算和自減運(yùn)算邏輯非3*/%e1*e2乘、除和求余4+-e1+e2加和減6<<=>>=e1<e2關(guān)系運(yùn)算(比較)7==!=e1==e2等于和不等于比較482.6類型不同的數(shù)據(jù)之間混合運(yùn)算1.級(jí)別低的類型轉(zhuǎn)換為級(jí)別高的類型。各類型按級(jí)別由低到高的順序:char,int,unsigned,long,unsignedlong,float,double。2.可以使用強(qiáng)制類型轉(zhuǎn)換。d1=(double)i1/i2;49例2-1:取整型量的最低4位#include<iostream>usingnamespacestd;intmain(){ inti; cout<<"請(qǐng)輸入一個(gè)整數(shù):"; cin>>i; cout<<i<<"的最低4位對(duì)應(yīng)的十進(jìn)制數(shù)是:"<<(i&0X0F)<<endl; return0;}50例2-2根據(jù)三邊長求三角形面積#include<iostream>#include<cmath>usingnamespacestd;intmain(){ doublea,b,c,s,area; cout<<"Pleaseinputa,b,c="; cin>>a>>b>>c; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); cout<<"area="<<area<<endl; return0;}51例2-3:解一元二次方程求一元二次方程ax2+bx+c=0的根,其中系數(shù)a,b,c為實(shí)數(shù),由鍵盤輸入。52#include<iostream>#include<cmath>usingnamespacestd;intmain(){ doublea,b,c,delta,p,q; cout<<"Pleaseintputa,b,c="; cin>>a>>b>>c; delta=b*b-4*a*c;
p=-b/(2*a); q=sqrt(fabs(delta))/(2*a);53
if(delta>=0) cout<<"x1="<<p+q<<endl<<"x2="<<p-q<<endl; else { cout<<"x1="<<p<<"+j"<<q; cout<<endl<<"x2="<<p<<"-j"<<q<<endl; } return0;}54例2-4:溫度轉(zhuǎn)換輸入一個(gè)華氏溫度,計(jì)算并輸出對(duì)應(yīng)的攝氏溫度#include<iostream>usingnamespacestd;intmain(){ doublec,f; cout<<"請(qǐng)輸入一個(gè)華氏溫度:"; cin>>f; c=5.0/9.0*(f-32); cout<<"對(duì)應(yīng)于華氏溫度"<<f<<"的攝氏溫度為"<<c<<endl; return0;}55例2-5:反序輸出輸入一個(gè)四位無符號(hào)整數(shù),反序輸出這四位數(shù)。#include<iostream>usingnamespacestd;intmain(){ unsignedintn; charc1,c2,c3,c4; cout<<"請(qǐng)輸入一個(gè)界于1000與9999之間的數(shù):"; cin>>n; cout<<"反序輸出前的數(shù)為:"<<n<<endl;56 c1=n%10+'0'; //分離個(gè)位數(shù)字
c2=n/10%10+'0'; //分離十位數(shù)字
c3=n/100%10+'0'; //分離百位數(shù)字
c4=n/1000+'0'; //分離千位數(shù)字
cout<<"反序輸出后的數(shù)為:"<<c1<<c2<<c3<<c4<<endl; return0;}57例2-6:大小寫轉(zhuǎn)換輸入一個(gè)字符,判斷它是否為大寫字母,如是,將其轉(zhuǎn)換為對(duì)應(yīng)的小寫字母輸出;否則,不用轉(zhuǎn)換直接輸出。58#include<iostream>usingnamespacestd;intmain(){ charch; cout<<"請(qǐng)輸入一個(gè)字母:"; cin>>ch; if(ch>='A'&&ch<='Z')ch=ch-'A'+'a'; cout<<"將大寫轉(zhuǎn)換為小寫后,該字母為:"<<ch<<endl; return0;}59例2-7:找零錢問題假定有伍角、壹角、伍分、貳分和壹分共五種硬幣,在給顧客找硬幣時(shí),一般都會(huì)盡可能的選用硬幣個(gè)數(shù)最小的方法。例如,當(dāng)要給某顧客找七角二分錢時(shí),會(huì)給他一個(gè)伍角,2個(gè)壹角和1個(gè)貳分的硬幣。請(qǐng)編寫一個(gè)程序,輸入的是要找給顧客的零錢(以分為單位),輸出的是應(yīng)該找回的各種硬幣數(shù)目,并保證找回的硬幣數(shù)最少。60#include<iostream>usingnamespacestd;intmain(){ intchange; //存放零錢的變量
cout<<"請(qǐng)輸入要找給顧客的零錢(以分為單位)"; cin>>change; cout<<"找給顧客的五角硬幣個(gè)數(shù)為:"<<change/50<<endl; change=change%50; cout<<"找給顧客的壹角硬幣個(gè)數(shù)為:"<<change/10<<endl;61
change=change%10;cout<<"找給顧客的伍分硬幣個(gè)數(shù)為:"<<change/5<<endl;change=change%5;cout<<"找給顧客的貳分硬幣個(gè)數(shù)為:"<<change/2<<endl;change=change%2;cout<<"找給顧客的壹分硬幣個(gè)數(shù)為:"<<change<<endl;return0;}62學(xué)好計(jì)算機(jī)的唯一途徑是
你的編程能力與你在計(jì)算機(jī)上投入的時(shí)間成
結(jié) 束 語上機(jī)練習(xí)正比63第3章控制結(jié)構(gòu)3.1程序的基本控制結(jié)構(gòu)3.2C++的控制結(jié)構(gòu)1.順序結(jié)構(gòu)2.選擇結(jié)構(gòu)3.循環(huán)結(jié)構(gòu)程序設(shè)計(jì)舉例643.1程序的基本控制結(jié)構(gòu)一.結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思想是任何程序都可以用三種基本結(jié)構(gòu)表示,即順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)。由這三種基本結(jié)構(gòu)經(jīng)過反復(fù)嵌套構(gòu)成的程序稱為結(jié)構(gòu)化程序語句序列1語句序列2語句序列1條件?成立不成立語句序列2語句序列不成立成立條件?順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)65二.模塊化程序結(jié)構(gòu)1.模塊化把程序劃分為若干個(gè)模塊,每個(gè)模塊獨(dú)立存放、一個(gè)模塊完成一個(gè)功能2.目的降低程序的復(fù)雜度,使設(shè)計(jì)出來的程序便于閱讀、調(diào)試和維護(hù)。3.一個(gè)模塊可以是一條語句、一段程序、一個(gè)函數(shù)等4.基本特征僅有一個(gè)入口和一個(gè)出口
663.2C++的控制結(jié)構(gòu)1、順序結(jié)構(gòu)說明語句賦值語句I/O語句復(fù)合語句和空語句672、選擇結(jié)構(gòu)(1)if語句格式:
if(表達(dá)式)
{語句序列1}else{語句序列2}68例3-1編程實(shí)現(xiàn)分段函數(shù)69#include<iostream>usingnamespacestd;intmain(){ doublex,y;
cout<<"Pleaseinputx="; cin>>x;
if(x<0) { y=x+1; cout<<"x="<<x<<",y=x+1="<<y<<endl;
}70 elseif(x<1) //0≤x<1 { y=1;
cout<<"x="<<x<<",y="<<y<<endl; } else //1≤x { y=x*x*x; cout<<"x="<<x<<",y=x*x*x="<<y<<endl;
} return0;}71(2)switch語句語句格式:
switch(整數(shù)表達(dá)式)
{case數(shù)值1:語句序列1;
…...case數(shù)值n:語句序列n;
[default:
語句序列n+1;]}
72例3-2:將百分制的分?jǐn)?shù)轉(zhuǎn)換為5級(jí)制分?jǐn)?shù)編寫程序,將百分制的學(xué)生成績轉(zhuǎn)換為優(yōu)秀、良好、中等、及格和不及格的5級(jí)制成績。標(biāo)準(zhǔn)為:
優(yōu)秀:100-90分;
良好:80-89分;
中等:70-79分;
及格:60-69分;
不及格:60分以下。73#include<iostream>usingnamespacestd;intmain(){ intold_grade,new_grade; cout<<"Pleaseinputthescore:"; cin>>old_grade;74 switch(old_grade/10) //根據(jù)轉(zhuǎn)換值進(jìn)行分支選擇
{ case10: case9: new_grade=5; break; case8: new_grade=4; break; case7: new_grade=3; break;75case6: new_grade=2; break; default: new_grade=1; } cout<<"Beforetransformed,thescoreis"<<old_grade<<endl; cout<<"Aftertransformed,thescoreis"<<new_grade<<endl; return0;}763.循環(huán)結(jié)構(gòu)(1)while語句格式:
while(表達(dá)式)循環(huán)體不成立語句序列成立條件?77
例3-3:計(jì)算常數(shù)e的值計(jì)算,當(dāng)通項(xiàng)時(shí)停止計(jì)算78#include<iostream>usingnamespacestd;intmain(){ doublee=1.0;
doubleu=1.0; intn=1; while(u>=1.0E-7) { u=u/n; e=e+u;n=n+1; } cout<<"e="<<e<<"(n="<<n<<")"<<endl; return0;}79(2)do~while語句格式:
do
語句序列
while(表達(dá)式);條件?語句序列成立不成立80例3-4用do-while重新編寫例3-3的程序#include<iostream>usingnamespacestd;intmain(){ doublee=1.0; doubleu=1.0; intn=1;
do { u=u/n; e=e+u; n=n+1; }while(u>=1.0E-7); cout<<"e="<<e<<"(n="<<n<<")"<<endl; return0;}81(3)for語句格式:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體82for的執(zhí)行過程(1)計(jì)算表達(dá)式1;(2)計(jì)算表達(dá)式2值為非0時(shí),執(zhí)行步驟3;值為0時(shí)退出循環(huán);(3)執(zhí)行循環(huán)體;(4)計(jì)算表達(dá)式3;(5)返回(2);83例3-5:計(jì)算1+2+3+…+100#include<iostream>usingnamespacestd;intmain(){ intsum=0; for(inti=1;i<=100;i++) sum=sum+i; //累加求和
cout<<"1+2+3+…+100="<<sum<<endl; return0;}84例3-7:用迭代公式求平方根設(shè),則迭代公式為
迭代結(jié)束條件取相對(duì)誤差。85#include<iostream> #include<cmath> usingnamespacestd;constdoubleEPS=1.0e-10;intmain(){ doublea,x; cout<<"Pleaseinputthevalue:";
cin>>a; doublex0,x1; x1=1.0;86
if(a>0.0) //避免負(fù)數(shù)開方
{ do {x0=x1; x1=(x0+a/x0)/2; }while(fabs((x0-x1)/x1)>=EPS); //fabs()函數(shù)為求絕對(duì)值的庫函數(shù)
x=x1; } else x=a;87 if(x<0) cout<<"Thenegativedoesnothavesquareroot!"<<endl; else cout<<"Thesquarerootof"<<a<<"is"<<x<<endl; return0;}88例3-8:求π的近似值#include<iostream>#include<cmath>usingnamespacestd;intmain(){ ints=1; doublen=1.0,u=1.0,pi=0.0; while(fabs(u)>=1.0e-4) { pi=pi+u; //累加通項(xiàng)
n=n+2; s=-s; //符號(hào)位的生成
u=s/n; //通項(xiàng)
} cout<<"pi="<<4*pi<<endl; return0;}89例3-9:打印所有的水仙花數(shù)如果一個(gè)三位數(shù)的個(gè)位數(shù)、十位數(shù)和百位數(shù)的立方和等于該數(shù)自身,則稱該數(shù)為水仙花數(shù)。編一程序求出所有的水仙花數(shù)。90#include<iostream>usingnamespacestd;intmain(){ intn,i,j,k; for(n=100;n<=999;n++) { i=n/100;//取出n的百位數(shù)
j=(n/10)%10;//取數(shù)n的十位數(shù)
k=n%10;//取出n的個(gè)位數(shù)
if(n==i*i*i+j*j*j+k*k*k) cout<<n<<"="<<i<<"^3+"<<j<<"^3+"<<k<<"^3"<<endl; }return0;}91例3-10:制作乘法表#include<iostream>usingnamespacestd;intmain(){ inti,j; for(i=1;i<10;i++) { for(j=1;j<=i;j++) cout<<j<<"*"<<i<<"="<<i*j<<"\t"; cout<<endl; }return0;}92例3-11:統(tǒng)計(jì)階乘n!的末尾中0的個(gè)數(shù)對(duì)于任意給定的一個(gè)正整數(shù)n,統(tǒng)計(jì)其階乘n!的末尾中0的個(gè)數(shù)。93#include<iostream>usingnamespacestd;intmain(){ intn;intsum=0;inti,k; cout<<"Pleastinputapositivenumber:"; cin>>n; for(i=5;i<=n;i=i+5)//只有5的倍數(shù)才含5的因子
{ intm=i; for(k=0;m%5==0;k++) m=m/5; sum=sum+k; } cout<<"Thenumberofzeroin"<<n<<"!is:"<<sum<<endl; return0;}94學(xué)好計(jì)算機(jī)的唯一途徑是
你的編程能力與你在計(jì)算機(jī)上投入的時(shí)間成
結(jié) 束 語上機(jī)練習(xí)正比95第4章數(shù)組與字符串4.1數(shù)組1.一維數(shù)組2.二維數(shù)組3.多維數(shù)組4.2字符型數(shù)組和字符串處理庫函數(shù)1.字符型數(shù)組的定義和初始化2.字符串的輸入與輸出3.字符串處理庫函數(shù)964.1數(shù)組數(shù)據(jù)類型(1)基本類型:整型、字符型、實(shí)型(2)構(gòu)造類型:由基本類型數(shù)據(jù)按一定規(guī)則組成的,包括數(shù)組、結(jié)構(gòu)體、共用體數(shù)組(1)具有相同數(shù)據(jù)類型的變量集合,這些變量名稱相同,下標(biāo)不同,稱為數(shù)組元素(2)有一個(gè)下標(biāo)——一維數(shù)組(3)有兩個(gè)下標(biāo)——二維數(shù)組974.1.1一維數(shù)組1、一維數(shù)組的定義格式類型說明符數(shù)組名[常量表達(dá)式]2、說明(1)數(shù)組名命名規(guī)則和變量名相同。(2)數(shù)組名后用方括弧括起來的常量表達(dá)式表示下標(biāo)長度(3)C語言的下標(biāo)從0開始,必須是整型變量或常量。(4)數(shù)組在內(nèi)存中存儲(chǔ)時(shí),按下標(biāo)遞增的順序連續(xù)存儲(chǔ)各元素例如:intarray[10];
表示數(shù)組名為a,有10個(gè)元素983、一維數(shù)組的初始化(1)定義數(shù)組時(shí)順序?qū)Ω髟刭x以初值例如:inta[10]={0,1,2,3,4,5,6,7,8,9};(2)全部元素賦初值時(shí),可以不指定數(shù)組長度例如:
inta[5[={1,2,3,4,5};可以寫成inta[]={1,2,3,4,5};(3)可以只給一部分元素賦值。例如:inta[10[={0,1,2,3,4};前面5個(gè)元素賦初值,后5個(gè)元素值為0。99一維數(shù)組初始化例:intA[5];在內(nèi)存存儲(chǔ)如圖數(shù)組的首地址是數(shù)組名A數(shù)組的首地址也是第一個(gè)元素的地址&A[0]C++語言中,數(shù)組的整體不能參加數(shù)據(jù)處理,參加處理的只能是數(shù)組中的元素變量。所以要對(duì)數(shù)組進(jìn)行初始化。例如:intdata[5]={,4,,8,};賦值如圖A[0]A[1]A[2]A[3]A[4]100例4-1題目:給一維數(shù)組x輸入10個(gè)整數(shù),找出x數(shù)組中的最大數(shù)和最小數(shù)。算法分析:1、假設(shè)數(shù)組中第1個(gè)元素最大,令xmax=a[0]2、將a[i](0<=i<n)與max進(jìn)行比較,若a[i]<xmax,i=i+1,再執(zhí)行2否則,令xmax=a[i],i=i+1,再執(zhí)行23、循環(huán)結(jié)束,求出最大元素并輸出max。輸入 21731249輸出 max=12101//Example4-1:#include<iostream.h>intmain(){intarray[7];cout<<"Pleaseinputanarraywithsevenelements:"<<endl; for(inti=0;i<7;i++) cin>>array[i]; intbig=array[0]; for(intj=0;j<7;j=j+1) if(array[j]>big)big=array[j]; cout<<"max="<<big<<endl; return0;}102二維數(shù)組定義格式:<類型><數(shù)組名>[<常量表達(dá)式1>][<常量表達(dá)式2>];例如,三個(gè)學(xué)生四門課程成績數(shù)據(jù)如下:858793888690958978918295利用二維數(shù)組存放這些數(shù)據(jù)更能表現(xiàn)數(shù)據(jù)之間相互聯(lián)系的特征。每一行數(shù)據(jù)表示該學(xué)生的各門課程的成績,而每一列數(shù)據(jù)表示該門課程各學(xué)生的成績。該數(shù)組定義為:intmatrix[3][4];103二維數(shù)組存儲(chǔ)結(jié)構(gòu)邏輯結(jié)構(gòu):二維數(shù)組恰似一張表格(或矩陣)。數(shù)組元素中的第一個(gè)下標(biāo)值表示該元素在表格中的行號(hào),第二個(gè)下標(biāo)為列號(hào)。
M[3][3]具有如下邏輯結(jié)構(gòu):
M[0][0]M[0][1]M[0][2]M[1][0]M[1][1]M[1][2]M[2][0]M[2][1]M[2][2]存貯結(jié)構(gòu):二維數(shù)組在內(nèi)存中按一維數(shù)組存放、占據(jù)一片連續(xù)的存貯單元;是“按行順序”在內(nèi)存中分配存貯單元。104二維數(shù)組初始化1.按照二維數(shù)組元素的物理存儲(chǔ)次序給所有或部分?jǐn)?shù)組元素提供數(shù)據(jù)值intscore[3][4]={85,87,93,88,86,90,95,89,78,91,82,95};//給數(shù)組stu_score每個(gè)元素都提供初值floatmatrix[2][3]={1.0,3.0};//僅為數(shù)組matrix的前2個(gè)元素提供初值1052.以行結(jié)構(gòu)方式提供各數(shù)據(jù)值
intscore[3][4]={{85,87,93,88}, {86,90,95,89},{78,91,82,95}};1064.2字符型數(shù)組和字符串處理庫函數(shù)字符串用雙引號(hào)括起來,例如,”abc”;用字符型數(shù)組存放字符串,存放時(shí),在有效字符后自動(dòng)加’\0’;稱’\0’為空值,是字符串結(jié)束標(biāo)志;有效字符的個(gè)數(shù)稱為字符串長度。例如,”abc”的長度為3,但占4個(gè)字節(jié)(’\0’占一位)。107字符型數(shù)組的定義和初始化charweekday[7]={"MONDAY"};charweekday[7]="MONDAY";字符串的輸入與輸出charname[20];cin>>name;cin.get(name,n);//第一個(gè)是字符數(shù)組變量,第二個(gè)指定向這個(gè)變量//中讀入幾個(gè)字符cout<<name;108例4-2字符串的輸入與輸出輸入和輸出 Pleaseinputanamewithblank(within19characters):CongZhenPleaseinputthenameagainCongZhen109例4-2源程序#include<iostream.h>intmain(){ charname1[20],name2[20]; cout<<"Pleaseinputanamewithblank(within19characters):"<<endl; cin.get(name1,20); cout<<"Pleaseinputthenameagain"<<endl; cin>>name2; cout<<"Usingfunctionget,thenamestoringinthevariableis:"<<name1<<endl; cout<<"Usingoperater<<,thenamestoringinthevariableis:"<<name2<<endl; return0;}110字符串處理庫函數(shù)需要添加#include<string.h>stpcpy():字符串拷貝;strcat():字符串連接;strchr():在字符串中查找字符;strcmp():字符串比較;strlen():求字符串長度;strlwr():將字符串中的大寫字母轉(zhuǎn)換為小寫字母;strrev():反轉(zhuǎn)字符串;strstr():在字符串中查找另一個(gè)字符串;strupr():將字符串中的小寫字母轉(zhuǎn)換為大寫字母;…111例4-3編寫一個(gè)用來計(jì)算字符串長度的函數(shù)mystrlen(),并用主函數(shù)驗(yàn)證算法分析:1)設(shè)一個(gè)計(jì)數(shù)器變量len=02)從數(shù)組s[len]第一個(gè)元素開始進(jìn)行處理3)若當(dāng)前的元素值s[len]非空(‘\0’),則len+1,繼續(xù)執(zhí)行3;否則,退出循環(huán)。4)打印結(jié)果len112程序邏輯功能框圖len=0str[n]len=len+1打印結(jié)果lenstr[len]=‘\0’?是否113//Example4-3:求字符串的長度#include<iostream.h>//計(jì)算字符串的長度的函數(shù)intmystrlen(charstring[]){intlen=0;while(string[len]!='\0')len=len+1;returnlen;}114//測試計(jì)算字符串長度的主函數(shù)intmain(){ charstring[100]; intlen=0; cout<<"Pleaseinputastring(within99characters):"<<endl; cin>>string; cout<<"Thelengthofthestringis:"<<mystrlen(string)<<endl; return0;}輸入 china輸出 Thelengthofthestringis:51154.3結(jié)構(gòu)體類型迄今為止,已介紹了基本類型(或稱簡單類型)的變量(如整型、實(shí)型、字符型變量等),也介紹了一種構(gòu)造類型數(shù)據(jù)——數(shù)組,數(shù)組中的各元素是屬于同一個(gè)類型的。但是只有這些數(shù)據(jù)類型是不夠的。有時(shí)需要將不同類型的數(shù)據(jù)組合成一個(gè)有機(jī)的整體,以便于引用。這些組合在一個(gè)整體中的數(shù)據(jù)是互相聯(lián)系的。116例如,工人工資單:姓名、單位、編號(hào).....例如,學(xué)生成績單:學(xué)號(hào)、姓名、性別、各科成績等這些項(xiàng)都與某一學(xué)生相聯(lián)系??梢钥吹叫詣e(sex)、年齡(age)、成績(score)、地址(addr)是屬于學(xué)號(hào)為10010和名為“LiFun”的學(xué)生的。如果將num、name、sex、age、score、addr分別定義為互相獨(dú)立的簡單變量,難以反映它們之間的內(nèi)在聯(lián)系。1174.3.1結(jié)構(gòu)體類型的定義
結(jié)構(gòu)體作為一種數(shù)據(jù)構(gòu)造類型,在C語言程序中也許需要經(jīng)歷定義——聲明——調(diào)用的過程。結(jié)構(gòu)體是由不同的數(shù)據(jù)類型的數(shù)據(jù)組成的。組成結(jié)構(gòu)體的每個(gè)數(shù)據(jù)成為該結(jié)構(gòu)體的成員項(xiàng)簡稱成員。在程序使用結(jié)構(gòu)體時(shí),首先要對(duì)結(jié)構(gòu)體進(jìn)行描述,這稱為結(jié)構(gòu)體的定義。1184.3.1結(jié)構(gòu)體類型的定義struct結(jié)構(gòu)名{數(shù)據(jù)類型成員名1;數(shù)據(jù)類型成員名2;
……
數(shù)據(jù)類型成員名n;};structstudent{charname[20];unsignedlongnumber;floatmath;floatenglish;floatphysics;};119三種結(jié)構(gòu)體變量的聲明(1)先定義結(jié)構(gòu)體類型,再定義結(jié)構(gòu)體類型變量。例如,日期類型可以定義為
structdate{intda_year;charda_mon;charda_day;};structdateyesterday,today,tomorrow;120三種聲明結(jié)構(gòu)體變量的方式(2)(2)定義類型的同時(shí)聲明變量。例如,
structdate{intda_year;charda_mon;charda_day;}yesterday,today,tomorrow;聲明了3個(gè)日期類型的變量:yesterday、today和tomorrow。121三種聲明結(jié)構(gòu)體變量的方式(3)(3)直接定義結(jié)構(gòu)體類型變量。例如,
struct{intda_year;charda_mon;charda_day;}yesterday,today,tomorrow;不出現(xiàn)結(jié)構(gòu)體類型名。122程序設(shè)計(jì)舉例例4-5編寫一個(gè)程序,實(shí)現(xiàn)矩陣相乘運(yùn)算例4-6編寫一個(gè)用于對(duì)整型數(shù)組進(jìn)行排序的程序,排序方法使用簡單的交換排序法例4-7編寫一個(gè)字符串處理程序,將一個(gè)字符串之中的所有小寫字母轉(zhuǎn)換為相應(yīng)的大寫字母例4-8使用數(shù)組編寫一個(gè)統(tǒng)計(jì)學(xué)生課程平均分的程序例4-9使用結(jié)構(gòu)體重新編寫上題的程序123例4-5實(shí)現(xiàn)矩陣相乘運(yùn)算算法說明:矩陣S(LxN)和矩陣T(NxM)相乘。S是L行、N列;T是N行、M列。要求:S的列數(shù)和T的行數(shù)必須相同。
124算法說明(續(xù))S=
103211
T=
312201121
SxT=
1*3+0*2+3*11*1+0*0+3*21*2+0*1+3*12*3+1*2+1*1
2*1+1*0+1*22*2+1*1+1*1
=Rr11r12r13r21r22r23
125矩陣乘法算法用兩重循環(huán)實(shí)現(xiàn)對(duì)Cij的求值:for(i=0;i<l;i=i+1)for(j=0;i<n;j=j+1)
求Cij;其中“求Cij”又可以細(xì)化為:
Cij=0;for(k=0;k<m;k=k+1)
Cij=Cij+Aik×Bkj126//4-5:計(jì)算兩個(gè)矩陣的乘積#include<iostream.h>intmain(){constintL=4; constintM=5;constintN=3; doublea[L*M]={1.0,3.0,-2.0,0.0,4.0, -2.0,-1.0,5.0,-7.0,2.0, 0.0,8.0,4.0,1.0,-5.0, 3.0,-3.0,2.0,-4.0,1.0 }; doubleb[M*N]={4.0,5.0,-1.0, 2.0,-2.0,6.0, 7.0,8.0,1.0, 0.0,3.0,-5.0, 9.0,8.0,-6.0 }; doublec[L*N]; inti,j,k;127//4-5:計(jì)算兩個(gè)矩陣的乘積(續(xù))for(i=0;i<L;i=i+1) for(j=0;j<N;j=j+1) {c[i*N+j]=0; for(k=0;k<M;k=k+1) c[i*N+j]=c[i*N+j]+a[i*M+k]*b[k*N+j]; } cout<<"Theresultisc="<<endl; for(i=0;i<L;i=i+1) { for(intj=0;j<N;j=j+1) cout<<c[i*N+j]<<""; cout<<endl; } return0;}128例4-6冒泡排序算法分析:(1)兩兩比較相鄰元素A(I)和A(I+1)(I=1,2,…N-1),如果A(I)>A(I+1),則交換它們的位置A(I)
A(I+1);(2)對(duì)剩下的N-1個(gè)元素,再兩兩進(jìn)行比較,按同樣規(guī)則交換它們的位置,經(jīng)過N-2次比較,將次最大值交換到A(N-1)的位置;(3)如法炮制,經(jīng)過N-1趟的“冒泡處理”,每趟進(jìn)行N-i次的比較,全部數(shù)列有序。129130//Example4-6:冒泡排序#include<iostream.h>intmain(){ constintCOUNT=16; intlist[COUNT]={503,87,512,61,908,170,897,275, 653,426,154,509,612,677,765,703 }; for(inti=0;i<COUNT;i=i+1) for(intj=COUNT-1;j>i;j=j-1) if(list[j-1]>list[j]) {inttmp=list[j-1];list[j-1]=list[j];list[j]=tmp;} cout<<"Theresultis:"<<endl; for(intk=0;k<16;k++)cout<<list[k]<<""; cout<<endl; return0;}131例4-7將小寫字母轉(zhuǎn)換為大寫字母#include<iostream.h>intmain(){ charstr[]="Thisisasample"; cout<<"Theoriginalstringis:"<<str<<endl; inti=0; while(str[i]!=0) { if(str[i]>='a'&&str[i]<='z')str[i]=str[i]-'a'+'A'; i=i+1; } cout<<"Aftertransform:"<<str<<endl; return0;}132例4-8統(tǒng)計(jì)學(xué)生課程平均分的程序定義二維數(shù)組student[6][5],其中,給數(shù)組student前4列元素讀值,第1列為學(xué)號(hào),第2列到第4列為4門課程的成績。第5列為平均分,通過計(jì)算求得。133//4-8:統(tǒng)計(jì)學(xué)生課程的平均分#include<iostream.h>#define PERSON 6#define COURSE 3intmain(){ intstudent[PERSON][COURSE+2]; int i,j; cout<<"Pleaseinputdataofstudent:"<<endl;134
for(i=0;i<PERSON;i=i+1){ cin>>student[i][0];student[i][COURSE+1]=0; for(j=1;j<=COURSE;j=j+1) { cin>>student[i][j];student[i][COURSE+1]=student[i][COURSE+1]+student[i][j]; } student[i][COURSE+1]=student[i][COURSE+1]/COURSE;}135//4-8:統(tǒng)計(jì)學(xué)生課程的平均分 cout<<"學(xué)號(hào)高數(shù)英語體育平均分"<<endl; cout<<"--------------------------------------"<<endl; for(i=0;i<PERSON;i=i+1) { for(j=0;j<=COURSE+1;j=j+1) cout<<student[i][j]<<"\t"; cout<<endl; } return0;}136例4-9使用結(jié)構(gòu)體重新編寫上題的程序。算法定義一個(gè)結(jié)構(gòu)體類型StudentType,其中包含學(xué)號(hào)、各門課程成績和平均分等數(shù)據(jù)成員,其值分別通過輸入和計(jì)算求得。137//Example4-9:統(tǒng)計(jì)學(xué)生課程的平均分#include<iostream.h>#define PERSON 6#define COURSE 3structStudentType{charid[10]; //學(xué)號(hào)intscore[COURSE]; //課程成績intGPA; //平均分};138intmain(){StudentTypexjtuStudent[PERSON]; inti,j; cout<<"Pleaseinputdataofstudent:"<<endl; for(i=0;i<PERSON;i=i+1){ cin>>xjtuStudent[i].id; xjtuStudent[i].GPA=0; 139 for(j=0;j<COURSE;j=j+1) {cin>>xjtuStudent[i].score[j]; xjtuStudent[i].GPA=xjtuStudent[i].GPA+xjtuStudent[i].score[j]; } xjtuStudent[i].GPA=xjtuStudent[i].GPA/COURSE;}140cout<<"學(xué)號(hào)高數(shù)英語體育平均分"<<endl;cout<<"--------------------------------------"<<endl;for(i=0;i<PERSON;i=i+1){ cout<<xjtuStudent[i].id<<"\t"; for(j=0;j<COURSE;j=j+1) cout<<xjtuStudent[i].score[j]<<"\t"; cout<<xjtuStudent[i].GPA<<endl;}return0;}141上機(jī)練習(xí)題1.使用數(shù)組求斐波那挈數(shù)列的第n項(xiàng)和前n之和。3.矩陣相加。4.輸入10個(gè)字符到一維字符數(shù)組s中,將字符串置逆。即s[0]與s[9]互換,s[1]與[8]互換,...,s[4]與s[5]互換,輸出置逆后的數(shù)組s。5.替換加密(愷撒加密法)。7.定義一個(gè)名為Circle的結(jié)構(gòu)體(圓),其數(shù)據(jù)成員是圓的外接矩形的左上角和右下角兩點(diǎn)的坐標(biāo),計(jì)算該圓的面積。142學(xué)好計(jì)算機(jī)的唯一途徑是
你的編程能力與你在計(jì)算機(jī)上投入的時(shí)間成
結(jié) 束 語上機(jī)練習(xí)正比143第5章函數(shù)5.1函數(shù)概述5.2函數(shù)的定義5.3函數(shù)的調(diào)用5.4函數(shù)間的參數(shù)傳遞5.5函數(shù)與數(shù)組5.6局部變量和全局變量5.7函數(shù)聲明5.8帶有缺省參數(shù)的函數(shù)1445.1函數(shù)概述C++語言程序的結(jié)構(gòu)特點(diǎn):程序整體由一個(gè)或多個(gè)稱為函數(shù)的程序塊組成每個(gè)函數(shù)都具有各自獨(dú)立的功能和明顯的界面1455.2函數(shù)定義函數(shù)定義就是編寫完成函數(shù)功能的程序塊1、函數(shù)定義的一般格式<函數(shù)值類型><函數(shù)名>(<形式參數(shù)表>){<函數(shù)體>}1462、函數(shù)值類型函數(shù)返回值所具有的數(shù)據(jù)類型與變量類型相同。(1)返回值是數(shù)值可以是帶符號(hào)或unsigned的char、int、short、long型以及float、double型(2)返回值是地址類型是指針型(3)函數(shù)沒有返回值類型是void1473、形式參數(shù)(1)形參概念函數(shù)可以帶有零個(gè)或多個(gè)形式參數(shù)。形參是函數(shù)的內(nèi)部變量。即形式參數(shù)的生存期和作用域僅限于函數(shù)內(nèi)部。形式參數(shù)只是被初始化的內(nèi)部變量,即只有當(dāng)函數(shù)被調(diào)用,形式參數(shù)才被賦予調(diào)用函數(shù)傳遞來的實(shí)參148(2)形式參數(shù)聲明表示將從主調(diào)函數(shù)中接收哪些類型的信息例:doublegrav(doublem1,doublem2,doubledistance)形式參數(shù)可以在函數(shù)體中引用,可以輸入、輸出、賦值或參與運(yùn)算參數(shù)說明格式為:
<類型><參數(shù)1>,<類型><參數(shù)2>,…,<類型><參數(shù)n>例:intarray[],intcount149例5.1編寫求階乘n!的函數(shù)算法分析:計(jì)算公式為:
n!=n×(n-1)×…×3×2×1,且0!=1在子函數(shù)中只需一個(gè)數(shù)據(jù)x,故設(shè)一個(gè)參數(shù)n計(jì)算結(jié)果要返回主函數(shù),故設(shè)一個(gè)變量resultn的階乘可在一重循環(huán)中實(shí)現(xiàn)150例5-1:函數(shù)fac()計(jì)算階乘n!//Example5-1:函數(shù)fac()計(jì)算階乘n!intfac(intn){ intresult=1; if(n<0) return-1; elseif(n==0) return1; while(n>1) { result*=n; n--; } returnresult;}1515.3函數(shù)的調(diào)用1、函數(shù)調(diào)用就是使程序轉(zhuǎn)去執(zhí)行某個(gè)函數(shù)體。C++中,除了main函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZLX 088-2024 綠色食品 永嘉早香柚生產(chǎn)技術(shù)規(guī)程
- 二零二五年度新材料研發(fā)股份分紅及市場拓展合同模板
- T-ZGZX 0003-2024 成年智力殘疾人托養(yǎng)服務(wù)指南
- 二零二五年度夫妻共同財(cái)產(chǎn)保全與婚后生活規(guī)劃協(xié)議
- 二零二五年度企業(yè)合同管理制度與品牌建設(shè)合同
- 二零二五年度智慧城市建設(shè)抵押貸款協(xié)議
- 二零二五年度城市建筑工地渣土車租賃管理協(xié)議
- 二零二五年度農(nóng)村土地承包經(jīng)營權(quán)流轉(zhuǎn)與農(nóng)業(yè)病蟲害防治服務(wù)合同
- 二零二五年度高科技企業(yè)股權(quán)合作協(xié)議書
- 2025年度生物制藥產(chǎn)業(yè)合作投資合同
- 醫(yī)療行業(yè)的病人隱私保護(hù)培訓(xùn)
- 第1課 精美絕倫的傳統(tǒng)工藝 課件 2023-2024學(xué)年贛美版初中美術(shù)八年級(jí)下冊(cè)
- 《讓我們的家更美好》教學(xué)設(shè)計(jì)
- 自抗擾控制器及其應(yīng)用
- 熱工與流體力學(xué)基礎(chǔ)課件
- 石膏外固定的健康教育
- LOI意向書中英文模板
- 《防毒面具的使用》課件
- 《金融風(fēng)險(xiǎn)管理》 課程標(biāo)準(zhǔn)
- 銷售費(fèi)用管理制度
- 高維數(shù)據(jù)分析
評(píng)論
0/150
提交評(píng)論