Учебная версия на русском. Код и его вывод сохранены в исходном виде.
Массивы в C
Работайте с индексами, обходами и матрицами, явно учитывая длину и границы.

Массив состоит из последовательных элементов одного типа. Индексы массива из N элементов лежат от 0 до N - 1. C не проверяет их автоматически; обращение за пределы объекта вызывает неопределённое поведение.
Инициализируйте данные до чтения, соблюдайте длину в циклах и проверяйте успешность ввода. Передавая массив в функцию, передавайте также число действительных элементов.
Матрица C — массив массивов, размещённый по строкам. Принимающей функции нужны размеры, достаточные для вычисления адресов. Матрица и массив указателей — разные представления данных.
Там, где доступен полный массив, sizeof array / sizeof array[0] даёт число элементов. Для параметра-указателя эта формула неверна. Проверяйте массив из одного элемента, первый и последний допустимые индексы.
Код C
#include <stdio.h>
int main(void) {
int scores[5] = {70, 85, 90, 65, 100};
int grid[2][3] = {
{1, 2, 3},
{4, 5, 6}
};
int n = sizeof(scores) / sizeof(scores[0]);
int sum = 0;
for (int i = 0; i < n; i++) {
sum += scores[i];
}
printf("Elements: %d\n", n);
printf("Sum: %d\n", sum);
printf("Average: %.1f\n", (double)sum / n);
printf("2D array:\n");
for (int r = 0; r < 2; r++) {
for (int c = 0; c < 3; c++) {
printf("%d ", grid[r][c]);
}
printf("\n");
}
return 0;
}
Открыть в компилятореОжидаемый вывод
Elements: 5 Sum: 410 Average: 82.0 2D array: 1 2 3 4 5 6
Частые вопросы
Почему код и вывод остаются на английском?
Ключевые слова, идентификаторы и строки, проверяемые тестами, сохранены, чтобы не менять программу. Объяснения и элементы управления переведены.