C语言做一个稀疏矩阵运算器,要求不使用三重及三重以上嵌套循环,并且时间复杂度较低,可以实现矩阵运算器的矩阵转置,矩阵加减法,矩阵乘法,退出运算五个功能,可以适当追加赏金。
5条回答 默认 最新
- fuill 2022-06-08 11:16关注
解答如下
#include<stdio.h> void input(int n,int t[][n]) { for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { scanf("%d",&t[i][j]); } } } void put(int n,int t[][n]) { for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { printf("%d ",t[i][j]); } printf("\n"); } printf("\n"); } void swap(int *a,int *b) { int c=*a; *a=*b; *b=c; } void trans(int n,int t[][n]) { for(int i=0; i<n; i++) { for(int j=i; j<n; j++) { swap(&t[i][j],&t[j][i]); } } } void add(int n,int t1[][n],int t2[][n]) { for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { t1[i][j]+=t2[i][j]; } } } void mul(int n,int t1[][n],int t2[][n]) { for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { t1[i][j]*=t2[i][j]; } } } int main() { int n; printf("1,转置\n"); printf("2,加法\n"); printf("3,乘法\n"); printf("other,退出\n"); int option; scanf("%d",&option); if(option==1) { printf("输入矩阵行数:"); scanf("%d",&n); printf("输入矩阵:\n"); int t1[n][n]; input(n,t1); trans(n,t1); printf("--------\n"); put(n,t1); } else if(option==2) { printf("输入矩阵行数:"); scanf("%d",&n); int t1[n][n]; int t2[n][n]; printf("输入矩阵1:\n"); input(n,t1); printf("输入矩阵2:\n"); input(n,t2); add(n,t1,t2); printf("--------\n"); put(n,t1); } else if(option==3) { printf("输入矩阵行数:"); scanf("%d",&n); int t1[n][n]; int t2[n][n]; printf("输入矩阵1:\n"); input(n,t1); printf("输入矩阵2:\n"); input(n,t2); mul(n,t1,t2); printf("--------\n"); put(n,t1); } else { return 0; } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
- ¥500 火焰左右视图、视差(基于双目相机)
- ¥100 set_link_state
- ¥15 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化
- ¥15 Tableau online 嵌入ppt失败
- ¥100 支付宝网页转账系统不识别账号
- ¥15 基于单片机的靶位控制系统
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?