關於迴圈結構的一些感悟
山東農業大學2018級數學系周小皓
經過一段時間的學習,我對於迴圈結構有了一些理解,下面我就寫一下我對於迴圈結構的理解。
(一)知識體系:
迴圈結構有三種:for、while、do while,在面對不同的問題時,選用不同的迴圈語句可以有效精簡程式碼。
for迴圈的格式為for(控制變數初始化表示式;條件表示式;增量表達式)
① 控制變量表達式只被執行一次;
② 當迴圈體句只有一條程式碼時可以省略大括號;
③ Break和continue的使用:
Break用在switch結構中;和迴圈結構中用於跳出迴圈,即結束迴圈,防止死迴圈。
Continue用於結束本次迴圈,直接進行下一次迴圈;如假設迴圈100次,在第十次迴圈時遇到了continue,那麼continue餘下部分不執行,直接執行第十一次迴圈,continue可加快迴圈進度。
Do while迴圈(直到型迴圈: ……直到條件為假)格式:
Do{
語句塊;
}while(表示式);
程式先執行語句塊,然後再計算表示式的值,如果表示式的值非0(真),再去執行語句塊,執行完語句塊以後再計算表示式的值,如果如果表示式的值非0(真)……直到執行完了以後發現表示式的值為0,此時退出迴圈。
注意:
1)當首次執行表示式為真的時候,執行的結果和while一樣。
2)當首次執行表示式為假的時候,while執行迴圈體0次,但是dowhile會執行一次。
While迴圈(當型迴圈: 當 ……滿足時候,然後……)格式:
While(表示式){
語句塊;
}
先計算表示式的值,如果表示式的值非0(也就是真),就會執行語句塊。
執行完語句塊以後,繼續計算表示式的值,如果表示式的值非0(也就是真),再繼續執行語句塊……當表示式的值為0(也就是假)的時候,迴圈結束。
- 多組輸入
當需要輸入多組資料時需要用多組輸入,具體形式如下:
1.C的多組輸入:while(scanf(“%d”,&a)!=EOF)
2.C++的多組輸入:while(cin>>a)
粘牆三角形
#include
using namespace std;
#include
int main()
{ int n;
char c;
while(cin>>n)
{
for(int i=1;i<=n;++i)
{
if(i!=n)
cout<<“a”<<setw(n-i)<<" ";
else cout<<“a”;
for(int j=1;j<=i;++j)
{
c=j+96;
cout<<c;
}
cout<<endl;
}
cout<<endl;
}
return 0;
}
程式碼片`
㈡迴圈結構的應用
- 許多問題都需要用到迴圈結構,如求100以內的素數及把一個整數倒置,用迴圈結構解題十分方便。
整數倒置
#include<iostream>
using namespace std;
int main()
{
int a,b,c=0;
cin>>a;
while(a!=0)
{
b=a%10;
c=c*10+b;
a/=10;
}
cout<<c<<endl;
return 0;
}
2.迴圈結構作為三大結構之一,許多程式都需要用到迴圈結構。
㈢我對迴圈結構的感悟
迴圈結構能夠解決許多現實問題,通過數學建模把實際問題轉化,然後通過程式設計使用迴圈結構等可以快速解決問題,節約了時間。
不多於5位正整數的處理
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int a,c=0,sum=0,n,m;
int q,p,x; int t,y;
cin>>n;
m=n;
while(n!=0)
{
a=n%10;
c=c*10+a;
n/=10;
sum++;
}
cout<<sum<<endl;
if(m>=10000)
{
t=m/10000;
y=m/1000-t*10;
p=m/100-t*100-y*10;
q=m/10-t*1000-y*100-p*10;
x=m-t*10000-y*1000-p*100-q*10;
cout<<t<<" "<<y<<" "<<p<<" "<<q<<" "<<x<<endl;
}
else if((m>=1000)&&(m<10000))
{
y=m/1000;
p=m/100-y*10;
q=m/10-y*100-p*10;
x=m%10;
cout<<y<<" "<<p<<" "<<q<<" "<<x<<endl;
}
else if((m>=100)&&(m<1000))
{
p=m/100;
q=m/10-p*10;
x=m-p*100-q*10;
cout<<p<<" "<<q<<" "<<x<<endl;
}
else if((m>=10)&&(m<100))
{
q=m/10;
x=m-q*10;
cout<<q<<" "<<x<<endl;
}
else if((m>=1)&&(m<10))
{
x=m;
cout<<x<<endl;
}
cout<<c<<endl;
return 0;
}
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int a,c=0,sum=0,n,m;
int q,p,x; int t,y;
cin>>n;
m=n;
while(n!=0)
{
a=n%10;
c=c*10+a;
n/=10;
sum++;
}
cout<<sum<<endl;
if(m>=10000)
{
t=m/10000;
y=m/1000-t*10;
p=m/100-t*100-y*10;
q=m/10-t*1000-y*100-p*10;
x=m-t*10000-y*1000-p*100-q*10;
cout<<t<<" "<<y<<" "<<p<<" "<<q<<" "<<x<<endl;
}
else if((m>=1000)&&(m<10000))
{
y=m/1000;
p=m/100-y*10;
q=m/10-y*100-p*10;
x=m%10;
cout<<y<<" "<<p<<" "<<q<<" "<<x<<endl;
}
else if((m>=100)&&(m<1000))
{
p=m/100;
q=m/10-p*10;
x=m-p*100-q*10;
cout<<p<<" "<<q<<" "<<x<<endl;
}
else if((m>=10)&&(m<100))
{
q=m/10;
x=m-q*10;
cout<<q<<" "<<x<<endl;
}
else if((m>=1)&&(m<10))
{
x=m;
cout<<x<<endl;
}
cout<<c<<endl;
return 0;
}