C++ for

2018-03-24 15:59 更新

學(xué)習(xí)C++ - C++ for

以下代碼顯示了如何使用for循環(huán)。


#include <iostream> 
int main(){ 
     using namespace std; 
     int i;  // create a counter 
     for (i = 0; i < 5; i++) 
         cout << "C++ knows loops.\n"; 
     cout << "C++ knows when to stop.\n"; 
     return 0; 
} 

上面的代碼生成以下結(jié)果。

for循環(huán)部分

for循環(huán)提供了執(zhí)行重復(fù)任務(wù)的逐步操作。

for循環(huán)的部分處理這些步驟:

  • 初始設(shè)定值
  • 執(zhí)行測(cè)試以查看循環(huán)是否應(yīng)該繼續(xù)
  • 執(zhí)行循環(huán)操作
  • 用于測(cè)試的更新值(s)

控制部分后的語句稱為循環(huán)體,只要測(cè)試表達(dá)式保持為真,就執(zhí)行該語句。

for (initialization; test-expression; update-expression) 
   body 

以下代碼顯示了如何在for循環(huán)中使用數(shù)字測(cè)試。


#include <iostream> 
using namespace std; 
int main() 
{ 
    cout << "Enter the starting countdown value: "; 
    int limit; 
    cin >> limit; 
    int i; 
    for (i = limit; i; i--)     // quits when i is 0 
         cout << "i = " << i << "\n"; 
    cout << "Done now that i = " << i << "\n"; 
    return 0; 
} 

上面的代碼生成以下結(jié)果。

注意

該程序使用一個(gè)循環(huán)來計(jì)算連續(xù)階乘的值。

然后它使用第二個(gè)循環(huán)顯示結(jié)果。此外,程序還介紹了使用外部聲明的值。


#include <iostream> 
const int SIZE = 16;      // example of external declaration 
int main() 
{ 
     long long factorials[SIZE]; 
     factorials[1] = factorials[0] = 1LL; 
     for (int i = 2; i < SIZE; i++) 
          factorials[i] = i * factorials[i-1]; 
     for (int i = 0; i < SIZE; i++) 
          std::cout << i << "! = " << factorials[i] << std::endl; 
     return 0; 
} 

上面的代碼生成以下結(jié)果。

改變步長

您可以通過更改更新表達(dá)式來更改。

該程序通過用戶選擇的步長增加循環(huán)計(jì)數(shù)器。


#include <iostream> 
int main() 
{ 
     using std::cout;   // a using declaration 
     using std::cin; 
     using std::endl; 
     cout << "Enter an integer: "; 
     int by; 
     cin >> by; 
     cout << "Counting by " << by << "s:\n"; 
     for (int i = 0; i < 100; i = i + by) 
       cout << i << endl; 
     return 0; 
} 

上面的代碼生成以下結(jié)果。

例子

內(nèi)部字符串與for循環(huán)


#include <iostream>
#include <string>
using namespace std;
int main()
{
    cout << "Enter a word: ";
    string word;
    cin >> word;

    // display letters in reverse order
    for (int i = word.size() - 1; i >= 0; i--)
        cout << word[i];
    cout << "\nBye.\n";
    return 0; 
}

上面的代碼生成以下結(jié)果。

復(fù)合語句或塊

程序使用大括號(hào)將三個(gè)單獨(dú)的語句組合成單個(gè)塊。


#include <iostream>
using namespace std;
int main()
{
    cout << "Please enter five values:\n";
    double number;
    double sum = 0.0;
    for (int i = 1; i <= 5; i++)
    {                                   // block starts here
        cout << "Value " << i << ": ";
        cin >> number;
        sum += number;
    }                                   // block ends here
    cout << "They sum to " << sum << endl;
    cout << "and average to " << sum / 5 << ".\n";
    return 0; 
}

上面的代碼生成以下結(jié)果。

變量隱藏

如果您在塊中聲明與塊外的其他名稱相同的塊中的變量,則新變量會(huì)從塊內(nèi)的點(diǎn)隱藏舊變量。

那么舊的可以再次變得可見,如下例所示:


#include <iostream> 
using std::cout; 
using std::endl; 

int main() { 
     int x = 20;   // original x 
     {   // block starts 
         cout << x << endl;  // use original x 
         int x = 100;        // new x 
         cout << x << endl;  // use new x 
     }   // block ends 
    cout << x << endl;      // use original x 
    return 0; 
} 

上面的代碼生成以下結(jié)果。

例2

以下代碼顯示如何反轉(zhuǎn)數(shù)組。


#include <iostream> 
#include <string> 
using namespace std; 
int main() { 
     
     cout << "Enter a word: "; 
     string word; 
     cin >> word; 

     char temp; 
     int i, j; 
     for (j = 0, i = word.size() - 1; j < i; --i, ++j) 
     {                       // start block 
         temp = word[i]; 
         word[i] = word[j]; 
         word[j] = temp; 
     }                       // end block 
     cout << word << "\nDone\n"; 
     return 0; 
} 

上面的代碼生成以下結(jié)果。

例3

以下代碼顯示如何跳過非數(shù)字輸入。


#include <iostream>
using namespace std;
const int Max = 5;
int main()
{
    int golf[Max];
    cout << "You must enter " << Max << " rounds.\n";
    int i;
    for (i = 0; i < Max; i++)
    {
        cout << "round #" << i+1 << ": ";
        while (!(cin >> golf[i])) {
            cin.clear();     // reset input
            while (cin.get() != "\n")
                continue;    // get rid of bad input
            cout << "Please enter a number: ";
        }
    }

    double total = 0.0;
    for (i = 0; i < Max; i++)
        total += golf[i];
    cout << total / Max << " = average score " << Max << " rounds\n";

    return 0; 
}

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)