这是我的问题
如果已将某个数字输入到数组中,则需要显示该数字并在数组中显示该数字。
例如,如果用户三次输入数字5,则“到目前为止已经输入了3次数字5”,依此类推
到目前为止,这是我的代码:
int i,j;
int num_count = 0;
for(i=0;i<6;i++) {
num_count = 0;
for(j=1;j<43;j++) {
if( *(num + i) == j) {
printf("The number %d has been used %d times\n",j,num_count);
}//end if
}//end inner for
}//end outer for
最佳答案
我想为您建议一个非常省时的方法,但是它需要一些额外的内存。
假设数组中数字的上限为“ MAX_NUM_IN_ARRAY”,
因此您应该创建大小为“ MAX_NUM_IN_ARRAY + 1”的数组(例如计数器)并将其初始化为0。
int counter[MAX_NUM_IN_ARRAY+1]={0};
现在从第一个元素到最后一个元素扫描输入数组,
对于每个数字:
//说数字是num
counter [num] ++;
最后,您只需扫描从索引1到MAX_NUM_IN_ARRAY的计数器数组。
样例代码:
假设输入数组是a [],
数组中的元素数为n,
数组内的最大数量限制为MAX_LIMIT
int counter[MAX_LIMIT]={0};
int i;
for(i=0; i<n; i++)
{
counter[a[i]]++;
}
for(i=0; i<MAX_LIMIT; i++)
{
printf("Number %d is appeared for %d times\n", i, counter[i]);
}