行等于列的可以相乘。假定行列数 为 n, 用 函数 float fun(float *a, float *b, int n) 计算。
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的阿拉善盟网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
#include stdio.h
float fun(float *a, float *b, int n){
int i;
float sum=0.0;
for (i=0;in;i++) sum=sum+a[i]*b[i];
return sum;
}
main()
{
float x[5]={1,2,3,4,5};
float y[5]={1,2,3,4,5};
float r;
r = fun(x,y,5); // 调用的例子
printf("%g",r);
return 0;
}
两个一维数组的长度必须相同,否则无法相乘。
思路为,循环遍历数组,并将对应元素相乘,结果存到第三个数组中。
以整型为例,示例代码如下:
void array_multi(int *a, int *b, int *r, int len)//将长度为len的数组a,b对应元素相乘,结果存于r中。
{
int i;
for(i = 0; i len; i ++)//遍历数组。
r[i] = a[i]*b[i];//对应元素相乘,并存于r中。
}
确定维数的话就简单,直接运算:
x=a[2]+b[1]
c[4]=x%10
x=a[1]+b[0]+x/10//最后这个事进位
c[3]=x%10
x=a[0]+x/10
c[2]=x%10
c[1]=x/10
c[0]=0
你也可以用循环。
另一种是先求值:
a=100*a[0]+10*a[1]+a[2]
b=10*b[0]+b[1]
c=a+b
c[4]=c%10//得到末位
c=c/10//去除末位
c[3]=c%10
c=c/10
c[2]=c%10
c=c/10
c[1]=c%10
c=c/10
c[0]=c%10
没有考虑语法,自己解决