理解循环C++中的循环

Understanding loops within loops C++

本文关键字:循环 C++      更新时间:2023-10-16

对新手的问题表示歉意,但我对编程和学习C++还很陌生。我正在学习C++初级教程,现在已经到了编写这段代码的If语句部分。

#include <iostream>
int main()
{ 
// currVal is the number we're counting, new values will be put into val
int currVal = 0, val = 0;
// Read first number and check there is data to process
if (std::cin >> currVal) {
int cnt = 1; // Store the count for the current value we're processing
while (std::cin >> val) { // read the remaining numbers
if (val == currVal)   // if the values are the same
++cnt;            // add 1 to count (cnt)
else {  // Otherwise, print the count for the previous value
std::cout << currVal << " occurs " << cnt << " timesn";
currVal = val; // remember the new value
cnt = 1;       // reset the counter
}
} // while loop ends here
// rememeber to print the count for the last value in the flile
std::cout << currVal << " occurs " << cnt << " times.n";

} // Outermost if statement ends here
return 0;
}

编译时,逻辑不正确。例如,当我输入51 25 14 51 51 25时。我得到以下信息:

51发生1次25发生1次14发生1次51发生3次

我试过分解代码,但循环中有循环,这让我头疼。

再次为noob问题道歉,但如有任何帮助,我们将不胜感激。

感谢

您的代码:

if (std::cin >> currVal) {
int cnt = 1; // Store the count for the current value we're processing
while (std::cin >> val) { // read the remaining numbers
if (val == currVal)   // if the values are the same
++cnt;            // add 1 to count (cnt)
else {  // Otherwise, print the count for the previous value
std::cout << currVal << " occurs " << cnt << " timesn";
currVal = val; // remember the new value
cnt = 1;       // reset the counter
}
}

上面写着cin>gt;currval,这基本上意味着如果您正在输入一个值,请执行以下操作。它经历了第一次,然后你进入while循环,它基本上说,当你还有输入时,如果val=currVal增加cnt,否则就在else块中做。你有7个输入,所以循环进行了7次,这有什么令人困惑的??