C语言 动态生成矩阵,并实现其录入转置

来源:互联网 发布:百变小樱之知樱复仇 编辑:程序博客网 时间:2024/06/06 12:29



 #include <stdio.h>#include <stdlib.h>bool check(int row1,int col1,int row2,int col2);int *Multiplication(int *arr1,int *arr2,int row1,int col1,int row2,int col2);int main(){int row1=1,col1=1,row2=1,col2=1;int i,j;//检查相乘矩阵的有效性label:printf("请输入要输入的两个矩阵的行数列数:\n");printf("第一个矩阵的行数列数:");scanf("%d%d",&row1,&col1);printf("第二个矩阵的行数列数:");scanf("%d%d",&row2,&col2);if(check(row1,col1,row2,col2)){//第一个矩阵数据的录入printf("请输入第一个矩阵的数据:\n");int *myarr1=(int *)malloc(row1*col1*sizeof(int));for(i=0;i<row1;i++){for(j=0;j<col1;j++){scanf("%d",myarr1+col1*i+j);}}//第二个矩阵数据的录入printf("请输入第二个矩阵的数据:\n");int *myarr2=(int *)malloc(row2*col2*sizeof(int));for(i=0;i<row2;i++){for(j=0;j<col2;j++){scanf("%d",myarr2+col2*i+j);}}//两个矩阵的显示printf("两个矩阵的数据分别为:\n");for(i=0;i<row1;i++){for(j=0;j<col1;j++){printf("%3d",*(myarr1+i*col1+j));}printf("\n");}for(i=0;i<row2;i++){for(j=0;j<col2;j++){printf("%3d",*(myarr2+i*col2+j));}printf("\n");}//计算两个矩阵相乘的结果并显示int *result=Multiplication(myarr1,myarr2,row1,col1,row2,col2);printf("矩阵相乘的结果矩阵为:\n");for(i=0;i<row1;i++){for(j=0;j<col2;j++){printf("%3d",*(result+i*col2+j));}printf("\n");}//for()}else{printf("所输入的两个矩阵不可以相乘\n请重新输入:\n");goto label;}system("pause");return 0;}bool check(int row1,int col1,int row2,int col2){//printf("row1=%d,col1=%d,row2=%d,col2=%d\n",row1,col1,row2,col2);if(row1>0||row2>0||col1>0||col2>0){if(col1==row2)return true;elsereturn false;}else{return false;}}int *Multiplication(int *arr1,int *arr2,int row1,int col1,int row2,int col2){int *tempt=(int *)malloc(row1*col2*sizeof(int));for(int i=0;i<row1;i++){for(int j=0;j<col2;j++){int sum=0;for(int a=0;a<col1;a++){sum=sum+ (*(arr1+i*col1+a)) * (*(arr2+a*col2+j));}*(tempt+i*col2+j)=sum;}}return tempt;}


0 0
原创粉丝点击