Dim a() As Integer, b() As Integer, c() As Integer
Private Sub Command1_Click()
Dim i As Integer, j As Integer, a3 As String
ReDim c(1 To Val(Text1), 1 To Val(Text1))
For i = 1 To Val(Text1)
For j = 1 To Val(Text1)
c(i, j) = a(i, j) + b(i, j)
a3 = a3 & c(i, j) & " "
Next
a3 = a3 & vbCrLf
Next
Text4 = a3
End Sub
Private Sub Form_Load()
Randomize Timer
Text1 = 4
Text4 = ""
End Sub
Private Sub Text1_Change()
Text2 = "": Text3 = ""
Dim a1 As String, a2 As String, i As Integer, j As Integer
ReDim a(1 To Val(Text1), 1 To Val(Text1))
ReDim b(1 To Val(Text1), 1 To Val(Text1))
ReDim c(1 To Val(Text1), 1 To Val(Text1))
For i = 1 To Val(Text1)
For j = 1 To Val(Text1)
a(i, j) = Int(Rnd 100)
a1 = a1 & a(i, j) & " "
b(i, j) = Int(Rnd 100)
a2 = a2 & b(i, j) & " "
Next
a1 = a1 & vbCrLf
a2 = a2 & vbCrLf
Next
Text2 = a1: Text3 = a2
End Sub
矩阵的大小可以通过N,M来改变,数据自己也可以改为你想要的
程序如下:
#define N 3
#define M 3
main()
{
int a[N][M]={1,2,3,4,5,6,7,8,9}, b[N][M]={9,8,7,6,5,4,3,2,1},c[N][M],d[N][M],i,j;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
{
c[i][j]=a[i][j]+b[i][j]; /相加A+B/
d[i][j]=a[i][j]-b[i][j]; /相减A-B/
}
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%d ",c[i][j]);
printf("\n");
}
pingtf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%d ",d[i][j]);
printf("\n");
}
}
1首先打开vs2015,然后创建一个form窗体程序,当然你也可以创建一个控制台应用程序,看个人需要,小编建议用窗体,因为界面比较清晰,有层次;然后创建一个textbox用来显示矩阵相加的结果。

2先来定义两个矩阵A、B,并给他们赋值,后面就用这两个矩阵进行相加计算。 double [,] A = new double[2,4] { { 1, 2, 3, 4}, { 4, 5, 6, 7} }; double [,] B = new double[2, 4] { { 11, 12, 13, 14 }, { 14, 15, 16, 17 } };

