数据结构矩阵
矩阵加减
include<stdio.h>
main(){
int i,j;
printf("请输入行和列长度:");
scanf("%d%d",&i,&j);
int a[i][j],b[i][j],c[i][j];
int m,n;
printf("请输入A矩阵的元素:");
for(m=0;m<i;m++){
for(n=0;n<j;n++){
scanf("%d",&a[m][n]);
}
}
printf("请输入B矩阵的元素:");
for(m=0;m<i;m++){
for(n=0;n<j;n++){
scanf("%d",&b[m][n]);
}
}
//输出A矩阵
printf("\n");
for(m=0;m<i;m++){
printf("\n");
for(n=0;n<j;n++){
printf("%d\t",a[m][n]);
}
}
//输出B矩阵
printf("\n");
for(m=0;m<i;m++){
printf("\n");
for(n=0;n<j;n++){
printf("%d\t",b[m][n]);
}
}
//两矩阵相加
printf("\n");
for(m=0;m<i;m++){
printf("\n");
for(n=0;n<j;n++){
printf("%d\t",a[m][n]+b[m][n]);
}
}
//两矩阵相减
printf("\n");
for(m=0;m<i;m++){
printf("\n");
for(n=0;n<j;n++){
printf("%d\t",a[m][n]-b[m][n]);
}
}
//两矩阵相乘,两行列式为方阵或a的行与b的列相等
printf("\n");
if(i==j){
for(m=0;m<i;m++){
for(n=0;n<j;n++){
c[m][n]=0;
for(int k=0;k<i;k++){
c[m][n]=c[m][n]+a[m][k]*b[k][m];
}
}
}
printf("\n");
for(m=0;m<i;m++){
printf("\n");
for(n=0;n<j;n++){
printf("%d\t",c[m][n]);
}
}
}
}
请输入行和列长度:3
3
请输入A矩阵的元素:1
2
3
4
5
6
7
8
9
请输入B矩阵的元素:3
4
5
6
7
8
9
7
5
1 2 3
4 5 6
7 8 9
3 4 5
6 7 8
9 7 5
4 6 8
10 12 14
16 15 14
-2 -2 -2
-2 -2 -2
-2 1 4
42 42 42
93 93 93
144 144 144
include<stdio.h>
main(){
//a矩阵的行,必须等于b矩阵的列
int i,j;
printf("请输入行和列长度:");
scanf("%d%d",&i,&j);
int a[i][j],b[j][i],c1[i][i],c2[j][j];
int m,n;
printf("请输入A矩阵的元素:");
for(m=0;m<i;m++){
for(n=0;n<j;n++){
scanf("%d",&a[m][n]);
}
}
printf("请输入B矩阵的元素:");
for(m=0;m<j;m++){
for(n=0;n<i;n++){
scanf("%d",&b[m][n]);
}
}
//输出A矩阵
printf("\n");
for(m=0;m<i;m++){
printf("\n");
for(n=0;n<j;n++){
printf("%d\t",a[m][n]);
}
}
//输出B矩阵
printf("\n");
for(m=0;m<j;m++){
printf("\n");
for(n=0;n<i;n++){
printf("%d\t",b[m][n]);
}
}
//矩阵相乘
for(m=0;m<i;m++){
for(n=0;n<i;n++){
c1[m][n]=0;
for(int k=0;k<j;k++) {
c1[m][n]=c1[m][n]+a[m][k]b[k][n];
}
}
}
for(m=0;m<j;m++){
for(n=0;n<j;n++){
c2[m][n]=0;
for(int k=0;k<i;k++) {
c2[m][n]=c2[m][n]+b[m][k]a[k][n];
}
}
}
printf("\n");
for(m=0;m<i;m++){
printf("\n");
for(n=0;n<i;n++){
printf("%d\t",c1[m][n]);
}
}
printf("\n");
for(m=0;m<j;m++){
printf("\n");
for(n=0;n<j;n++){
printf("%d\t",c2[m][n]);
}
}
}
请输入行和列长度:3
2
请输入A矩阵的元素:1
2
3
4
5
6
请输入B矩阵的元素:7
1
2
3
4
5
1 2
3 4
5 6
7 1 2
3 4 5
13 9 12
33 19 26
53 29 40
20 30
40 52
include<stdio.h>
main(){
int k;
printf("请输入方阵的行和列:");
scanf("%d",&k);
int a[k][k];
int i,j;
//上三角方阵
printf("请输入上三角方阵的元素:\n");
for(i=0;i<k;i++){
for(j=0;j<k;j++){
if(i>j){
a[i][j]=0;
}
else scanf("%d",&a[i][j]);
}
}
for(i=0;i<k;i++){
printf("\n");
for(j=0;j<k;j++){
printf("%d\t",a[i][j]);
}
}
//下三角方阵
printf("\n");
printf("请输入下三角方阵的元素:\n");
for(i=0;i<k;i++){
for(j=0;j<k;j++){
if(j>i){
a[i][j]=0;
}
else scanf("%d",&a[i][j]);
}
}
for(i=0;i<k;i++){
printf("\n");
for(j=0;j<k;j++){
printf("%d\t",a[i][j]);
}
}
//对称矩阵
printf("\n");
printf("请输入对称矩阵的元素:\n");
for(i=0;i<k;i++){
for(j=0;j<k;j++){
if(i>j){
a[i][j]=a[j][i];
}
else scanf("%d",&a[i][j]);
}
}
for(i=0;i<k;i++){
printf("\n");
for(j=0;j<k;j++){
printf("%d\t",a[i][j]);
}
}
//三对角矩阵
printf("\n");
printf("请输入三对角矩阵的元素:\n");
for(i=0;i<k;i++){
for(j=0;j<k;j++){
if(i>(j+1)||j>(i+1)){
a[i][j]=0;
}
else scanf("%d",&a[i][j]);
}
}
for(i=0;i<k;i++){
printf("\n");
for(j=0;j<k;j++){
printf("%d\t",a[i][j]);
}
}
}
请输入方阵的行和列:3
请输入上三角方阵的元素:
1
2
3
4
5
6
1 2 3
0 4 5
0 0 6
请输入下三角方阵的元素:
3
4
5
6
7
8
3 0 0
4 5 0
6 7 8
请输入对称矩阵的元素:
9
2
3
4
5
6
9 2 3
2 4 5
3 5 6
请输入三对角矩阵的元素:
7
6
5
4
43
3
2
7 6 0
5 4 43
0 3 2