C++程序設計 大學基礎教程第三章_第1頁
C++程序設計 大學基礎教程第三章_第2頁
C++程序設計 大學基礎教程第三章_第3頁
C++程序設計 大學基礎教程第三章_第4頁
C++程序設計 大學基礎教程第三章_第5頁
已閱讀5頁,還剩68頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

C++大學基礎教程第3章C++控制語句

北京科技大學信息基礎科學系1用計算機解決實際問題,首先要分析問題,設計合適的算法,然后編程實現算法。2#include<iostream>usingnamespacestd;voidmain(){

for(inti=1;i<20;i++)

for(intj=1;j<20;j++)

for(intk=1;k<20;k++) if(i+j+k==20&&i+j>k&&i+k>j&&j+k>i)

cout<<"i="<<i<<"j="<<j<<"k="<<k<<endl;}已知三角形的周長為20,求出所有滿足條件的三角形(求邊長)。3開始i=1~20j=1~20k=1~20i+j+k=20

i+j>ki+k>j

j+k>i輸出:ijk結束滿足不滿足i>=20j>=20k>=204第3章

C++控制語句3.1算法的基本控制結構3.2if選擇語句3.3switch選擇語句3.4循環語句3.5循環嵌套3.6應用舉例53.1算法的基本控制結構

63.1算法的基本控制結構算法

1、計算機執行的操作2、這些操作的順序偽碼

采用類似計算機語言的分句格式,以自然語言描述算法。73.1算法的基本控制結構流程圖

開始/結束執行判斷聯系83.1算法的基本控制結構程序的三種基本控制結構(1)順序結構(2)選擇結構(3)循環結構開始執行1執行2執行3結束開始條件執行2執行1結束是否開始執行1執行2條件結束是否93.1算法的基本控制結構流程控制語句

選擇語句:if..else、switch

循環語句:while、for、do..while

轉向語句:break、continue103.2if選擇語句

113.2if選擇語句if_else

1、沒有else分支

2、雙分支3、多分支4、if

語句的嵌套123.2if選擇語句1、沒有else分支例如:比較x和y的大小,如果x大則輸出x的值if(表達式)語句;if(x>y)

cout<<x<<endl;133.2if選擇語句

2、雙分支例如:比較x,y的大小,將較大的數輸出

if(表達式)語句1;else

語句2;if(x>y)

cout<<x<<endl;else

cout<<y<<endl;14例子

任意輸入一個4位整數的年份,判斷該年是否是潤年?

是指年份能被4整除,并且不能被100整除或能被400整除的那些年15#include<iostream>usingnamespacestd;voidmain(){

intyear;

cin>>year;

if((year%4==0)&&(year%100!=0)||(year%400==0))

cout<<"潤年"<<endl; else

cout<<"不是潤年"<<endl;}163.2if選擇語句3、多分支if(表達式1)語句1;

elseif(表達式2)

語句2;

elseif(表達式3)

語句3;…

else

語句n;17例子:輸出學生的成績#include<iostream>usingnamespacestd;voidmain(){ intx;cin>>x;

if(x>=90)

cout<<“優秀”<<endl;elseif(x>=80)

cout<<“良好”<<endl;

elseif(x>=60)

cout<<“合格”<<endl;else

cout<<“不及格”<<endl;}X>=80&&x<90183.2if選擇語句4、if語句的嵌套if(表達式1)

if(表達式2)語句1

else

語句2else

if(表達式3)語句3

else

語句419例子:輸出a,b,c中較大的數#include<iostream>usingnamespacestd;voidmain(){

inta,b,c;

cin>>a>>b>>c;

if(a>b)

{ if(a>c)cout<<a<<endl; elsecout<<c<<endl; } else

{ if(b>c)cout<<b<<endl; elsecout<<c<<endl; }}cout<<(a>b?(a>c?a:c):(b>c?b:c));a>ba>cb>coutaoutcoutb

outca>ba>cb>c203.2if選擇語句注意:二義性intx;cin>>x;if(x>0)if(x<50)

cout<<“xis<50”<<endl;else

cout<<“xis<=0”<<endl;

if和else的對應關系,else總是與離它最近的if匹配。{}if(x>0)if(x<50)

cout<<“xis<50”<<endl;else

cout<<“xis<=0”<<endl;213.3switch選擇語句

