簡體   English   中英

將 arrays 與 for 循環一起使用

[英]Using arrays with for-loops

問題:

  1. 為什么第一個“cin >>”保存了“score [0]”? 由於程序要求輸入 5 個數字,將輸入的數字保存到 5 的數組(“score[4]”)中是否有意義?

  2. 我也不明白第二個“cin >> score[i]”的語法。 當有數據輸入時,我認為“cin>>”與“cout<<”相結合。

//Enter five scores. Show how much each differs from the highest score.
#include <iostream>
using namespace std;
    
int main()
{
    int i, score[5], max;
        
    cout<<"Enter 5 scores:\n";
    cin >> score[0];
    max = score[0];
        
    for (i = 1; i < 5; i++)
    {
        cin >> score[i];
        if (score[i] > max)
            max = score[i];
    }
        
    cout <<"Highest score: " <<max<<endl
         <<"The scores and their\n"
         <<"diff. from highest are:\n";
        
    for (i = 0; i < 5; i++)
        cout << score[i] << " off by "
             << (max - score[i]) << endl;
    
    return 0;        
}

cin 是stdin 這是一個 UNIX 的東西。 基本上它是你程序的輸入。 如果您不做任何其他事情,那就是您的控制台或終端 session。

cout 是stdout ,另一個 UNIX 東西。 它是 output。 同樣,如果您不使用它做任何其他事情,您的控制台或終端 session。 它們並不是真正的耦合。 這是兩件不同的事情,一件僅用於輸入,一件僅用於 output。

現在,讓我們看看您的代碼:

cin >> score[0];
max = score[0];
    
for (i = 1; i < 5; i++)
{
    cin >> score[i];
    if (score[i] > max)
        max = score[i];
}

這可以簡化。 您可以擺脫前兩行並將其更改為:

for (i = 0; i < 5; i++)
{
    cin >> score[i];
    if (score[i] > max)
        max = score[i];
}

您只需要將 max 初始化為一個真正的負值。

cin >>在這里所做的是讀取一個 SINGLE 值 - 一個分數 - 然后將其填充到score的單個成員中。 所以你不能做這樣的事情:

cin >> score;

那是行不通的。 好吧,您也許可以使其與運算符重載一起使用,但這是一個高級主題,我從未嘗試過。 (坦率地說,我從不使用>>運算符,而是尋找其他方式來獲取輸入。)

還有一點: score[4]指的不是一個大小為 5 的數組,而是數組中的第 5 項,就像score[0]指的是第一項一樣。 它僅指初始定義中的大小:

int score[5];

那是唯一一次[5]大約是大小。 否則它是數組的索引,從 0 開始。所以你有score[0] ... score[4]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM