程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 循環和關系表達式,循環關系表達式

循環和關系表達式,循環關系表達式

編輯:C++入門知識

循環和關系表達式,循環關系表達式


for循環

fooloop.cpp

/*forloop.cpp*/
#include<iostream>
int main()
{
    using namespace std;
    int i;
    /*該循環首先將整數變量i設置為0:i=0
    這是循環的初始化部分。
    然後,循環測試部分檢查i是否小於5:i<5
    如果確實小於5,則程序將執行接下來的語句——循環體
    然後,程序使用循環更新部分將i加1
    直到循環將i更新為5為止。這樣接下來的測試失敗,程序將接著執行循環後的語句。*/
    for (/*循環的初始化部分*/i = 0; /*循環測試部分*/i < 5; /*循環更新部分*/i++)
        /*循環體*/cout << "C++ 知道循環.\n";
    cout << "C++知道何時停止 .\n";
    cin.get();
    cin.get();
    return 0;
}

輸出

C++ 知道循環.
C++ 知道循環.
C++ 知道循環.
C++ 知道循環.
C++ 知道循環.
C++知道何時停止 .

 

num_test.cpp

#include<iostream>
int main()
{
    using namespace std;
    cout << "Entet the starting coutdown value:";
    int limit;
    cin >> limit;
    int i;
    for (i = limit; i; i--)
        cout << "i=" << i << "\n";
    cout << "Done now that i=" << i << "\n";
    cin.get();
    cin.get();
    return 0;
}

輸出

Entet the starting coutdown value:5
i=5
i=4
i=3
i=2
i=1
Done now that i=0

for循環設計

 

formore.cpp

#include<iostream>
/*在需要數組長度的地方使用符號常量,如果數組被用了多次,修改數組長度時方便*/ const int ArSize = 16; int main() {
  long long factorials[ArSize]; factorials[1] = factorials[0] = 1LL; for(int i = 2; i < ArSize; i++) factorials[i] = i*factorials[i - 1];
/*在fot-init-statement中聲明的變量只存在於for語句中,也就說,當程序離開循環後,這種變量將消失*/ for (int i = 0; i < ArSize; i++) std::cout << i << "!=" << factorials[i] << std::endl; std::cin.get(); std::cin.get(); return 0; }

輸出

0!=1
1!=1
2!=2
3!=6
4!=24
5!=120
6!=720
7!=5040
8!=40320
9!=362880
10!=3628800
11!=39916800
12!=479001600
13!=6227020800
14!=87178291200
15!=1307674368000

 

forstr1

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

    for (int i = word.size()-1; i >= 0; i--)
        cout << word[i];
    cout << "\nBye.\n";
    cin.get();
    cin.get();
    return 0;
}

輸出

Enter a word:name
eman
Bye.

 

復合語句(語句塊)

  編寫C++for語句的格式(或語法)看上去可能比較嚴格,因為循環體必須是一條語句。如果要在循環體中包含多條語句,浙江很不方便。所幸的是,C++提供了避開這種限制的方式,通過這種方式可以在循環體中 包含任意多條語句。

  符合語句還有一種有趣的特性。如果在語句塊中定義一個新變量,則僅當程序執行該語句塊中的語句時,該變量才存在。執行完該語句塊後,變量將被釋放。這表明此變量僅在該語句塊中才是可用的。

  注意,在外部語句塊中定義的變量在內部語句塊中也是被定義的。

  如果在一個語句塊中聲明一個變量,而外部語句塊中也有一個這種名稱的變量,情況將如何呢?在聲明位置到內部語句塊結束的范圍之內,新變量將隱藏舊變量;然後舊變量再次可見。

 

while循環

  while循環是沒有初始化和更新部分的for循環,它只有測試條件和循環體:

  while(test-condition)

    body

  首先,程序計算圓括號內的測試條件表達式。如果該表達式為true,則執行循環體中的語句。

  顯然,如果希望循環最終能夠結束,循環體中的代碼必須完成某種影響測試條件表達式的操作。

while循環的結構

while.cpp

#include<iostream>
const int ArSize = 20;
int main()
{
    using namespace std;
    char name[ArSize];
    cout << "Your first name,please:";
    cin >> name;
    cout << "Here is your name,varticalized and ASCⅡized:\n";
    int i = 0;
    /*循環在遇到空值字符時停止。
    這種逐字符遍歷字符串的技術是C++處理C-風格字符串的標准方法
    由於字符串中包含了結尾標記,因此程序通常不需要知道字符串的長度*/
    /*可以這樣修改while行:while(name[i])
    經過這種修改後,程序的工作方式將不變。這是由於name[i]是常規字符,其值為該字符的編碼——非零值或true。*/
    while (name[i] != '\0')
    {
        /*要打印字符的ASCⅡ碼,必須通過強制類型轉換將name[i]轉換為整型。這樣,cout將把值打印成整數,而不是將它解釋為字符編碼。*/
        cout << name[i] << ":" << int(name[i]) << endl;
        /*省略這一步將導致循環停留在同一個數組元素上,打印該字符串及其編碼,直到強行終止該程序。
        導致死循環是循環最常見的問題之一。通常*/
        i++;
    }
    cin.get();
    cin.get();
    return 0;
}

輸出

Your first name,please:Maple
Here is your name,varticalized and ASCⅡized:
M:77
a:97
p:112
l:108
e:101

 

for與while

  由於for循環和while循環幾乎是等效的,因此究竟使用哪一個只是風格上的問題。它們之間存在三個差別。首先,在for循環中省略了測試條件時,將認為條件為true;其次,在for循環中,可使用初始化語句聲明一個局部變量,但在while循環中不能這樣做;最後,如果循環體中包括了continue語句,情況將稍有不同。

  通常程序員使用for循環來為循環計數,因為for循環格式允許將所有相關的信息——初始值、終止值和更新計數器的方法——放在同一個地方。在無法預先知道循環將執行的次數時,程序員常使用while循環。

 

編寫延時循環

waiting.cpp

#include<iostream>
#include<ctime>
int main()
{
    using namespace std;
    cout << "Enter the delay time,in seconds:";
    float secs;
    cin >> secs;
    clock_t delay = secs* CLOCKS_PER_SEC;
    cout << "starting\a\n";
    clock_t start = clock();
    while (clock() - start < delay)
        ;
    cout << "done\a\n";
    cin.get();
    cin.get();
    return 0;
}

 

do while循環

do while循環是出口條件循環。這意味著這種循環將首先執行循環體,然後再判定測試表達式,決定是否應繼續執行循環。如果條件為false,則循環終止;否則,進入新一輪的執行和測試。

句法:

do

  body

while(test-expression)

do while循環的結構

有時do while測試很合理。例如,請求用戶輸入時,程序必須先獲得輸入,然後對它進行測試。

 

基於范圍的for循環(C++11)

  這種循環簡化了一種常見的循環任務:對數組(或容器類,如vector和array)的每個元素執行相同的操作。

double prices[5]={4.99,10.99,6.87,7.99,8.49};

for(double x:prices)

  cout<<x<<<std::endl;

其中,x最初表示數組prices的第一個元素。顯示第一個元素後,不斷執行循環,而x依次表示數組的其他元素。

 

循環和文本輸入

cin對象支持3種不同模式的單字符輸入,其用戶接口各不相同。下面介紹如何在while循環中使用這三種模式。

  使用原始的cin進行輸入

#include<iostream>
int main()
{
    using namespace std;
    char ch;
    int count = 0;
    cout << "Enter characters;enter # to-quit;\n";
    cin >> ch;//在循環之前讀取第一個字符,這樣循環可以測試第一個字符。這很重要,因為第一個字符可能是#
    while (ch != '#'/*哨兵字符,作為停止標記*/)
    {
        cout << ch;//回顯讀取的字符
        ++count;//計算讀取的字符數
        cin >> ch;
    }
    cout << endl << count << "characters read";//報告處理的總字符數
    cin.get();
    cin.get();
    return 0;
}

 

嵌套循環和二維數組

C++沒有提供二維數組類型,但用戶可以創建每個元素本身都是數組的數組。

for(int row=0;row<4;row++)
{
    for(int col=0;col<5;++col)
        cout<<maxtemps[row][col]<<"\t";
    cout<<endl;
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved