Ответы:

1. Двумерный массив – это таблица значений. Организацией он очень похож на обычный одномерный массив, но для вызова значения элемента нужно использовать два индекса. Удобен для хранения расчетных таблиц, матриц и т.п.

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

3.

  • Неверно. Массив может хранить значения только одинакового типа.

  • Неверно. Индексы массива обязательно должны быть целыми числами или целыми выражениями.

  • Неверно. Оставшиеся элементы автоматически получают нулевые значения.

  • Верно.

  • Неверно. Отдельные элементы массива передаются вызовом по значению. Только если функции передается массив целиком, любые его модификации будут отражаться на оригинале.

Задача

Создать матрицу 3 на 4. Значения элементов считать с клавиатуры. Найти наибольший и наименьший элементы этой матрицы и поменять их местами.

#include <stdio.h>

int Max(int mas[3][4])

{

int max,i,j;

max = mas[0][0];

for (i=0;i<3;i++)

for (j=0;j<4;j++)

if (max > mas[i][j])

max = mas[i][j];

return max;

}

int Min(int mas[3][4])

{

int min,i,j;

min = mas[0][0];

for (i=0;i<3;i++)

for (j=0;j<4;j++)

if (min < mas[i][j])

min = mas[i][j];

return min;

}

void Change(int mas[][4])

{

int i,j;

int min = Min(mas);

int max = Max(mas);

for (i=0;i<3;i++)

for (j=0;j<4;j++)

if (mas[i][j] == min)

mas[i][j] = max;

else

if (mas[i][j] == max)

mas[i][j] = min;

}

void print(int mas[][4])

{

int i,j;

for (i=0;i<3;i++)

{

for (j=0;j<4;j++)

printf("%i ",mas[i][j]);

printf("\n");

}

}

main ()

{

int i,j;

int mas [3][4];

for (i=0;i<3;i++)

for (j=0;j<4;j++)

{

printf("Input mas %i %i :",i,j,"\n");

scanf("%i",&mas[i][j]);

}

printf("\nBefore:\n");

print(mas);

Change(mas);

printf("\nAfter:\n");

print(mas);

return 0;

}

Функции Max и Min действуют аналогичным образом. При помощи цикла for просматриваем все элементы в матрице. Каждый из них сравниваем со значением переменной max. Если текущее значение элемента массива оказывается больше max, то присваиваем max это значение.

Функция Change вызывает написанные ранее функции Max и Min. Она просматривает массив и, найдя в нем элемент, равный минимальному значению, записывает на его место максимальное. Точно так же найдя минимальный элемент, она запишет на его место максимальный.

Функция print служит для вывода массива на экран.

Задача повышенной сложности

Магическим квадратом называется квадрат, сумма элементов которого по всем полным горизонталям, вертикалям и диагоналям которого одинакова.

Требуется построить такой квадрат.