正文

for循環(huán)、字符串與數(shù)組(1)

通過游戲編程實戰(zhàn)教新手學(xué)C++編程 作者:(美)Michael Dawson


之前章節(jié)已經(jīng)介紹了如何使用單個值,本章將介紹如何使用數(shù)據(jù)序列。您將學(xué)習(xí)更多有關(guān)字符串(字符序列的對象)的知識。本章還將介紹如何使用任意類型的序列,以及一種非常適合于與這些序列一起使用的新型循環(huán)。具體而言,本章內(nèi)容如下:

● 使用for循環(huán)對序列進行遍歷

● 使用組合了數(shù)據(jù)和函數(shù)的對象

● 使用string對象及其成員函數(shù)處理字符序列

● 使用數(shù)組對任意類型序列進行存儲、訪問和操作

● 使用多維數(shù)組更好地表示某種數(shù)據(jù)集合

3.1  使用for循環(huán)

第2章已經(jīng)介紹了一種循環(huán):while循環(huán)?,F(xiàn)在介紹另外一種循環(huán),即for循環(huán)。與while循環(huán)一樣,for循環(huán)允許重復(fù)執(zhí)行一段代碼,但是它特別適合于計數(shù)以及遍歷序列數(shù)據(jù)(如RPG游戲中角色物品欄中的物品)。

下面給出for循環(huán)的一般形式:

for (initialization; test; action)

statement;

initialization是為循環(huán)設(shè)置初始條件的語句(例如,它可能將計數(shù)器變量的值置為0)。每次在執(zhí)行循環(huán)體之前都要對表達式test進行測試,就像while循環(huán)一樣。如果test為false,程序轉(zhuǎn)移到循環(huán)之后的語句。如果test為true,則執(zhí)行statement。接下來執(zhí)行action(通常是增加計數(shù)器變量的值)。該過程將一直重復(fù),直到test為false,隨后循環(huán)終止。

3.1.1  Counter程序簡介

Counter程序向前、向后以及每次隔5進行計數(shù),甚至還繪出一個有行有列的網(wǎng)格。這些全都是通過for循環(huán)來完成的。程序運行示例如圖3-1所示。

圖3-1  for循環(huán)完成全部的計數(shù)工作,而一對嵌套的for循環(huán)顯示了網(wǎng)格

從Course Technology網(wǎng)站(www.courseptr.com/downloads)或本書合作網(wǎng)站(http://www. tupwk.com.cn/downpage)上可以下載到該程序的代碼。程序位于Chapter 3文件夾中,文件名為counter.cpp。

// Counter

// Demonstrates for loops

#include <iostream>

using namespace std;

int main()

{

cout << "Counting forward:\n";

for (int i = 0; i < 10; ++i)

{

cout << i << " ";

}

cout << "\n\nCounting backward:\n";

for (int i = 9; i >= 0; --i)

{

cout << i << " ";

}

cout << "\n\nCounting by fives:\n";

for (int i = 0; i <= 50; i += 5)

{

cout << i << " ";

}

cout << "\n\nCounting with null statements:\n";

int count = 0;

for ( ; count < 10; )

{

cout << count << " ";

++count;

}

cout << "\n\nCounting with nested for loops:\n";

const int ROWS = 5;

const int COLUMNS = 3;

for (int i = 0; i < ROWS; ++i)

{

for (int j = 0; j < COLUMNS; ++j)

{

cout << i << "," << j << " ";

}

cout << endl;

}

return 0;

}

陷阱

如果您使用的是較早的、沒有完全實現(xiàn)當(dāng)前的C++標(biāo)準(zhǔn)的編譯器,在編譯這個程序時,可能會遇到像error: 'i' : redefinition; multiple initialization這樣的錯誤。

最好的解決辦法是使用一款現(xiàn)代的兼容編譯器。幸運的是,從網(wǎng)站http://www. microsoft.com/express/上可以下載到流行(且免費)的Microsoft Visual C++ Express Edition IDE,其中包含一款現(xiàn)代編譯器。

如果必須使用早期的編譯器,則應(yīng)當(dāng)在同一作用域中為所有的for循環(huán)聲明一次計數(shù)器變量。第5章中將介紹作用域的概念。


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號