memset()和++b[]是什么意思啊?最好能帮我解释一下这个程序数字的模式是指在一堆给定数字中出现次数最多的数值,如5,5,5,3,3,2,6,4,它的模式就是5.现在你的任务,就是从数字中找到它的模式.(|input_

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/09 13:51:26

memset()和++b[]是什么意思啊?最好能帮我解释一下这个程序数字的模式是指在一堆给定数字中出现次数最多的数值,如5,5,5,3,3,2,6,4,它的模式就是5.现在你的任务,就是从数字中找到它的模式.(|input_
memset()和++b[]是什么意思啊?最好能帮我解释一下这个程序
数字的模式是指在一堆给定数字中出现次数最多的数值,如5,5,5,3,3,2,6,4,它的模式就是5.现在你的任务,就是从数字中找到它的模式.(|input_number|

memset()和++b[]是什么意思啊?最好能帮我解释一下这个程序数字的模式是指在一堆给定数字中出现次数最多的数值,如5,5,5,3,3,2,6,4,它的模式就是5.现在你的任务,就是从数字中找到它的模式.(|input_
哪儿的例子? 申请的b数组浪费了一半!
memset在这里是将b数组全部用0填写一下,避免了对数组的挨个赋值
++b[XX]的含义是对b数组中XX下标的那个数进行++操作,实际就是b[XX]= b[XX]+1
//解释的这部分把原来代码修改了下注意看后面注释
int main(){
int max, max_i;
int n, t, i;
while (scanf("%d", &n) == 1){ // 输入数的个数
memset(b, 0, 2000001); // 初始化b数组,用0填充
while (n-- != 0){
scanf("%d", &t); // 将每个数读入
++b[t]; // 重要点: 输入的数载数组中对应得下标的数值+1,如输入10,则b[10]+1,最后每个数出现的个数就是用作下标时数组b中对应的值
}
max = b[0]; max_i = 0; // 下面的就是遍历所有的,看看哪个出现的次数最多,把它输出出来, 不详说了
for (i=1; i max){
max = b[i]; max_i = i;
}
}
printf("%d\n", max_i);
}
return 0;
}