gpt4 book ai didi

c - 一个数字出现多少次

转载 作者:行者123 更新时间:2023-11-30 20:53:50 26 4
gpt4 key购买 nike

请帮助我。我不明白为什么“发生”中的输出是“30”,而不是“3”..就好像我将答案乘以“10”,但我不是..也许答案我的问题就在我的代码中,但是有人可以解释为什么以及如何解释吗?请..提前非常感谢您..

请看一下我的代码。

#include <stdio.h>

int main(){

int arr[10] = {7, 7, 3, 2, 9, 8, 5, 1, 7, 9};
int occur[10] = {NULL};
int max = 0;
int most;

for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
{
occur[arr[j]]++;
if(occur[arr[j]] > max)
{
max = occur[arr[j]];
most = arr[j];
}
}
}

printf("Most frequent: %d\ occurs: %d\n", most, max);

return 0;
}

我在“最常见”中得到了正确答案。但“出现”是 30 次,而不是 3 次,因为 7 出现了 3 次。

最佳答案

它变成了30,因为有一个外循环执行了10次。我猜你想获得数组中最常见的数字以及它出现的次数,这就是你有一个外循环的原因。如果数组中的数字大于 9,这将不起作用,这将导致数组中出现索引越界问题。您应该将您的实现更改为:

#include <stdio.h>

int main(){

int arr[10] = {7, 7, 3, 2, 9, 8, 5, 1, 7, 9};
int max = 0;
int most;

for(int i = 0; i < 10; i++)
{
int tmp = arr[i], count = 0;
// if the current number is the current max number then skip
if(tmp == max)
continue;
for(int j = 0; j < 10; j++)
{
// increment count if number in index j is equal to tmp number
count += arr[j] == tmp ? 1 : 0;
}
// [this condition will depend on the requirement.]
// replace max and most if the count of tmp number is greater than your
// current max
if(count > max){
max = count;
most = tmp;
}
}
printf("Most frequent: %d\ occurs: %d\n", most, max);

return 0;
}

尚未经过测试,如果有任何问题,请随时编辑。

关于c - 一个数字出现多少次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44938148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com