Lem*_*myr 3 c++ if-statement nested-loops c++11
我是新来的,拜托,请耐心等待.我目前正在尝试通过C++ Primer第5版学习c ++,而我正在考虑我在第1.4.4节(我设法找到答案)时遇到的疑问,我意识到我不明白需要或关于此代码的第一个IF声明的目的:
#include <iostream>
int main()
{
int currVal = 0, val = 0;
if (std::cin >> currVal)
{
int cnt = 1;
while (std::cin >> val)
{
if (val == currVal)
++cnt;
else
{
std::cout << currVal << " occurs " << cnt << " times" << std::endl;
currVal = val;
cnt = 1;
}
}
std::cout << currVal << " occurs " << cnt << " times" << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
所以我尝试以一种看起来更符合逻辑的方式来改变它,以便尝试理解对IF的需求,并最终认为程序看起来完全一样......这是修改:
#include <iostream>
int main()
{
int currVal = 0, val = 0, cnt=1;
std::cin >> currVal;
while (std::cin >> val) {
if (val == currVal)
++cnt;
else {
std::cout << currVal << " occurs "
<< cnt << " times" << std::endl;
currVal = val;
cnt = 1;
}
}
std::cout << currVal << " occurs "
<< cnt << " times" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以这么善良并为我解释一下吗?我会很感激.
如果输入为空或非数字输入,则会打印第二个版本
std::cout << currVal << " occurs "
<< cnt << " times" << std::endl;
Run Code Online (Sandbox Code Playgroud)
随着currVal
具有的价值0
和count
的1
,这是错误的.
请参阅:operator >>