繁体   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