void指针和NULL指针
实现矩阵相乘算法,我们允许用于自定义矩阵的尺寸和数据。#include <stdio.h>
int main()
{
int m, p, n;
int i, j, k, row;
// 定义第一个矩阵
printf("请输入第一个矩阵的尺寸(M * P):");
scanf("%d * %d", &m, &p);
int matrix_in_1;
// 定义第二个矩阵
printf("请输入第一个矩阵的尺寸(P * N):");
scanf("%d * %d", &p, &n);
int matrix_in_2;
// 初始化存放乘积的二维数组
// VAL数组不支持直接初始化操作
int matrix_out;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
matrix_out = 0;
}
}
// 让用户输入第一个矩阵
printf("请输入第一个矩阵的值:\n");
for (i = 0; i < m; i++)
{
for (j = 0; j < p; j++)
{
scanf("%d", &matrix_in_1);
}
}
// 让用户输入第二个矩阵
printf("请输入第二个矩阵的值:\n");
for (i = 0; i < p; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", &matrix_in_2);
}
}
// 计算乘积并保存
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
for (k = 0; k < p; k++)
{
matrix_out += matrix_in_1 * matrix_in_2;
}
}
}
printf("计算结果如下:\n");
// row 取行数最大值
row = m > p ? m : p;
for (i = 0; i < row; i++)
{
printf("|");
// 打印 matrix_in_1
for (j = 0; j < p; j++)
{
if (i < m)
{
printf("\b%d ", matrix_in_1);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
// 打印 * 号
if (i == row / 2)
{
printf(" * ");
}
else
{
printf(" ");
}
printf("|");
// 打印 matrix_in_2
for (j = 0; j < n; j++)
{
if (i < p)
{
printf("\b%d ", matrix_in_2);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
// 打印 = 号
if (i == row / 2)
{
printf(" = ");
}
else
{
printf(" ");
}
// 打印 matrix_out
printf("|");
for (j = 0; j < n; j++)
{
if (i < m)
{
printf("\b%d ", matrix_out);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
printf("\n");
}
return 0;
}
这以上的代码到是能理解几分,以下的就不太理解了。
// row 取行数最大值
row = m > p ? m : p;
for (i = 0; i < row; i++)
{
printf("|");
// 打印 matrix_in_1
for (j = 0; j < p; j++)
{
if (i < m)
{
printf("\b%d ", matrix_in_1);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
// 打印 * 号
if (i == row / 2)
{
printf(" * ");
}
else
{
printf(" ");
}
printf("|");
// 打印 matrix_in_2
for (j = 0; j < n; j++)
{
if (i < p)
{
printf("\b%d ", matrix_in_2);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
// 打印 = 号
if (i == row / 2)
{
printf(" = ");
}
else
{
printf(" ");
}
// 打印 matrix_out
printf("|");
for (j = 0; j < n; j++)
{
if (i < m)
{
printf("\b%d ", matrix_out);
printf("|");
}
else
{
printf("\b\b\b ");
}
}
printf("\n");
}
return 0;
} 先拿个鱼币{:10_266:} 还有没有鱼币{:10_266:}
我也拿一个 昨天先领鱼币,今天再看不行啊{:10_285:}
不是,下边这部分就是挨个遍历输出啊,参考注释,你前边都看懂了,输出应该能看得懂 哈哈哈哈哈哈 newu好惨
页:
[1]