【发布时间】:2019-02-12 16:00:29
【问题描述】:
int main () {
int num1, num2;
int cnt = 1;
if (cin >> num1){
while (cin >> num2){
if (num1==num2){
++cnt;
} else {
cout << num1 << " is " << cnt << " times" << endl;
cnt = 1;
num1 = num2;
}
}
}
cout << num1 << " is " << cnt << "-times" << endl;
}
此代码接受一行数字并输出每个数字输入的次数。我不明白为什么会有num1=num2。删除它后,程序会输出输入的第一个数字,这让我相信我不知道cin 在循环中是如何工作的。
我现在认为第一个数字进入 if (cin >> num1), 并且它一直坐在这里,下一个相同的数字不会覆盖 num1 整数。进入while (cin >> num2) 的第二个和其余数字每次都会覆盖它,直到有一个不同的数字,这使得else 执行并输出一直存储在num1 中的数字。
使用 num1=num2 它会在 if(cin>> num1) 中更改 num1,然后整个事情又开始了。
我说的对吗?
这也很奇怪,最后一个 cout 可能确定在第一个 if 体内,它可能不会,它无论如何都可以工作......
Edit1: with num1=num2;我输入1 1 2 2 3 3 3,一行输出
1 is 2 times
2 is 2 times
3 is 3 times.
没有 num1=num1;
1 is 2 times
1 is 1 times
1 is 1 times
1 is 1 times
1 is 1 times
【问题讨论】:
标签: c++