223.3switch選擇語句switch(表達式){case常量表達式1:語句1break;case常量表達式2:語句2break;┇case常量表達式n:

語句nbreak;default:語句n+1}跳出switch語句整型、

字符型

或枚舉類型23例子:輸出學生的成績

intx;cin>>x;

switch(x/10){case10:case9:cout<<“優秀”<<endl;break;case8:cout<<“良好”<<endl;break;case7:case6:cout<<“合格”<<endl;break;default:cout<<“不及格”<<endl; }243.4循環語句

253.4循環語句三種基本語法 1、while語句 2、do…while語句 3、for語句26#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){

cout<<setfill('*') <<setw(2)<<'\n' <<setw(3)<<'\n' <<setw(4)<<'\n' <<setw(5)<<'\n' <<setw(6)<<'\n' <<setw(7)<<'\n' <<setw(8)<<'\n';}****************************27#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){

inti=2;

cout<<setfill('*');

while(i<=8) {

cout<<setw(i)<<'\n';i++;}}****************************循環變量循環體循環控制條件283.4循環語句主要包括3個部分:1、循環控制條件:判斷循環操作是否進行的條件;2、循環體:重復進行的操作;3、循環控制變量:記錄循環體執行的次數,或控制循環的結束條件。293.4循環語句while循環語句while(表達式)循環體語句;30例1:編程循環輸出1-9這9個數字?

#include<iostream>usingnamespacestd;voidmain(){

inti=1;

while(i<=9){

cout<<i<<endl;i++;}

cout<<“循環結束”<<endl;}運行結果:123456789循環結束 31例2:編程計算1+2+3+….+10的值

#include<iostream>usingnamespacestd;voidmain(){

intsum=0,i=1;

while(i<=10){sum+=i;i++;}

cout<<sum<<endl;}5532例3:打印可視字符#include<iostream>usingnamespacestd;voidmain(){unsignedcharch=32;

while(ch<127){

cout<<(int)ch<<'\t'<<ch<<'\t';

ch++; }}33例4:編程計算的值#include<iostream>usingnamespacestd;voidmain(){ intk=1,sum=0,n;

cout<<"inputn(n>0):";

cin>>n;

while(k<=n){sum=sum+k*k;k++; } if(n>0) cout<<sum/n<<endl; else cout<<"n不能<=0"<<endl;}343.4循環語句do..while循環語句

do{

循環體語句;}while(表達式);35#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){

inti=2;

cout<<setfill('*');

while(i<=8) {

cout<<setw(i)<<'\n';i++;}}****************************do{

cout<<setw(i)<<'\n';i++;}while(i<=8);36例子:編程計算的值#include<iostream>usingnamespacestd;voidmain(){

intk=1,sum=0,n;

cout<<"inputn(n>0):";

cin>>n;

while(k<=n){sum=sum+k*k;k++;} if(n>0) cout<<sum/n<<endl; else cout<<"n不能<=0"<<endl;}do{sum=sum+k*k;k++;}while(k<=n);373.4循環語句for循環語句

循環結構

1、表達式1循環變量初始化;

2、表達式2

循環控制條件;3、表達式3循環變量的變化;for(表達式1;表達式2;表達式3)循環體;38例1:編程循環輸出1-9這9個數字?

#include<iostream>usingnamespacestd;voidmain(){

for(inti=1;i<10;i++)

cout<<i<<endl;

cout<<“循環結束”<<endl;}運行結果:123456789循環結束39例2:編程計算1+2+3+….+10的值

#include<iostream.>usingnamespcestd;voidmain(){

intsum=0;

for(inti=1;i<=10;i++)sum+=i;

cout<<sum<<endl;}運行結果:55 40#include<iostream>#include<iomanip>usingnamespacestd;voidmain(){

cout<<setfill('*');}****************************例3for(inti=2;i<=8;i++)

cout<<setw(i)<<'\n';413.4循環語句——for語句1、<表達式1>可以省略

for(inti=1;i<=9;i++)

循環體;

inti=1;for(;i<=9;i++)

循環體;423.4循環語句——for語句2、<表達式2>可以省略

for(inti=1;i<=9;i++)

循環體;

