C语言程序设计实验报告

和矩阵相乘有关的呢 急啊 谢谢大家了

第1个回答  2007-09-12
1,若程序定义为三行三列的矩阵,并在主函数中键盘赋值。请编写函数juzhen(int a[][3],int n),函数功能是:使矩阵左下角元素中的值乘以.例如:若矩阵中的值为:
1 9 7
2 3 8
4 5 6
n=3,则矩阵值变为:
1 9 7
6 9 8
12 15 18
注:二维数组下三角元素每行最后元素的列标和该列的列号一致

源程序如下:
#include <stdio.h>
int juzhen(int a[][3],int n)
{
int i,j;
for (i=1;i<3;i++)
for (j=0;j<=i;j++)
a[i][j]=a[i][j]*n;
}
main()
{
int i,j,a[3][3],m;
clrscr();
printf("please enter 9 numbers :\n");
for (i=0;i<3;i++)
for (j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("the old ju zhen is:\n");
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("%3d",a[i][j]);
printf("\n");
}
printf("please enter a int number:\n");
scanf("%d",&m);
juzhen (a,m);
printf("the new ju zhen is:\n");
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
2,请编写函数juzhen,该函数的功能是:将三行四列矩阵x乘以四行三列矩阵y,结果放在三行三列矩阵中。矩阵相乘的基本方法是:矩阵Xy中行列下标分别为i,j的元素的值,是矩阵X中第i行上四个元素与矩阵Y中第j列上四个元素对应相乘的积。
#include <conio.h>
#include <stdio.h>
void juzhen (int a[3][4],int b[4][3],int ab[3][3])
{
int i,j,z;
for (i=0;i<3;i++)
for (j=0;j<4;j++)
for (z=0;z<3;z++)
ab[i][z]=ab[i][z]+a[i][j]*b[j][z];/*此得为要填写的内容*/
}
main()
{
int x[3][4]={1,0,1,1,2,1,0,1,1,2,0,3};
int y[4][3]={1,1,1,0,0,0,2,1,1,1,1,3};
int xy[3][3]={0},i,j;
clrscr();
juzhen (x,y,xy);
printf("x ju zhen is:\n");
for (i=0;i<3;i++)
{
for (j=0;j<4;j++)
printf("%3d",x[i][j]);
printf("\n");
}
printf("y ju zhen is:\n");
for (i=0;i<4;i++)
{
for (j=0;j<3;j++)
printf("%3d",y[i][j]);
printf("\n");
}
printf("xy ju zhen is:\n");
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("%3d",xy[i][j]);
printf("\n");
}
}
第2个回答  2007-09-12
#define ROW 3
#include<iostream>
using namespace std;
void main()
{
int sm[ROW][ROW],rm[ROW][ROW],am[ROW][ROW],i,j,m,n;
for(i=0;i<ROW;i++)
for(j=0;j<ROW;j++)
am[i][j]=0;

cout<<"输入一个3*3矩阵:"<<endl;
for(i=0;i<ROW;i++)
for(j=0;j<ROW;j++)
cin>>sm[i][j];
cout<<"输入一个3*3矩阵:"<<endl;
for(i=0;i<ROW;i++)
for(j=0;j<ROW;j++)
cin>>rm[i][j];
for(i=0;i<ROW;i++)
{
for(m=0;m<ROW;m++)
for(n=0;n<ROW;n++)
am[i][m]+=sm[i][n]*rm[n][m];
}

for(i=0;i<ROW;i++)
{
cout<<endl;
for(j=0;j<ROW;j++)
cout<<am[i][j]<<' ';

}
cout<<endl;
}本回答被提问者采纳
第3个回答  2007-09-12
43