11C++迴圈結構-for迴圈(1)

gdyyx發表於2024-12-10

一、for語句

引出問題:

當需要重複執行某一語句時,使用for語句。for語句最常用的格式為:
for (迴圈變數賦初值;迴圈條件;迴圈變數增值)
語句;

注:
“語句;”就是迴圈體,可以是一個簡單的語句,也可以是一個用“{}”括起來的複合語句。
它的執行過程如圖示:

編寫這個程式可以如此:

#include <typeinfo>    //變數型別標頭檔案,還是有問題;無法判斷int
#include <iostream>    //包含輸入輸出流標頭檔案iostream
using namespace std;    //指明程式 使用名稱空間std(標準)
int main()
{
    int i;
    for (i=1;i<=12;i++)
        cout<<"老狼老狼幾點鐘?"<<i<<"點鐘。"<<endl;
    cout<<"狼來了,快跑!"<<endl;
    return 0;
 }

練習

(1)變數i的初值為0,在下列語句中,每執行一次能使變數i的值在1、0兩數值上交替出現的是()。

   A.i=i+1      B.i=l-i      C.i=-i      D.i=i-1

(2)閱讀程式寫結果

#include <typeinfo>    //變數型別標頭檔案,還是有問題;無法判斷int
#include <iostream>    //包含輸入輸出流標頭檔案iostream
using namespace std;    //指明程式 使用名稱空間std(標準)
int main()
{
    int i;
    for (i=1;i<=5;i++)
        cout<<'*';
    cout<<i<<endl;
    return 0;
 }

i的輸出:__________
(3)完善第12行程式。
輸出1~100的所有整數。

 6 #include <typeinfo>    //變數型別標頭檔案,還是有問題;無法判斷int 
 7 #include <iostream>    //包含輸入輸出流標頭檔案iostream 
 8 using namespace std;    //指明程式 使用名稱空間std(標準) 
 9 int main()
10 {
11     int i;
12     for (i=1;i     ;    )
13         cout<<i<<endl;
14     return 0; 
15  }  

二、for語句與if語句的結合

問題描述:狐狸老師和格萊爾玩報數遊戲。狐狸老師數到2的倍數時,格萊爾就說“叮叮”;狐狸老師數到3的倍數時,格萊爾就說“噹噹”;狐狸老師數到2和3的公倍數時,格萊爾就說“叮叮噹噹”。
狐狸老師:1
狐狸老師:2
格萊爾:叮叮
狐狸老師:3
格萊爾:噹噹
狐狸老師:4
格萊爾:叮叮
狐狸老師:5
狐狸老師:6格萊爾:叮叮噹噹
......
試編一程式,模擬1~20的報數程式。
流程圖:

#include <iostream>    //包含輸入輸出流標頭檔案iostream
using namespace std;    //指明程式 使用名稱空間std(標準)
int main()
{
    int i;
    for (i=1;i<=20;i++)
    {
        cout<<i<<' ';
        if (i%2==0) cout<<"叮叮";
        if (i%3==0) cout<<"噹噹";
        if (i%2==0 || i%3==0) cout<<endl;
    }
    return 0;
}

練習

(1).結構化程式設計的三種基本邏輯結構是()
A.順序結構、選擇結構和迴圈結構
B.選擇結構、巢狀結構和迴圈結構
C.選擇結構、迴圈結構和模組結構
D.順序結構、遞迴結構和迴圈結構
(2)閱讀程式寫結果

#include <iostream>    //包含輸入輸出流標頭檔案iostream
using namespace std;    //指明程式 使用名稱空間std(標準)
int main()
{
    int i,n;
    cin>>n;
    for (i=n;i>1;i--)
        cout<<i;
    return 0;
}

輸入:5
n,i的輸出:______________
(3)完善第9、12行程式

 4 #include <iostream>    //包含輸入輸出流標頭檔案iostream 
 5 using namespace std;    //指明程式 使用名稱空間std(標準) 
 6 int main()
 7 {
 8     int i,n;
 9     for (    ;i<=10;i++)
10     {
11         n=43%i;
12         cout<<i<<" "<<  <<endl; 
13     }
14     return 0;
15 }

三、累加求和

試編一程式,先求1+2+3+4+5的和。
程式流程圖與程式碼如下:

#include <iostream>    //包含輸入輸出流標頭檔案iostream
using namespace std;    //指明程式 使用名稱空間std(標準)
int main()
{
    int i,sum=0;
    for (i=1;i<=5;i++)
    {
        sum+=i;
    }
    cout<<"1+2+3+4+5="<<sum;
    return 0;
}

練習

(1)計算機使用的鍵盤中,Shift鍵是()。

   A.退格鍵      B.上檔鍵      C.空格鍵      D鍵盤型別

(2)閱讀程式寫結果

#include <iostream>    //包含輸入輸出流標頭檔案iostream
using namespace std;    //指明程式 使用名稱空間std(標準)
int main()
{
    int i,sum=0;
    for (i=1;i<=5;i++)
        sum+=i*i;
    cout<<sum<<endl;
    return 0;
}

