while循环里的else部分 进行重置计数为1,是因为当前数val和currVal里的数不同,所以当然数的计数即为1;
if里面开头的cnt初始设置为1,因为if如果条件满足,则表示正确读取了一个整数,这个整数的目前数量即为1。
测试如下:
#include <iostream>
int main(void){
int currVal = 0, val=0;
// 如果if条件满足,进入if里执行,说明成功读入了一个整数
// 并将其存入变量currVal中
if (std::cin>>currVal){
int cnt=1; // 所以这里,将当前读入的这个整数的计数置1
while(std::cin>>val){ // 从输入循环读取一个整数,存入变量val中
if(val==currVal){ // 如果当前读入的整数val和currVal里的数相同,则此整数currVal的计数+1
++cnt;
}else{ // 如果当前读入的整数val和currVal里的数不同,则打印整数currVal的出现次数
// 打印整数currVal的出现次数
std::cout<< currVal << " occurs "
<< cnt << " times" << std::endl;
// 将当前整数val的值赋值给 currVal
// 以便于与下一个整数进行比较,以及用于最终打印出现的次数
currVal = val;
cnt = 1; // 当前整数的计数置1
}
}
// 打印 最后一个值的出现次数
std::cout<< currVal << " occurs "
<< cnt << " times"<<std::endl;
}
return 0;
}
当输入的数字和之前的不同,就要重新设置为1,这很好理解,你要统计连续相同的有多少啊。