我应该对用户输入数组进行频率分析。用户可以输入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;
}