for(inti=1;;i++){if(i<=9)

循環體;

elsebreak;//跳轉語句,用來跳出循環}433.4循環語句——for語句3、<表達式3>可以省略

for(inti=1;i<=9;i++)

循環體;

for(inti=1;i<=9;){

循環體;i++;

}443.4循環語句——for語句3、<表達式1><表達式3>同時省略

for(inti=1;i<=9;i++)

循環體;

inti=1;for(;i<=9;){

循環體;i++;

}453.4循環語句——for語句5、極端情況,可實現無限循環

for(;;){

循環體;}46例4:判斷輸出結果?#include<iostream>usingnamespacestd;voidmain(){

for(inti=0,j=10,k=0;i<j;i++,j--) k+=i*j;

cout<<k<<endl;}分析:ijk010019928253746467055 跳出473.4循環語句1、for:

最適合循環次數固定,循環規律非常明顯程序。2、while:

使用最多最頻繁的循環結構,具有普適性。3、do_while:

最適合至少循環一次的循環結構。483.4.4轉向語句1、break語句2、continue語句493.4.4轉向語句——break用途:

常用在while、do-while、for和switch語句中,用來跳出循環或switch語句。50例1:判斷輸出結果?#include<iostream>usingnamespacestd;voidmain(){

intsum=0;for(inti=1;i<10;i++) { if(i%3==0)break; sum+=i; }

cout<<sum<<endl;}分析isum1123跳出513.4.4轉向語句——continue用途用于循環語句中,結束本次循環,進行下一次循環;即跳過循環體中尚未執行的部分。52例1:判斷輸出結果?#include<iostream>usingnamespacestd;voidmain(){

intsum=0;for(inti=1;i<10;i++) { if(i%3==0)continue; sum+=i; }

cout<<sum<<endl;}分析isum11233371212192727跳出 533.5循環嵌套

543.5循環嵌套編程輸出國際象棋棋盤#include<iostream>usingnamespacestd;voidmain(){

for(inti=0;i<8;i++) { for(intj=0;j<8;j++) { if((i+j)%2==0)

cout<<"■";else

cout<<""; }

cout<<"\n";

}}■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■for(intj=0;j<4;j++){if(i%2==0)

cout<<"■";else

cout<<“■";}if(i%2==0)

cout<<"■■■■";else

cout<<“■■■■";55思考題目:使用For循環輸出如下圖形:

* ** *** **********************也是循環嵌套的問題:循環7次,輸出7行每行也要循環:先輸出幾個空格再輸出幾個“*”56#include<iostream>usingnamespacestd;voidmain(){for(inti=1;i<=7;i++){

for(intj=7;j>i;j--)

cout<<''; for(j=1;j<=i;j++)

cout<<'*';

cout<<endl;}}****************************573.6應用舉例

583.6應用舉例1任意輸入一個整數,判斷是否是素數?問題:什么是素數?59#include<iostream>usingnamespacestd;voidmain(){

intn,i;

cin>>n;

for(i=2;i<n;i++) if(n%i==0) break;if(i<n)

cout<<n<<"不是素數!\n"; else

cout<<n<<"是素數\n";}60改進:輸出2-100之間的素數#include<iostream>#include<cmath>usingnamespacestd;voidmain(){

for(intk=2;k<100;k++) {

intn=sqrt(k); for(inti=2;i<=n;i++) if(k%i==0) break; if(i>n)

cout<<k<<'\t'; }}613.6應用舉例2題目任意輸入一個整數,按位翻轉輸出。例如輸入124,輸出421。62#include<iostream>usingnamespacestd;voidmain(){

inti,n,result=0;

cout<<"請輸入任意一個整數:";

cin>>n;

cout<<"按位翻轉的結果為:";

while(n!=0){ i=n%10; result=result*10+i;n/=10; }

cout<<result<<endl;}分析:niresult1244412242114210跳出633.6應用舉例3題目

一球從100米高度落下,每次落地后反彈回原高度的一半,再落下。編程求解它在第n次落地時,共經過多少米?64#include<iostream>usingnamespacestd;voidmain(){doubleheight=100;doublesum=height;

for(inti=1;i<10;i++){sum+=height;

cout<<height<<'\t'<<sum<<'\t'<<i<<endl;height/=2;}

cout<<sum<<endl;}653.6應用舉例4題目若一頭小母牛,從出生起第四個年頭開始每年開始生一頭小母牛,按此規律,第n年時有多少頭母牛?

f(1)=1;f(2)=1;f(3)=1;f(n)=f(n-1)+f(n-3);分析:n=11n=21

溫馨提示

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

評論

0/150

提交評論