Простенький код перемножения матриц в качестве домашнего задания для новичка на языке программирования Си. Программа работает в Visual Studio 14. Достаточно вставить код, скомпилировать его и запустить .exe программу. Разобраться в самой программе очень просто.
Код:
#include "stdio.h"
#include "stdlib.h"
#include "locale.h"
#include "conio.h"
int main()
{
int N, M, N1, M1, i, j, k;
setlocale(0, "RUS");
N = 10;
int **A = (int**)malloc(N * sizeof(int*));
int **B = (int**)malloc(N * sizeof(int*));
int **C = (int**)malloc(N * sizeof(int*));
for (i = 0; i < N; i++)
{
A[i] = (int*)malloc(N * sizeof(int));
B[i] = (int*)malloc(N * sizeof(int));
C[i] = (int*)malloc(N * sizeof(int));
}
printf("Введите количество строк первой матрицы: ");
scanf_s("%d", &N);
printf("Введите количество столбцов первой матрицы: ");
scanf_s("%d", &M);
printf("Заполните матрицу A:\n");
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
{
scanf_s("%d", &A[i][j]);
}
printf("Введите количество строк второй матрицы: ");
scanf_s("%d", &N1);
printf("Введите количество столбцов второй матрицы: ");
scanf_s("%d", &M1);
if (M != N1)
printf("Эти матрицы невозможно перемножить");
else
{
printf("Заполните матрицу B:\n");
for (i = 0; i < N1; i++)
for (j = 0; j < M1; j++)
{
scanf_s("%d", &B[i][j]);
}
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
{
C[i][j] = 0;
for (k = 0; k < M1; k++)
C[i][j] += A[i][k] * B[k][j];
}
printf("\nВид матрицы А\n");
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
printf("%d ", A[i][j]);
printf("\n");
}
printf("\nМатрица B\n");
for (i = 0; i < N1; i++)
{
for (j = 0; j < M1; j++)
printf("%d ", B[i][j]);
printf("\n");
}
printf("\nПри умножении получаем матрицу порядка %dx%d\n", N, M1);
for (i = 0; i < N; i++)
{
for (j = 0; j < M1; j++)
printf("%d ", C[i][j]);
printf("\n");
}
_getch();
return 0;
}
}
Пример работы программы: