请问C语言运行时如何输入两个矩阵

作者&投稿:检磊 (若有异议请与网页底部的电邮联系)
用c语言实现两个矩阵相乘怎么做?~

1、程序运行输入数据时,第一行为A矩阵的行列数和B矩阵的行列数,接着分别输入A、B两个矩阵的值。

2、首先,定义6个整型变量,保存A、B矩阵的行和列,以及控制循环的变量,k则用于实现矩阵的乘法。

3、接着,定义三个整型二维数组,保存A、B和C矩阵的各元素。

4、输入三个矩阵的行数和列数,保存在变量a、b、c中。

5、输入矩阵A的各元素,保存在数组X中。

6、输入矩阵B的各元素,保存在数组Y中。

7、将二维数组Z的各元素,初始化为0。

8、用两层for循环,控制矩阵的乘法,并输出乘法所得的结果。

9、计算A矩阵和B矩阵的乘法,结果保存在数组Z中。

10、最后,输出乘法所得的结果,即输出Z数组中的所有元素。

11、运行程序,输入矩阵A和B的行数和列数,以及A矩阵和B矩阵的所有元素,电脑就会计算出乘积C矩阵的所有元素,并输出C矩阵。

方法很多:
我这里直接用动态数组演示。
矩阵维度该常量就行了。

#include #include #define row 2 //矩阵行数#define col 3 //矩阵列数int main(){ int ***a=NULL,**b=NULL,*c=NULL,*p=NULL,n,i,j,k; printf("输入要创建的二维矩阵(%dX%d)个数:",row,col); scanf("%d",&n); a=(int ***)malloc(sizeof(int **)*n); if(!a) return 1; for(i=0;i<n;i++) { c=(int *)malloc(sizeof(int)*row*col); b=(int **)malloc(sizeof(int *)*row); if(!c || !b) return 1; p=c; a[i]=b; while(p<=c+(row-1)*col) { *b=p; p+=col; b++; } } //----------截止到此,n个二维矩阵空间创建完成----------// //----下面可以试着给矩阵赋值打印--------------// for(i=0;i<n;i++) { printf("请给第%d个%dX%d矩阵赋值:
",i+1,row,col); p=&a[i][0][0]; for(j=0;j<row*col;j++) scanf("%d",p++); } printf("输入的矩阵为:
"); for(i=0;i<n;i++) { p=&a[i][0][0]; k=1; for(j=0;j<row*col;j++) { printf("%d ",*p); if(k++==col) printf("
"),k=1; p++; } printf("
"); } return 0;}

用一个三维数组 或 两个二维数组

int a[2][2][2] 使用时用第三维度为0或1来判断是第几个矩阵

int a[2][2], b[2][2]使用二个不同的二维数组来存储矩阵

 

int i, j, a[2][2][2] 
for (i = 0; i < 2; i++)
    for (j = 0; j < 2; j++)
        scanf("%d", &a[i][j][0]);

int i, j, a[2][2]
for (i = 0; i < 2; i++)
    for (j = 0; j < 2; j++)
        scanf("%d", &a[i][j]);


n ; //行
m ;//列
c[][];//矩阵
for(int i = 0;i<=n;i++)
for(int j = 0;j<=m;j++)
scanf("%d",&c[i][j]); //即兴写的。。。有启发吗。。


C语言运行时间的问题
include include main(){ long a,b;a=clock();\/*要测试的程序部分*\/ b=clock();printf("执行用时%ldms",b-a);} 这个是可以的,你可以根据你自己的需要将此结构加在你的程序中来测试c程序运行的时间。要注意此结构的核心部分,头函数time。h以及clock();这可是此结构的重点啊。

c语言运行时显示:出现了一个问题导致程序停止正常工作
int i,j;\/\/[6][6]不是【7】【6】int grade[6][6]={80,90,75,82,0,0,90,75,88,95,0,0,68,78,88,82,0,0,72,85,63,86,0,0,95,88,90,85,0,0};char name[5][10]={"李一","成红","王强","张一","席二"};...

C语言运行问题
分析:b=a++&&c++;这个语句,a++&&c++是0,因为a=0,与上一个C++,还是0,d=a++||++c 这个语句,该为1,这时, a =2;n=b>a;这个语句, b=0,不大于2,故 n = 0;k=n&&(m=a); 这个同理 k= 0;即 a =2, b = 0, c = 2,d =1,m随机数,n= 0, k = 0 m由于没...

C语言程序运行问题
5\/9=0 因为是整除。所以 c=5\/9*(a-32)改成 c=(float)5\/9*(a-32)就可以了。

C语言运行问题
include<stdio.h> main(){ int a,b=1,s=0;for(a=1;a<=100;a+=2){ s+=a*b;b*=-1;} printf("%d\\n",s);} 应为S,B没赋值 这样就可以了

C语言运行问题。
pop函数逻辑有问题。if(!top->link){ \/\/当栈内没有下一个元素的时候 cout<<top->data<<' ';return(*top->link);} else \/\/当栈内还有下一个元素的时候 return(*top); \/\/返回top。自己想,这个分支里你那里pop了?外面是*top=pop(top),然后pop(top)实际上==*top,死循环 另外...

c语言问题;若运行时输入:3 5\/<回车>,则一下程序的运行结果是()。
问题2:在输入的时候你用scanf("%f%f%c",&x,&y,&ch);这句话的结果你有没有进行查看,其实ch的值是你输入的回车键,并不是你想要输入的符号,这个你可以自己用printf函数输出看看就知道了,所以在输入ch的值之前要先把那个回车给吸收掉。切记,这是个很容易犯的错误。问题3:用switch case的...

我想问一下我这个c语言程序为什么运行超时!需要怎么样修改呢?_百度知 ...
共有m次操作,有3种操作类型:1.修改一个格子的权值,2.求连续一段格子权值和,3.求连续一段格子的最大值。对于每个2、3操作输出你所求出的结果。输入格式第一行2个整数n,m。接下来一行n个整数表示n个格子的初始权值。接下来m行,每行3个整数p,x,y,p表示操作类型,p=1时表示修改格子x的...

DEV运行C语言程序时出现问题!运行时必须用输入法打几个字再按回车才能...
其实是scanf这个函数,要求输入一组数据,函数会自动转换为整形数值。所以,每次运行都要输入一些东西才有显示。

C语言在编程的时候应注意什么问题?
第五步、研究典型的C语言程序,提高程序设计能力 C语言初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因是:所谓的看懂听明白,只是很肤浅的语法知识,而没有深刻地理解C语言的语句的执行过程(或流程)。 计算机是按照人的指令(编写的程序)去...

西安市19628762903: 请问C语言运行时如何输入两个矩阵 -
终话化瘀: 用一个三维数组 或 两个二维数组 int a[2][2][2] 使用时用第三维度为0或1来判断是第几个矩阵 int a[2][2], b[2][2]使用二个不同的二维数组来存储矩阵1234 inti, j, a[2][2][2] for(i = 0; i < 2; i++) for(j = 0; j < 2; j++) scanf("%d", &a[i][j][0]); 或1234 inti, j, a[2][2] for(i = 0; i < 2; i++) for(j = 0; j < 2; j++) scanf("%d", &a[i][j]);

西安市19628762903: 用C语言怎么调用两个矩阵啊,急!!!谢谢啦! -
终话化瘀: 你是说用来作函数形参吗?void fun(int a[5][5], int b[5][5]){..}

西安市19628762903: C语言输入两个矩阵,相乘,输出乘积矩阵;求指导 -
终话化瘀: #include "stdio.h" main() { int i,j,k,a[3][3],b[3][3],c[3][3]; for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",a[i][j]); //shu lu a[][] for(i=0;i<3;i++) for(j=0;j<3;j++) scanf("%d",b[i][j]); //shu lu b[][] for(i=0;i<3;i++) for(j=0;j<3;j++) for(k=0;k<3;k++) c[i][j]=a[i][k]*b[k][j]...

西安市19628762903: 用C语言实现两个矩阵的乘法,在主函数中输入和输出.输出结果放入C数组中. -
终话化瘀: #include void main() { int i,j,a[2][3],*p; for(i=0;i

西安市19628762903: C语言程序设计:输入两个NxN的由整数构成的矩阵,输出这两个矩阵的乘积. -
终话化瘀: 矩阵相乘的部分:int i,j,k,c[N][N]={0}; for(i=0;ifor(j=0;jfor(k=0;kc[i][j]+=a[i][k]*b[k][j];

西安市19628762903: 如何用c语言实现两个一维矩阵相乘?谢谢!要用2维数组.... -
终话化瘀: C语言程序:#include "stdio.h"//矩阵乘法 void product(double m1[][3], double m2[][3], double result[][3]);//显示矩阵的元素 void display(double m[][3]); int main() { double m1[3][3] = {{1, 2, 1}, {2, 1, 4}, {3, 4, 5}}; double m2[3][3] = {{1, 0, -1}, {-1, -2, ...

西安市19628762903: 用C语言表示两个矩阵相加 -
终话化瘀: #include "stdafx.h" //这是个什么东东 #include <stdio.h>int main(int argc, char* argv[]) { int i,j,c[4][4]; int a[4][4]={{1},{2},{3},{4}}; int b[4][4]={{0,1},{0,2},{0,3},{0,4},};for(i=0;i<4;i++) //这多了一个分号 { for(j=0;j<4;j++)c[i][j]=(a[i][j]+b[i][j]); } printf("...

西安市19628762903: C语言利用随机数生成两个矩阵... -
终话化瘀: %利用随机数生成两个矩阵(数据不一定相同,前者范围为30~90,后者为101~135) r1 = ceil(30 + 30.*rand(16,1)); %30~90的16个随机数 r2 = ceil(101 + 24.*rand(16,1)); %101~135的16个随机数 A = reshape(r1,4,4); B = reshape(r2,4,4);%A,B是4...

西安市19628762903: c语言输入两个矩阵 计算它们的乘积 我的程序为什么输入不进去数组?打一行数字就结束了 如图 第一张 -
终话化瘀: 第一个scanf那里 应该是%d%d%d 你写成%d&d%d 了.这里改过来再试试.

西安市19628762903: C语言 生成两个128*128矩阵 每行都是1,2,3,4....128 -
终话化瘀: #include<stdio.h> int main() { int i=0; int j=0; printf("矩阵1\n"); for(i=0;i<128;i++) { for(j=0;j<128;j++) { printf("%d,",j+1); } printf("\n"); } printf("矩阵2\n"); for(i=0;i<128;i++) { for(j=0;j<128;j++) { printf("%d,",j+1); } printf("\n"); } }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网