检查一个数字在数组中出现的次数

Posted

技术标签:

【中文标题】检查一个数字在数组中出现的次数【英文标题】:Checking to see how many times a number appears in an array 【发布时间】:2019-03-05 19:35:42 【问题描述】:

我已经被这个问题困扰了一段时间。我是 C 编程新手,我想知道如何查看用户是否输入了 1 到 20 之间的数字,并检查用户输入的数字是否出现在 1 到 20 之间的随机数数组中然后向用户显示他们输入的数字出现了“次数”。

#include <stdio.h>
#include <stdlib.h>
#define N 30
int main(void)

    int nums[N];
    int numAppear, i, count = 0;
    int n;

    for (i = 0; i < N; i++) 
      nums[i] = rand()%20 + 1;
    

    for (i = 0; i < N; i++) 
        printf("Enter a number between 1 and 20 to be found (<=0 for exit): ");
        scanf("%d", &n);

        if (n <= 0) 
            printf("End\n");
            break;
        
        else if (nums[j] == n) 
            count++;
            printf("%d appears %d times \n" , n, count);
        
        else 
            printf("%d appears %d times \n" , n, count);
        
    
    return 0;

【问题讨论】:

您应该将输入置于循环之外。 j 到底是什么? 【参考方案1】:

您在循环中的每次迭代都向用户询问一个数字,并在每次迭代时打印计数。此外,您应该索引nums[i],而不是nums[j]

将输入移到循环之前,将输出移到之后。

printf("Enter a number between 1 and 20 to be found (<=0 for exit): ");
scanf("%d", &n);

if (n <= 0) 
    printf("End\n");
    return 1;

for (i = 0; i < N; i++) 
    if (nums[i] == n) 
        count++;
    

printf("%d appears %d times \n" , n, count);

【讨论】:

以上是关于检查一个数字在数组中出现的次数的主要内容,如果未能解决你的问题,请参考以下文章

编写函数,返回在一个整数组中出现次数最多的数及其出现次数。

数组中出现次数超过一半的数字

数组中次数超过数组长度一半的数字

数组中数字出现的次数

找数组中重复次数超过数组长度一半的元素

剑指offer-数组中出现次数超过一半的数字