
#include <iostream>
int main() { // currVal is the number we're counting; we'll read new values into val
int currVal = 0, val = 0; // read first number and ensure that we have 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 cnt else { // otherwise, print the count for the previous value std::cout << currVal << " occurs " << cnt << " times" << std::endl; currVal = val; // remember the new value cnt = 1; // reset the counter } } // while loop ends here // remember to print the count for the last value in the file std::cout << currVal << " occurs " << cnt << " times" << std::endl; } // outermost if statement ends here return 0; }
源码如上 为何自己运行时最后一个数无法输出啊?
1 zpole 2016 年 7 月 25 日 via iPad while 没有退出 |
2 maosengshulei OP 意思是运行时输入完一串数后要输入 ctrl+z 才能结束是吗 |
3 aprikyblue 2016 年 7 月 25 日 via Android > while(std::cin>>val) operator>>返回结果为 std::cin 本身,然后其通过类型转换来进行 if 判断 正常输入是一直为 true 当 ctrl+z 输入 EOF ,使得 cin 流状态变为无效,然后求值变为 false ,此时 while 退出 cin.clear()可以重新将 cin 置为有效 |