#include "stdioh"
#include "stdlibh"
void main ()
{
int m,l,p,q;
printf("输入第一个矩阵的维数m和l:\n");
scanf("%d%d",&m,&l);
printf("输入第二个矩阵的维数p和q:\n");
scanf("%d%d",&p,&q);
while (l!=p)
{
printf("两个矩阵不匹配,不能进行相乘运算,请重新输入\n\n");
printf("输入第一个矩阵的维数m和l:\n");
scanf("%d%d",&m,&l);
printf("输入第二个矩阵的维数p和q:\n");
scanf("%d%d",&p,&q);
}
double a[200][200]={0}, b[200][200]={0},sum=0;
int i,j,k=0;
for (i=0;i<m;i++)
{
for (j=0;j<l;j++)
{
a[i][j]=(double)rand()/RAND_MAX;
}
}
printf("随机矩阵a是:\n");
for (i=0;i<m;i++)
{
for (j=0;j<l;j++)
{
printf("%f ",a[i][j]);
}
printf("\n");
}
//cout<<"输入一个32的矩阵:"<<endl;
for (i=0;i<p;i++)
{
for (j=0;j<q;j++)
{
b[i][j]=(double)rand()/RAND_MAX;
}
}
printf("随机矩阵b是:\n");
for (i=0;i<p;i++)
{
for (j=0;j<q;j++)
{
printf("%f ",b[i][j]);
}
printf("\n");
}
printf("ab相乘结果为:\n");
for (i=0;i<m;i++)
{
while (k<q)
{
for (j=0;j<q;j++)
{
sum = a[i][j]b[j][k]+sum;
}
printf("%f ",sum);
k++;
sum=0;
}
k=0;
printf("\n");
}
}
如果不满足你要求,自己再改一下吧
1、设计一个矩阵类,将相应的函数和数据封装在此类中,简化程序2、修改程序结构,使程序可以反复执行,直至按键选择退出为止3、本程序用数组表示55矩阵,将其改为根据输入矩阵的大小动态分配空间[m][n]来放置数据,还可以通过读数据文件输入4、增加类的构造函数和成员函数,使得矩阵数据既可以用在对象初始化时赋值,也可以通过键盘赋值,还可以通过读数据文件输入5、用模板的形式改写矩阵数据类型,使得矩阵中的数据既可以是整型数据,也可以是浮点型数据,执行程序时,分别定义两个整型矩阵和两个浮点型矩阵进行乘法验证6、完成矩阵的乘法运算,在运算之前判断这两个矩阵能否满足乘法运算的条件,若不满足,则给出提示信息程序设计思想:1、类的结构该矩阵的定义与上题相同,实现乘法运算需要有两个矩阵类对象参与,结果存放在另外一个矩阵类的对象中,建议重载乘法运算符。并把这个重载函数定义为类的友元函数。参考类的结构如下:template<class T>class CMatrix{TMat; //矩阵的头指针int nRow; //矩阵的行数int nCol; //矩阵的列数public:CMatrix<T>(); //缺省的构造函数CMatrix(Tmat,int row,int col); //构造函数CMatrix(int row,int col) //构造函数CMatrix(int row,int col,int k); //构造函数,从键盘输入矩阵void Show(); //输出void InputFromFile(); //从文件中输入矩阵
两数相乘的C语言编程:
扩展资料:
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
是左移5 位。
2 X 2 =4 (00000010 X 2 = 00000100)
乘2 就是左移一位,乘4左移2 位,以此类推,乘32就是左移5 位(2 的多少次方,就是左移多少位)
右移就是用除法了
左移6 位、3 位你应该明白了吧
以上就是关于求一个 矩阵乘法的C语言程序全部的内容,包括:求一个 矩阵乘法的C语言程序、C++程序设计:矩阵乘法运算、C语言求两数相乘等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)