一、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 }