Вывести квадратную матрицу указанного пользователем размера - C (СИ)
Формулировка задачи:
Помогите пожалуйста составить программу, которая печатает на экране квадратную матрицу, размерность
которой вводит пользователь с клавиатуры.
1 1 . . . . 1
2 2 . . . 2
3 3 3 . 3
. . . . .
n . . . 0
Решение задачи: «Вывести квадратную матрицу указанного пользователем размера»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;
int **mas;
int temp;
scanf("%d",&n);
temp = n;
mas = (int **) calloc(n,sizeof(int*));
for (int i = 0; i < n; i++)
mas[i] = (int *) calloc(n,sizeof(int));
for (int i = 0; i < n; i++)
{
for(int j = n - i - 1; j >= 0; j--)
mas[i][j] = i + 1;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
printf("%d\t",mas[i][j]);
printf("\n");
}
for (int i = 0; i < n; i++)
free (mas[i]);
free (mas);
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
n- переменная для хранения размера матрицы, который пользователь должен ввести;mas- это указатель на массив указателей, который будет использоваться для хранения адресов строк матрицы;temp- временная переменная для хранения значения переменнойn.
- Запрашивается у пользователя размер матрицы с помощью функции
scanf(). - Выделяется память под матрицу с помощью функции
calloc(). Для каждой строки матрицы выделяется память под массивnэлементов типаint. - В цикле заполняются все строки матрицы. Для каждой строки в цикле
forзаполняются элементы, начиная с конца строки, значениями от1доn. - В цикле
forвыводятся все элементы матрицы на экран через табуляцию. - Освобождается память, выделенная под каждую строку матрицы, с помощью функции
free(). - Освобождается память, выделенная под массив указателей
mas, с помощью функцииfree().