版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
輸入數(shù)據(jù)Eg1.voidmain(){
inta=34,b=56;
intsum=a+b;
cout<<sum<<endl;}Eg2.
int
big(int
a,intb){if(a>b)returna;elsereturnb;}voidmain(){int
a,b;
cin>>a>>b;
cout<<big(a,b)<<endl;}7/21/20231輸入數(shù)據(jù):C++中,程序和數(shù)據(jù)有時(shí)是分離的,把外部數(shù)據(jù)值給程序中的變量的過(guò)程叫“輸入”.術(shù)語(yǔ)中稱(chēng)為從外部“讀入”數(shù)據(jù)。istream:輸入流。是從一個(gè)輸入設(shè)備流向程序的字符序列。cin輸入標(biāo)識(shí)符,與>>一起用。
頭文件istream包含如下的定義語(yǔ)句:
istream
cin;
則可以用cin輸入數(shù)據(jù)。輸入項(xiàng)只能是變量等左值而不能是常量或表達(dá)式。7/21/20232輸入數(shù)據(jù)分為簡(jiǎn)單類(lèi)型(char(除空格),int,float)和字符串類(lèi)型系統(tǒng)對(duì)輸入數(shù)據(jù)的判斷:計(jì)算機(jī)自左向右自上向下查找輸入數(shù)據(jù),跳過(guò)空白字符后尋找輸入流中的一個(gè)數(shù)據(jù):
char:讀入一個(gè)字符時(shí)結(jié)束
int/float:讀到非數(shù)字時(shí)結(jié)束7/21/20233
statementdatacontentsafterinput1、cin>>i;32i=322、cin>>i>>j;460i=4,j=603、cin>>i>>ch>>x;25A1.6i=25,ch=‘A’,x=1.64、cin>>i>>ch>>x;25A1.6同上5、cin>>i>>ch>>x;25A1.6同上6、cin>>i>>j>>x;128i=12,j=8
(計(jì)算機(jī)等待第三個(gè)數(shù)據(jù))7、cin>>i>>x;463.415i=46,x=3.4
(15保留給后面的輸入項(xiàng))7/21/20234可以讀入空格符的輸入語(yǔ)句get------cin.get(ch)鍵盤(pán)輸入:ab\n
cd\n1、cin>>ch1;//ch1=‘a(chǎn)’
cin>>ch2;//ch2=‘b’
cin>>ch3;//ch3=‘c’2、cin.get(ch1);//ch1=‘a(chǎn)’cin.get(ch2);//ch2=‘’cin.get(ch3);//ch3=‘b’7/21/20235get------cin.get(ch)鍵盤(pán)輸入:ab\n
cd\n3、cin>>ch1;//ch1=‘a(chǎn)’
cin>>ch2;//ch2=‘b’cin.get(ch3);//ch3=‘’補(bǔ)充:ignore函數(shù)----cin.ignore(200,’\n’)
作用:跳過(guò)下面200個(gè)字符或直到遇到換行符7/21/20236第三章C++程序的流程控制3.1程序設(shè)計(jì)方法3.2流程控制和選擇結(jié)構(gòu)3.3循環(huán)結(jié)構(gòu)3.4跳轉(zhuǎn)語(yǔ)句7/21/20237
3.1程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)程序=算法+數(shù)據(jù)結(jié)構(gòu)程序設(shè)計(jì)=算法+數(shù)據(jù)結(jié)構(gòu)
+程序設(shè)計(jì)方法+語(yǔ)言工具和環(huán)境7/21/20238※算法就是解決問(wèn)題的方法
例如:求最大公約數(shù),用輾轉(zhuǎn)相除法:
第一步:算法開(kāi)始。
第二步:輸入原始數(shù)據(jù),取得所給定的自然數(shù)m和n。
第三步:當(dāng)m≠n時(shí),順序執(zhí)行第四步;
反之,轉(zhuǎn)到第六步。
第四步:當(dāng)m>n,則m=m-n:否則n=n-m。
第五步:返回第三步。
第六步:輸出結(jié)果:所求最大公約數(shù)為m(或n)。
第七步:算法結(jié)束。7/21/20239流程圖算法算法的描述:廣泛使用的是流程圖算法,它使規(guī)定的符號(hào)來(lái)描述算法。具有特點(diǎn):直觀,易懂。描述算法的方法很多,如ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì))規(guī)定的常用流程圖符號(hào)。(N—S流程圖算法:同學(xué)們查資料自學(xué))7/21/202310
開(kāi)始、結(jié)束點(diǎn)數(shù)據(jù)輸入處理判斷輸出結(jié)果準(zhǔn)備流線連接點(diǎn)匯總或者資料帶預(yù)定義過(guò)程內(nèi)部存儲(chǔ)合并延期ANSI常用流程圖符號(hào)7/21/202311舉例1:
Ax2+Bx+C=0的實(shí)根解Ax2+Bx+C=0的實(shí)根解分析:如何求解求解步驟7/21/202312Ax2+Bx+C=0的實(shí)根解開(kāi)始輸入A、B、C的值
B^2-4*A*C>0?否是求方程根輸出結(jié)果結(jié)束
7/21/202313舉例2:求multi=n!分析:如何求解求解步驟7/21/202314求multi=n!StartInputnmulti=1i=1multi=multi*ii++i>n?noyesOutmulti
Exit7/21/202315算法的特征:有窮性如:N!=1×2×3×…×N確定性可執(zhí)行性0個(gè)或多個(gè)輸入1個(gè)或多個(gè)輸出7/21/202316◎結(jié)構(gòu)化算法只能由下列三種基本控制結(jié)構(gòu)所構(gòu)成:(1)順序結(jié)構(gòu)(2)循環(huán)(重復(fù))結(jié)構(gòu)(3)分支(選擇)結(jié)構(gòu)ABABpYN7/21/2023173.2流程控制和選擇結(jié)構(gòu)順序結(jié)構(gòu)—沒(méi)有跳轉(zhuǎn)語(yǔ)句時(shí),程序自上而下執(zhí)行。分支結(jié)構(gòu):?jiǎn)雾?xiàng)分支結(jié)構(gòu):if雙項(xiàng)分支結(jié)構(gòu):if/else多項(xiàng)分支結(jié)構(gòu):switchcase,if…else嵌套循環(huán)結(jié)構(gòu):whiledo/whilefor7/21/202318解決分支問(wèn)題
----if語(yǔ)句單分支:
if(表達(dá)式)語(yǔ)句例:if(x>y)
cout<<x;雙分支:
if(表達(dá)式)
語(yǔ)句1else
語(yǔ)句2例:if(x>y)cout<<x;elsecout<<y;7/21/202319分支語(yǔ)句的流程圖:AssertionstatementAstatementBfalsetrue7/21/202320Assertion:表達(dá)式可以是關(guān)系表達(dá)式或邏輯表達(dá)式,每種表達(dá)式的操作數(shù)可以是int,float,double,char,
bool,但是其結(jié)果必是true或者false.關(guān)系表達(dá)式中類(lèi)型匹配問(wèn)題:
int,float比較:int
轉(zhuǎn)化成float,再比較
bool與int比較:true為1,false為0.再比較.char型用ASCII碼比較。7/21/202321字符串的比較相比較的兩個(gè)字符串不能都是常量。比較方式:從第一個(gè)字符開(kāi)始比較,ASCII值大的字符串大;第一個(gè)字母相同再比較第二個(gè)字符。。。
eg.charword1[15],word2[20];word1=“Tremendous”;word2=“Small”;
則:word1>word2值為true7/21/202322eg.string1=“Macauley”,string2=“MacPherson”
則:string1>string2的值為true
array1=“abc”,array2=“abcd”;
則:array1<array2的值為true7/21/202323#include<iostream.h>voidmain(
){ intyear;boolIsLeapYear;cout<<"Entertheyear:";cin>>year;
IsLeapYear=((year%4==0&&year%100!=0)||(year%400==0));
if
(IsLeapYear)
cout<<year<<"isaleapyear"<<endl;
else
cout<<year<<"isnotaleapyear“<<endl;
}例3-1輸入一個(gè)年份,判斷是否閏年。(閏年的條件是:能被400整除或能被4但不能被100整除的年份)7/21/202324運(yùn)行結(jié)果1:Entertheyear:20002000isaleapyear運(yùn)行結(jié)果2:Entertheyear:10001000isnotaleapyear7/21/202325解決多分支問(wèn)題——
if語(yǔ)句嵌套一般形式if()if()語(yǔ)句1else語(yǔ)句2elseif()語(yǔ)句3else語(yǔ)句4注意:如果有多條語(yǔ)句要執(zhí)行,則要用{}來(lái)界定;每層的if與else配對(duì).7/21/202326#include<iostream.h>voidmain(){
intx,y;
cout<<"Enterxandy:";
cin>>x>>y;if(x!=y)if(x>y)
cout<<"x>y"<<endl;else
cout<<"x<y"<<endl;else
cout<<"x=y"<<endl;}例3-2輸入兩個(gè)整數(shù),比較兩個(gè)數(shù)的大小。#include<iostream.h>voidmain(){
intx,y;
cout<<"Enterxandy:";
cin>>x>>y;if(x!=y)if(x>y)
cout<<"x>y"<<endl;else
cout<<"x<y"<<endl;else
cout<<"x=y"<<endl;}7/21/202327運(yùn)行結(jié)果1:Enterxandy:58x<y運(yùn)行結(jié)果2:Enterxandy:88x=y運(yùn)行結(jié)果3:Enterxandy:128x>y7/21/202328一般形式:switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1case常量表達(dá)式2:語(yǔ)句2┆case常量表達(dá)式n:語(yǔ)句ndefault:語(yǔ)句n+1}----switch語(yǔ)句執(zhí)行順序:以case中的常量表達(dá)式值為入口標(biāo)號(hào),由此開(kāi)始順序執(zhí)行,以break語(yǔ)句為出口或執(zhí)行到switch語(yǔ)句最后結(jié)束。每個(gè)常量表達(dá)式的值不能相同,次序不影響執(zhí)行結(jié)果??梢允嵌鄠€(gè)語(yǔ)句,但不必用{}??梢允钦?、字符型、枚舉型特殊的多分支結(jié)構(gòu)7/21/202329使用switch語(yǔ)句應(yīng)注意的問(wèn)題①case分支可包含多個(gè)語(yǔ)句,且不用{}。②表達(dá)式、判斷值都是int型、enum型或char型(與if不同)。③若干分支執(zhí)行內(nèi)容相同可共用一組語(yǔ)句。④需要中途跳出switch語(yǔ)句時(shí),用break。7/21/202330#include<iostream.h>voidmain(void){ intday; cin>>day;
switch(day) {
case0: cout<<"Sunday"<<endl; break;
case1: cout<<"Monday"<<endl; break;
case2: cout<<"Tuesday"<<endl; break;例3-3
輸入一個(gè)0~6的整數(shù),轉(zhuǎn)換成星期輸出。7/21/202331
case3:cout<<"Wednesday"<<endl; break;
case4: cout<<"Thursday"<<endl; break;
case5: cout<<"Friday"<<endl; break;
case6: cout<<"Saturday"<<endl; break;
default:
cout<<"DayoutofrangeSunday..Saturday"
<<endl; break; }}7/21/2023323.3循環(huán)結(jié)構(gòu)循環(huán)(loop)是當(dāng)條件滿足時(shí),一遍遍重復(fù)執(zhí)行相同的語(yǔ)句(即循環(huán)體)。循環(huán)的執(zhí)行階段:
Loopentry(進(jìn)入循環(huán))
Iteration(執(zhí)行循環(huán)體)Looptest(檢測(cè)循環(huán)條件)Loopexit(退出循環(huán))Terminationcondition(中斷條件)三種常用的循環(huán)結(jié)構(gòu):while/do…while/for7/21/202333一)while語(yǔ)句while語(yǔ)句---先判斷后執(zhí)行形式:while(循環(huán)條件)語(yǔ)句
可以是簡(jiǎn)單句或者復(fù)合語(yǔ)句,稱(chēng)作循環(huán)體。執(zhí)行順序:先判斷循環(huán)條件,值為true時(shí),執(zhí)行循環(huán)體內(nèi)語(yǔ)句;執(zhí)行完一次循環(huán)體后再判斷條件,如果仍為true則再次執(zhí)行循環(huán)體;執(zhí)行完后再次判斷循環(huán)條件。。。直到循環(huán)條件值為false,則跳出while語(yǔ)句繼續(xù)向下執(zhí)行。7/21/2023341、循環(huán)條件Count-ControlledLoops
計(jì)數(shù)控制的循環(huán)條件中有“控制循環(huán)變量”,執(zhí)行循環(huán)之前先對(duì)其賦初值,再判斷它。i=0;while(i<10){a+=b;i++;}eg.7/21/202335Event-ControlledLoops
1)sentinel-controlledloops:循環(huán)結(jié)構(gòu)常用來(lái)讀入和處理大量數(shù)據(jù),一個(gè)標(biāo)志值(sentinelvalue)標(biāo)志著沒(méi)有數(shù)據(jù)要處理了。循環(huán)在讀到結(jié)束標(biāo)志值時(shí)結(jié)束。7/21/202336eg.輸入日歷值,輸入April31作為四月的結(jié)束標(biāo)志
cin>>month>>day;while(!(month==4&&day==31)){…
cin>>month>>day;}
說(shuō)明:sentinelvalue根據(jù)需要設(shè)定,如:x值不許為0,則循環(huán)條件設(shè)置為x!=0;再如:處理一行字符數(shù)據(jù)時(shí),‘\n’常作為結(jié)束詞:
cin.get(inchar);
while(inchar!=‘\n’){
cout<<inchar;cin.get(inchar);}7/21/2023372)End-of-file-controlledloops用循環(huán)從文件中讀取數(shù)據(jù)時(shí),如果不設(shè)定結(jié)束標(biāo)志,在讀入最后一個(gè)數(shù)據(jù)后,循環(huán)體還要執(zhí)行一次,文件流就進(jìn)入“出錯(cuò)”狀態(tài)eg.inData>>intVal;//inDataisthename//ofthefilestreaminourprogram
while(inData){cout<<intVal<<endl;
inData>>intVal;}7/21/2023383)Flag-ControlledLoopsflag須是一個(gè)布爾變量,通常在循環(huán)前把它設(shè)為true,其值為false時(shí)結(jié)束循環(huán)。eg1.intsum=0;
boolnonNegative=true;
while(nonNegative){cin>>number;if(number<0)
nonNegative=false;elsesum=sum+number;}7/21/202339eg2.判斷一個(gè)數(shù)是不是素?cái)?shù)。
int
isPrime(intn)
{
inti=2;
int
flag=true;
while(flag&&i<=n/2){if(n%i==0)flag=false;elsei++;
} returnflag;}7/21/2023402、用循環(huán)完成的任務(wù)計(jì)數(shù)(counting)
eg.count=0;
cin.get(inChar);
while(inChar!=‘.’){count++;
cin.get(inChar);}累加(summing)7/21/202341#include<iostream.h>voidmain(){inti(1),sum(0); while(i<=10){sum+=i;i++;}
cout<<"sum="<<sum<<endl;}運(yùn)行結(jié)果:sum=55例3-4
求自然數(shù)1~10之和分析:本題需要用累加算法,累加過(guò)程是一個(gè)循環(huán)過(guò)程,可以用while語(yǔ)句實(shí)現(xiàn)。7/21/202342保留值的軌跡(keepingtrackofapreviousvalue)
eg.count=0;
inFile.get(prevChar);
inFile.get(currChar);
while(inFile){if(currChar==‘=‘&&prevChar==‘!’)count++;
prevChar=currChar;
inFile.get(currChar);}
cout<<count<<“!=werefound.”<<endl;7/21/2023433、怎樣設(shè)計(jì)循環(huán)Flowofcontrol
i)如何讓循環(huán)結(jié)束
ii)條件如何初始化iii)條件如何變化Processintheloop
確定在一次的循環(huán)中要做什么7/21/202344do-while語(yǔ)句---先執(zhí)行循環(huán)體,后判斷條件一般形式do語(yǔ)句while(表達(dá)式);可以是復(fù)合語(yǔ)句或簡(jiǎn)單句,但都要用{}括起來(lái)。執(zhí)行順序先執(zhí)行循環(huán)體語(yǔ)句,后判斷條件。
表達(dá)式為true時(shí),繼續(xù)執(zhí)行循環(huán)體二)do-while
語(yǔ)句7/21/202345例3-5
輸入一個(gè)整數(shù),將各位數(shù)字反轉(zhuǎn)后輸出。#include<iostream.h>voidmain(){ intn,right_digit,newnum=0; cout<<"Enterthenumber:"; cin>>n; cout<<"Thenumberinreverseorderis"; do { right_digit=n%10; cout<<right_digit; n/=10; } while(n!=0);
cout<<endl;
}運(yùn)行結(jié)果:Enterthenumber:365Thenumberinreverseorderis5637/21/202346對(duì)比下列程序:程序1:#include<iostream.h>voidmain(){
inti,sum(0);
cin>>i;while(i<=10){sum+=i;i++;}cout<<"sum="<<sum<<endl;}程序2:#include<iostream.h>voidmain(){
inti,sum(0);
cin>>i;do{sum+=i;i++;}while(i<=10);
cout<<"sum="<<sum<<endl;}7/21/202347語(yǔ)法形式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
循環(huán)前先求解非0時(shí)執(zhí)行循環(huán)體,0時(shí)跳出循環(huán)每次執(zhí)行完循環(huán)體后求解語(yǔ)句三)for
語(yǔ)句思考:假設(shè)循環(huán)體執(zhí)行N次,表達(dá)式2和3分別執(zhí)行多少次?7/21/202348for語(yǔ)句的最簡(jiǎn)單形式:
for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)
語(yǔ)句例如:for(i=1;i<=100;i++)sum=sum+i;
7/21/202349循環(huán)變量賦初值循環(huán)條件?語(yǔ)句循環(huán)變量增值for語(yǔ)句的下一語(yǔ)句for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)語(yǔ)句表達(dá)式3表達(dá)式2表達(dá)式17/21/202350例3-6:輸入一個(gè)整數(shù),求出它的所有因子#include<iostream.h>voidmain(void){ intn,k; cout<<"Enterapositiveinteger:"; cin>>n; cout<<"Number"<<n<<“
Factors";
for(k=1;k<=n;k++) if(n%k==0) cout<<k<<"";cout<<endl;}7/21/202351優(yōu)化算法:#include<iostream.h>voidmain(void){ intn,k; cout<<"Enterapositiveinteger:"; cin>>n; cout<<"Number"<<n<<“
Factors";
for(k=1;k<=n/2;k++)
if(n%k==0)
cout<<k<<"";
cout<<n<<endl;}7/21/202352運(yùn)行結(jié)果1:Enterapositiveinteger:36Number36Factors123469121836運(yùn)行結(jié)果2:Enterapositiveinteger:7Number7Factors177/21/202353注意每個(gè)循環(huán)都有自己的賦初值、判斷條件和改變值的語(yǔ)句。Intitializeouterloopwhile(outerloopcondition){}Intitializeinnerloopwhile(innerloopcondition){Innerloopprocessingandupdate}四)循環(huán)的嵌套嵌套循環(huán)的框架:7/21/202354
outCount=1;
while(outCount<=limit1){…inCount=1;
while(inCount<=limit2){…
inCount++;}
outCount++;}
注意:設(shè)計(jì)嵌套循環(huán)時(shí)先設(shè)計(jì)外層循環(huán)。7/21/202355#include<iostream.h>voidmain(){
inti(1),a(0); for(;i<=5;i++) { do{ i++; a++; }while(i<3); i++; }
cout<<a<<“,”<<i<<endl;}結(jié)果為:3,8例3-7
寫(xiě)出下列程序的運(yùn)行結(jié)果7/21/202356例3-8
編寫(xiě)程序輸出以下圖案*************************1234
1237/21/202357#i
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025一般基本建設(shè)合同內(nèi)容
- 印刷包裝鐵藝施工合同范文
- 砂石銷(xiāo)售合同糾紛案例
- 休閑度假村房產(chǎn)交易合同范本
- 賽馬場(chǎng)光伏發(fā)電項(xiàng)目施工合同
- 娛樂(lè)經(jīng)紀(jì)合同管理規(guī)范
- 2025年度木工班組勞務(wù)分包合同范本(含安全協(xié)議)2篇
- 豪華別墅管家聘用合同
- 2025年度全國(guó)人才派遣與咨詢服務(wù)合同范本3篇
- 2025年度沈陽(yáng)住宅二手房買(mǎi)賣(mài)合同范本標(biāo)準(zhǔn)版2篇
- 體育教師的個(gè)人工作總結(jié)
- 評(píng)語(yǔ)大全之學(xué)生英語(yǔ)學(xué)科評(píng)語(yǔ)
- 《職業(yè)輔導(dǎo)》自考學(xué)習(xí)筆記
- 產(chǎn)后出血預(yù)防與處理指南(2023)解讀
- 《姓氏歌》第一課時(shí)(課件)語(yǔ)文一年級(jí)下冊(cè)
- 2024風(fēng)力發(fā)電機(jī)組 整機(jī)一階調(diào)諧質(zhì)量阻尼器
- GB/T 43686-2024電化學(xué)儲(chǔ)能電站后評(píng)價(jià)導(dǎo)則
- 小學(xué)英語(yǔ)語(yǔ)法復(fù)習(xí)課件1
- (高清版)TDT 1037-2013 土地整治重大項(xiàng)目可行性研究報(bào)告編制規(guī)程
- 中國(guó)旅游集團(tuán)2024年校園招聘筆試參考題庫(kù)附帶答案詳解
- 導(dǎo)管室進(jìn)修匯報(bào)課件
評(píng)論
0/150
提交評(píng)論