c++写if语句去统计数字出现次数时为什么要重置计数器

img


在最后快结尾的时候重置了计数器,为什么啊
还有一个问题望解答 感谢!:
也是这一页,我有做笔记的地方为什么让int cnt整数型计数等于1就是他注释说的话“保存正在处理的当前值的个数”呢?

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;
} 

 

img

当输入的数字和之前的不同,就要重新设置为1,这很好理解,你要统计连续相同的有多少啊。