移动端网站设计尺寸,小红门网站建设,wordpress注册表格,广州公司注册多久时间目标#xff1a;实现一个能进行稀疏矩阵基本运算(包括加、减、乘)的运算器。
#xff08;1#xff09;以三元组顺序表表示稀疏矩阵#xff0c;实现两个矩阵相加、相减、相乘的运算
#xff08;2#xff09;稀疏矩阵的输入形式为三元组表示#xff0c;运算结果则以通常…目标实现一个能进行稀疏矩阵基本运算(包括加、减、乘)的运算器。
1以三元组顺序表表示稀疏矩阵实现两个矩阵相加、相减、相乘的运算
2稀疏矩阵的输入形式为三元组表示运算结果则以通常的阵列形式列出。
(3)首先提示用户输入矩阵的行数和列数并判别给出的两个矩阵行、列数对于所要求作的运算是否相匹配。可设矩阵的行数和列数均不超过20。
(4)程序需给出菜单项用户按照菜单提示进行相应的操作。
#define _CRT_SECURE_NO_WARNINGS 1#include stdio.h
void menu()
{printf(****************************************************************\n);printf(****************************************************************\n);printf(**********************欢迎使用矩阵计算器************************\n);printf(*******1、转置 2、加法 ******\n);printf(*******3、减法 4、数乘 ******\n);printf(*******5、乘法 0、退出 *******\n);printf(****************************************************************\n);printf(****************************************************************\n);
}void Matrix_output(int(*s)[100], int m, int n)//输出
{int i, j;for (i 0; i m; i){for (j 0; j n; j){printf(%2d , s[i][j]);}printf(\n);}
}void Matrix_transpose(int(*s)[100], int(*t)[100], int m, int n)//转置
{int i, j;for (i 0; i m; i){for (j 0; j n; j){t[j][i] s[i][j];}}
}
void Matrix_addition(int(*s)[100], int(*t)[100], int(*p)[100], int m, int n)//相加
{int i, j;for (i 0; i m; i){for (j 0; j n; j){p[i][j] s[i][j] t[i][j];}}
}void Matrix_subtraction(int(*s)[100], int(*t)[100], int(*p)[100], int m, int n)//相减
{int i, j;for (i 0; i m; i){for (j 0; j n; j){p[i][j] s[i][j] - t[i][j];}}
}void Matrix_shucheng(int(*s)[100], int(*t)[100], int m, int n, int k)//数乘
{int i, j;for (i 0; i m; i){for (j 0; j n; j){t[i][j] k * s[i][j];}}
}void Matrix_multiplication(int(*s)[100], int(*t)[100], int(*p)[100], int m, int n, int x, int y)//相乘
{int i, j, k, sum;for (i 0; i m; i){for (j 0; j y; j){sum 0;for (k 0; k n; k){sum s[i][k] * t[k][j];}p[i][j] sum;}}
}int main()
{int m, n, i, j, k, input;int x, y;int A[100][100], B[100][100], C[100][100];do{menu();printf(请选择);scanf(%d, input);switch (input){case 1://转置printf(请输入矩阵的行数 );scanf(%d, m);printf(\n);printf(请输入矩阵的列数 );scanf(%d, n);printf(\n);printf(请输入矩阵\n);for (i 0; i m; i){for (j 0; j n; j){scanf(%d, A[i][j]);}}printf(原矩阵\n);Matrix_output(A, m, n);Matrix_transpose(A, B, m, n);printf(转置后的矩阵\n);Matrix_output(B, n, m);break;case 2://相加printf(请输入第一个矩阵的行数 );scanf(%d, m);printf(\n);printf(请输入第一个矩阵的列数 );scanf(%d, n);printf(\n);printf(请输入矩阵\n);for (i 0; i m; i){for (j 0; j n; j){scanf(%d, A[i][j]);}}printf(请输入第二个矩阵的行数 );scanf(%d, x);printf(\n);printf(请输入第二个矩阵的列数 );scanf(%d, y);printf(\n);if (m x n y){printf(请输入矩阵\n);for (i 0; i m; i){for (j 0; j n; j){scanf(%d, B[i][j]);}}printf(第一个矩阵\n);Matrix_output(A, m, n);printf(第二个矩阵\n);Matrix_output(B, m, n);Matrix_addition(A, B, C, m, n);printf(和矩阵\n);Matrix_output(C, m, n);}else{printf(这两个矩阵不是同型矩阵不能相加\n);}break;case 3:printf(请输入第一个矩阵的行数 );scanf(%d, m);printf(\n);printf(请输入第一个矩阵的列数 );scanf(%d, n);printf(\n);printf(请输入第一个矩阵\n);for (i 0; i m; i){for (j 0; j n; j){scanf(%d, A[i][j]);}}printf(请输入第二个矩阵的行数 );scanf(%d, x);printf(\n);printf(请输入第二个矩阵的列数 );scanf(%d, y);printf(\n);if (m x n y){printf(请输入第二个矩阵\n);for (i 0; i m; i){for (j 0; j n; j){scanf(%d, B[i][j]);}}printf(第一个矩阵\n);Matrix_output(A, m, n);printf(第二个矩阵\n);Matrix_output(B, m, n);Matrix_subtraction(A, B, C, m, n);printf(差矩阵\n);Matrix_output(C, m, n);}else{printf(这两个矩阵不是同型矩阵不能相减\n);}break;case 4:printf(请输入矩阵的行数 );scanf(%d, m);printf(\n);printf(请输入矩阵的列数 );scanf(%d, n);printf(\n);printf(请输入这个数:);scanf(%d, k);printf(\n);printf(请输入矩阵\n);for (i 0; i m; i){for (j 0; j n; j){scanf(%d, A[i][j]);}}printf(原矩阵\n);Matrix_output(A, m, n);Matrix_shucheng(A, B, m, n, k);printf(数乘矩阵\n);Matrix_output(B, m, n);break;case 5:printf(请输入第一个矩阵的行数 );scanf(%d, m);printf(\n);printf(请输入第一个矩阵的列数 );scanf(%d, n);printf(\n);printf(请输入第一个矩阵\n);for (i 0; i m; i){for (j 0; j n; j){scanf(%d, A[i][j]);}}printf(请输入第二个矩阵的行数 );scanf(%d, x);printf(\n);printf(请输入第二个矩阵的列数 );scanf(%d, y);printf(\n);if (n x){printf(请输入第二个矩阵\n);for (i 0; i x; i){for (j 0; j y; j){scanf(%d, B[i][j]);}}printf(第一个矩阵\n);Matrix_output(A, m, n);printf(第二个矩阵\n);Matrix_output(B, x, y);Matrix_multiplication(A, B, C, m, n, x, y);printf(相乘矩阵\n);Matrix_output(C, m, y);}else{printf(这两个矩阵不能相乘\n);}break;case 0:printf(退出计算欢迎再次使用\n);break;default:printf(输入错误请从新输入\n);break;}} while (input);return 0;
}
出菜单项用户按照菜单提示进行相应的操作。