C语言中用户输入数组的频率分析问题

我应该对用户输入数组进行频率分析。用户可以输入0-1000之间的任意数字,并且最多可以输入100个数字,用户可以通过输入负数来结束输入。 void函数将计算出出现次数最多的数字,并将这两个变量作为指针发送给该函数。

我的问题是,无论我做什么,分析似乎都会计算出数组中所有“空”元素,而我无法弄清楚自己在做什么错。如果我使数组更小,可以说10个元素,则效果很好。因为我是编程方面的新手,所以我对代码进行了大约一百万次更改,因此在这一点上,我无法记住我对原始代码所做的更改。调试时,我陷入了函数的第二个for循环中。

#include <stdio.h>

#define MAX 100
#define INTERVAL 1000

void frequencyAnalysis(int array[],int *number,int *freq)
{
    int element = 0,count = 0;

    for (int i = 0; i < MAX; i++) {
        int tempelement = array[i];
        int tempCount = 0;

        for (int j = 0; j < MAX; j++)
            if (array[j] == tempelement)
                tempCount++;

        if (tempCount > count) {
            element = tempelement;
            count = tempCount;
        }
    }

    *number = element; 
    *freq = count;
}

int main(void)
{
    int array[MAX],i,j,number = 0,freq = 0;

    printf("Hello.\n"
        "Please enter a number between 0-1000. "
        "Enter as many number as you want (maximum 100).\n"
        "Exit by entering a negative number.\n\n");
    printf("Enter a number:\n");

    for (i = 0; i < MAX; i++) {
        scanf("%d",&array[i]);
        if (array[i] < 0)
            break;
    }

    frequencyAnalysis(array,&number,&freq);

    printf("The number:%d is the most frequent number and appears %d times.\n",number,freq);

    return 0;
}
aiguoai 回答:C语言中用户输入数组的频率分析问题

要解决第一个问题,请传递用户实际输入的项目数,这样您就不会用尽colorfilters(其中包括所有未使用的单元格)。密钥是MAX

nitems
本文链接:https://www.f2er.com/3149149.html

大家都在问