3下面来写一个矩阵相加的类,当我们要进行矩阵相加计算时调用这个类就可以了,还有一种方法是可以写成函数,调用函数也是可以的。 右键解决方案下的程序名,选择添加-类。
// 111cpp : Defines the entry point for the console application
//
#include "stdafxh"
//
/题目:矩阵加减乘演示/
/作者:vc99 writed for c bar/
/日期:200595/
/版本:Version 11
/简介:本演示引入第三个矩阵来保存运算结果,以达到连续运算的目的。/
//
# include "stdioh"
# include "stdlibh"
# define X 3
# define Y 3
/输出数组/
void prt(int a[X][Y])
{
int i,j;
for(i=0;i<X;i++)
{
for(j=0;j<Y;j++)
printf(" %5d",a[i][j]);
printf("\n");
}
}
/输入数组/
void inp(int a[X][Y], char s)
{
int i,j,t;
for(i=0;i<Y;i++)
for(j=0;j<Y;j++)
{
printf("%c[%d][%d]=",s,i,j);/提示输入数组s的[i][j]元素 /
scanf("%d",&t);
a[i][j]=t;
}
}
/矩阵加,结果保存于m[][]/
void madd(int a[X][Y],int b[X][Y],int m[X][Y])
{
int i,j;
for(i=0;i<X;i++)
for(j=0;j<Y;j++)
m[i][j]=a[i][j]+b[i][j];/矩阵加/
prt(m);
}
/矩阵减,结果保存于m[][]/
void msub(int a[X][Y],int b[X][Y],int m[X][Y])
{
int i,j;
for(i=0;i<X;i++)
for(j=0;j<Y;j++)
m[i][j]=a[i][j]-b[i][j];/矩阵减/
prt(m);
}
/矩阵乘,结果保存于m[][]/
void mmul(int a[X][Y],int b[X][Y],int m[X][Y])
{
int i,j,k;
for(i=0;i<X;i++)
for(j=0;j<Y;j++)
m[i][j]=0;
for(i=0;i<X;i++)
for(j=0;j<Y;j++)
for(k=0;k<Y;k++)
m[i][j]+=a[i][k]b[k][j];/矩阵乘/
prt(m);
}
int main(int argc, char argv[])
{
int sel=0,agn=1,cpt=1;
int a[X][Y], b[X][Y], m[X][Y];
while(agn==1)
{
printf("请输入矩阵a!\n");
inp(a,'a');
printf("请输入矩阵b!\n");
inp(b,'b');
while (cpt==1)
{
printf("请选择矩阵运算:[1]+ [2]- [3]\n\t");
scanf("%d",&sel);
if (sel==1) madd(a,b,m);
if (sel==2) msub(a,b,m);
if (sel==3) mmul(a,b,m);
printf("重新运算?[1]是 [0]否");
scanf("%d",&cpt);
}
printf("是否重新输入矩阵?[1]是 [0]否");
scanf("%d",&agn);
}
return 0;
}
要进行矩阵内相加,可以使用矩阵的行、列和元素的索引。对于给定的矩阵:
1, 3, 5, 7, 9
1, 3, 6, 7, 9
1, 3, 7, 7, 9
要计算所有元素的总和,可以使用双重循环遍历矩阵的每个元素,并将它们相加。具体来说,可以使用以下代码:
matrix = [[1, 3, 5, 7, 9], [1, 3, 6, 7, 9], [1, 3, 7, 7, 9]]
total = 0
for i in range(len(matrix)):
for j in range(len(matrix[i])):
total += matrix[i][j]
print(total)
这将输出矩阵所有元素的总和,即252。
如果需要计算某一行或某一列的总和,可以在遍历时只计算特定的行或列。例如,计算第一行的总和,可以使用以下代码:
matrix = [[1, 3, 5, 7, 9], [1, 3, 6, 7, 9], [1, 3, 7, 7, 9]]
total = 0
for j in range(len(matrix[0])):
total += matrix[0][j]
print(total)
这将输出第一行的总和,即25。
需要注意的是,矩阵内相加时需要保证每行或每列的元素数量相同,否则无法进行相加
这两个程序可以实现任意维数矩阵的相加与相乘,只需传入相应参数即可。
void Add(double a, double b, double c, int m, int n)
{
//a是第一个矩阵,b是第二个矩阵,c是输出结果,m与n是行数和列数
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
c[in+j]=a[in+j]+b[in+j];
}
void Multiply(double a, double b, double c, int m, int n, int l)
{
//a是第一个矩阵,b是第二个矩阵,c是输出结果,m与n是第一个矩阵维数,n,l是第二个矩阵维数
int i,j,k;
for(i=0;i<m;i++)
for(j=0;j<l;j++)
{
c[li+j]=0;
for(k=0;k<n;k++)
{
c[li+j]=c[li+j] +a[ni+k]b[j+kl];
}
}
}
#include<stdioh>
#include<stdlibh>
void memory(int p,int m,int n); //分配的内存的函数;
void readdata(intp,int m,int n);
void plus(int u,int i,int m,int n); //求和函数,要求两个矩阵同型
void redu(int u,int i,int m,int n); //求差,要求两个矩阵同型
void mult(int u,int i,int m,int n); //矩阵的积;乘法要求前一个矩阵的行数等于后一个矩阵的列数;
void release(int p,int m,int n); //释放内存的函数;
int main() //也可使用switch语句来选择求和求差求积
{
int m,n;
scanf("%d%d",&m,&n); //输入m,n两个数,确定矩阵要分配内存的大小
int k,q,o;
memory(k,m,n);
memory(q,m,n);
memory(o,m,n); //备用,用来存放结果的一块内存;
readdata(k,m,n);
readdata(q,m,n);
plus(k,q,m,n);
redu(k,q,m,n);
mult(k,q,m,n); //在本行加//则可不求矩阵乘法,使程序适用于一切mn的矩阵加法;
realease(k,m,n);
realease(q,m,n);
}
void memory(int p,int m,int n)
{
p=(int)malloc(msizeof(int);
for(i=0;i<n;i++)
{
p[i]=(int)malloc(nsizeof(int));
}
}
void release(int p,int m,int n)
{
for(i=0;i<n;i++)
{
free(p[i]);
p[i]=0;
}
free(p);
p=0;
}
void readdata(int p,int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",&p[i][j]); //要求用户由行到列输入矩阵的数据;
}
}
void plus(int u,int i,int m,int n)
{
int r,j;
for(r=0;r<m;r++)
{
for(j=0;j<n;j++)
printf("%5d",u[r][j]+i[r][j]);
printf("\n");
}
}
void redu(int u,int i,int m,int n)
{
int r,j;
for(r=0;r<m;r++)
{
for(j=0;j<n;j++)
printf("%5d",u[r][j]-i[r][j]);
printf("\n");
}
void mult(int u,int i,int m,int n)
{
int r,j,k,d=0;
for(r=0;r<m;r++)
{
for(j=0;j<n;j++)
{
for(k=0;k<m;k++) //这里分号错写成了逗号
d=d+u[r][k]i[k][r];
printf("%d",d);
}
d=0;
printf("\n");
}
}
以上就是关于VB:随机生成两个n×n矩阵,先写程序实现这两个矩阵的相加全部的内容,包括:VB:随机生成两个n×n矩阵,先写程序实现这两个矩阵的相加、两个矩阵相加减的程序怎么编写请C语言高手帮忙、c#如何实现矩阵相加窗体文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)