i,sum的輸出:_____________________
(3)完善第9、11行程式
求1×2+2×3+3×4+...........+100×101的和是多少?

 4 #include <iostream>    //包含輸入輸出流標頭檔案iostream 
 5 using namespace std;    //指明程式 使用名稱空間std(標準) 
 6 int main()
 7 {
 8     int i,sum;
 9           ;
10     for (i=1;i<=100;i++)
11                      ; 
12     cout<<sum<<endl;
13     return 0;
14 }

四、超長整型與資料溢位

例程:試編一程式,算一算,64個棋盤格中放入麥粒;第一個放入一粒,每一個放入是前一個的兩倍,求第64個格子放入的麥粒數是多少?
流程圖與程式程式碼如下:

#include <iostream>    //包含輸入輸出流標頭檔案iostream
using namespace std;    //指明程式 使用名稱空間std(標準)
int main()
{
    long long sum,n;
    int i;
    sum=0;
    n=1;
    for (i=1;i<=64;i++)
    {
        n*=2;
        sum+=n;
        cout<<i<<"  "<<n<<endl;
    }
    cout<<"總數:"<<sum<<endl;
    return 0;
}

執行出現問題,為什麼會這樣呢?因為運算過程中產生的資料實在是太大了,超出了超長整型資料long long可表示的範圍,造成了資料溢位錯誤,資料溢位在編譯與執行時並不報錯,不易發現。超長整型資料long long表示的範圍是-92233720368547758089223372036854775807,即-2^632^63-1,只有學了高精度計算才能解決此類問題。另int整型資料可表示的範圍為
-21474836482147483647,即-2^312^31-1。
英漢小詞典
long long [lon][lon]超長整型

練習

(1)彩色顯示器所顯示的五彩斑斕的色彩,是紅色、藍色和()色混合而成的。

   A.紫      B.橙      C.黑      D.綠

(2)閱讀程式寫結果

#include <iostream>    //包含輸入輸出流標頭檔案iostream
using namespace std;    //指明程式 使用名稱空間std(標準)
int main()
{
    int m,n,i;
    long long ans=0;
    cin>>m>>n;
    for (i=m;i<=n;i=i+2)
        ans+=i;
    cout<<ans<<' ';
    cout<<i;
    return 0;
}

輸入:1 10
m,n,i,ans的輸出:_________________
(3)完善第14、16行程式。
沃倫.巴菲特,1930年出生於美國,是全球著名的投資大師,也是一位慈善家,其管理的公司年收益率可以達到20%以上。假設年收益率為20%,10萬元的投資一年後是12萬元,兩年後是14.4萬元,試問20年後是多少萬元?

 8 #include <iostream>    //包含輸入輸出流標頭檔案iostream 
 9 using namespace std;    //指明程式 使用名稱空間std(標準) 
10 int main()
11 {
12     int i;
13     float s=10.0;
14     for (i=1;i<=20;   )
15     {
16                  ;
17         cout<<i<<" "<<s<<endl;
18     }
19     return 0;
20 }

五、continue語句

模擬遊戲,規則是:大家圍坐在一起,從1開始報數,但逢7的倍數或者尾數是7,則不去報數,要喊“過”。
試編一程式,人數1~20。
程式程式碼如下:

#include <iostream>    //包含輸入輸出流標頭檔案iostream
using namespace std;    //指明程式 使用名稱空間std(標準)
int main()
{
    int i;
    for (i=1;i<=20;i++)
    {
        if (i%7==0 || i%10==7)
            cout<<"過"<<' ';
        else
            cout<<i<<' ';
    }
    return 0;
}

另一種方法:

其中語句“continue;”的作用為提前結束本次迴圈,即跳過迴圈體中下面尚未執行的語句,接著進行下一次是否執行迴圈的判定。

#include <iostream>    //包含輸入輸出流標頭檔案iostream
using namespace std;    //指明程式 使用名稱空間std(標準)
int main()
{
    int i;
    for (i=1;i<=20;i++)
    {
        if (i%7==0 || i%10==7)
        {
            cout<<"過"<<' ';
            continue;    //結算本次for迴圈,進行下一次迴圈。
        }
        cout<<i<<' ';
    }
    return 0;
}

練習

(1)斷電後會丟失資料的儲存器是()。

   A.RAM      B.隨身碟      C.硬碟      D.光碟

(2)閱讀程式寫結果

#include <iostream>    //包含輸入輸出流標頭檔案iostream
using namespace std;    //指明程式 使用名稱空間std(標準)
int main()
{
    for (int i=7;i>=1;i--)
    {
        if (i%2==0)
            continue;    //結算本次for迴圈,進行下一次迴圈。
        cout<<i;
        if (i==1)
            continue;    //當i為時,結束迴圈,不輸出逗號(',')。
        cout<<',';
    }
    return 0;
}

(3)完善第10、11行程式
輸出100以內所有的偶數。

 5 #include <iostream>    //包含輸入輸出流標頭檔案iostream 
 6 using namespace std;    //指明程式 使用名稱空間std(標準) 
 7 int main()
 8 {
 9     int i; 
10     for (i=2;i<=100;     )
11         cout<<  <<endl;
12     return 0;
13 }

相關文章