Проверка того, сколько раз число появляется в массиве

#c #arrays

#c #массивы

Вопрос:

Я застрял на этой проблеме на некоторое время. Я новичок в программировании на 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", amp;n);

        if (n <= 0) {
            printf("Endn");
            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;
}
  

Комментарии:

1. Вы должны выводить входные данные за пределы цикла. Что j вообще?

Ответ №1:

Вы запрашиваете у пользователя число на каждой итерации цикла и печатаете количество на каждой итерации. Кроме того, вы должны индексировать nums[i] , а не nums[j]

Переместите ввод перед циклом, а вывод после.

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

if (n <= 0) {
    printf("Endn");
    return 1;
}
for (i = 0; i < N; i  ) {
    if (nums[i] == n) {
        count  ;
    }
}
printf("%d appears %d times n" , n, count);