求解,特殊矩阵的加减,读取,转置,可以的话帮我写完功能,只需要对称矩阵的,真的非常非常感谢
7条回答 默认 最新
关注 获得3.23元问题酬金 #include <stdio.h> void menu() { printf("****************************************************************\n"); printf("****************************************************************\n"); printf("**********************欢迎使用矩阵计算器************************\n"); printf(" 1.转置2.加法3.减法4.数乘5.乘法0.退出 \n"); printf("****************************************************************\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; }
解决 1无用
悬赏问题
- ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
- ¥15 微软账户问题不小心注销了好像
- ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
- ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
- ¥20 关于web前端如何播放二次加密m3u8视频的问题
- ¥15 使用百度地图api 位置函数报错?
- ¥15 metamask如何添加TRON自定义网络
- ¥66 关于川崎机器人调速问题
- ¥15 winFrom界面无法打开
- ¥30 crossover21 ARM64版本安装软件问题