Перечисление числового содержимого массива в c - PullRequest
0 голосов
/ 11 ноября 2018

Я пишу простую программу, которая берет список оценок и выводит проходные оценки в c и перечисляет все оценки из списка (10 оценок).

Функция для расчета количества проходных баллов и печати их в порядке.

У меня проблемы с печатью содержимого массива с использованием printf.

Вот как я ввожу массив:

int grades[10] = {70, 80, 95, 65, 35, 85, 54, 78, 45, 68};

В настоящее время я использую это (который работает):

printf ("These are the grades: %d, %d, %d, %d, %d, %d, %d, %d, %d, %d \n", grades[0], grades[1], grades[2], grades[3], grades[4], grades[5], grades[6], grades[7], grades[8], grades[9]);

В нем перечислено содержимое массива, но я уверен, что должен быть более элегантный способ печати списка без указания на каждый элемент массива.

Есть ли более элегантное решение, о котором я не знаю?

Я выполнил поиск по темам и не смог найти ответ, извините, если это дубликат.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Используйте цикл управления (в данном случае for), чтобы напечатать произвольное количество целевых объектов. Учитывая массив из N элементов для печати, следующее демонстрирует это (и дает точный желаемый результат):

int grades[N]; // initialized here or filled later

printf("These are the grades: %d", grades[0]);
for (int i = 1; i  < N; i++) 
    printf(", %d", grades[i]);
fputc('\n', stdout);

Обратите внимание, что эта методология позволяет недопечатывать массив. Вам не нужно печатать все . Например, предположим, у вас есть массив, который может содержать M элементов, но содержит только N (где 0 <= N <= M содержит). Затем просто измените предыдущий алгоритм, чтобы учесть потенциально меньшее количество элементов (включая ни одного):

if (N > 0)
{
    printf("These are the grades: %d", grades[0]);
    for (int i = 1; i  < N; i++) 
        printf(", %d", grades[i]);
    fputc('\n', stdout);
}

Вы можете узнать больше о цикле for здесь , а также о многих других атрибутах языка Си. Держите эту ссылку вокруг; стоит закладки.

0 голосов
/ 11 ноября 2018

Вам нужно написать функцию, которая получает оценки в качестве аргумента и печатает их!

void print_array(int* grades, int size) {
   for(int i = 0; i  < size; i++) {
     printf("%d", grades[i]);
   }
}
...