为什么这段C++代码无法统计输入的最后一个数?

这段代码是C++ primer中if语句的例子,用于统计数字出现的个数。可是无法统计输入的最后一个数,比如输入1,1,2,2,2,3,3。它的输出就是1出现2次,2出现3次,可是对于3就没反应了。

#include <iostream>
#include <stdlib.h>
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;
    }
    
    system("pause");
    return 0;
}
阅读 1.7k
1 个回答

没有结束条件,输入3的时候程序还在std::cin这里等待下次输入。
改成while (std::cin >> Val && Val != 0),输入1,1,2,2,2,3,3,0,显示3的结果

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题