标签:-- 赋值 void int .com 需要 return 分享 bsp
---恢复内容开始---
矩阵相乘程序的简单C语言实现:
这是矩阵相乘的公式:
源代码:
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define M 100 4 5 int main(void) 6 { 7 int i,j,k,matrix1[M][M],matrix2[M][M],row1,col1,row2,col2,matrix[M][M]; 8 /*为需要相乘的两个矩阵赋值:*/ 9 printf("输入第一个矩阵的行数和列数:"); 10 scanf("%d%d",&row1,&col1); 11 printf("输入第一个矩阵:\n"); 12 for(i=0;i<row1;i++){ 13 for(j=0;j<col1;j++){ 14 scanf("%d",&matrix1[i][j]); 15 } 16 } 17 printf("输入第二个矩阵的行数和列数:"); 18 scanf("%d%d",&row2,&col2); 19 printf("输入第二个矩阵:\n"); 20 for(i=0;i<row2;i++){ 21 for(j=0;j<col2;j++){ 22 scanf("%d",&matrix2[i][j]); 23 } 24 } 25 /*初始化matrix:*/ 26 for(i=0;i<row1;i++){ 27 for(j=0;j<col2;j++){ 28 matrix[i][j]=0; 29 } 30 } 31 32 if(col1!=row2){ 33 fprintf(stderr,"enput error!"); 34 exit(EXIT_FAILURE); 35 } 36 printf("The result:\n"); 37 for(i=0;i<row1;i++){ 38 for(j=0;j<col2;j++){ 39 for(k=0;k<col1;k++){ 40 matrix[i][j]=matrix[i][j]+matrix1[i][k]*matrix2[k][j]; 41 } 42 } 43 } 44 45 for(i=0;i<row1;i++){ 46 for(j=0;j<col2;j++){ 47 printf("%d ",matrix[i][j]); 48 } 49 printf("\n"); 50 } 51 return 0; 52 }
程序中先初始化矩阵,然后判断第一个矩阵的列数和第二个矩阵的行数是否相等,如果不相等则直接提示错误后退出程序
相等的话则利用公式计算乘积,结果赋给matrix二维数组。
最后用for循环打印出结果验证
eg:
由于该矩阵是用二维数组存储,并不是用链表或其他结构,效率可能较低,尤其是对于稀疏矩阵的情况。
程序在devcpp中编译通过。
2016-10-21 23:49:14
标签:-- 赋值 void int .com 需要 return 分享 bsp
原文地址:http://www.cnblogs.com/dtdyq/p/5986454.html