C++统计二维矩阵0-9数字出现频率代码错误排查
问题原因
你的代码核心错误是计数器变量c的初始化位置错误:你将c定义在遍历0-9的外层循环之外,统计完每个数字的数量后没有重置为0,导致计数结果是前面所有数字的累计值,因此出现数字越大计数越高的错误结果。
修正方案
把计数器c的定义挪到遍历0-9的外层a循环内部,每次统计新数字的出现次数前,都将c初始化为0即可。
修正后完整代码
#include<bits/stdc++.h> using namespace std; void printfrequency(int array[][4]) { for(int a=0; a<10; a++){ int c=0; // 每次统计新数字前重置计数器 for (int i=0; i<4; i++) for ( int j=0;j<4;j++) if(array[i][j] == a){ c++; } cout << a << ":" << c <<";" ; } } int main() { int array[4][4] = { {3,5,7,9}, {2,4,8,9},{1,1,1,1},{3,6,9,2} }; printfrequency(array); return 0; }
输出验证
针对你给出的测试矩阵,修正后输出为0:0;1:4;2:2;3:2;4:1;5:1;6:1;7:1;8:1;9:3;,计数结果完全正确。
内容的提问来源于stack exchange,提问作者Honghui Ouyang
相关产品推荐
相关产品推荐

