我尝试使用函数计算内部乘积,但返回值不正确。
/* Inner product x[n]*y[n] */
#include <stdio.h>
#define n 5
void main()
{
int i,sum;
int x[n]={1,2,-1,3,5};
int y[n]={0,6,-2,4,1};
sum=inner_prod(x[n],y[n]);
printf("\nThe inner product = %d",sum);
}
int inner_prod( int a[n], int b[n] )
{
int i, s=0;
for(i=0;i<n;i++)
s=s+b[i]*a[i];
return (s);
}
答案 0 :(得分:6)
在您的情况下,两个向量x,y的点积应为31,并且可以通过inner_prod函数得出结果,但是您为x * x计算的点积为40 .. >
简而言之,您输入错字不是问题吗?
sum=inner_prod(x[n],x[n]);
我相信您希望做到以下几点?
sum=inner_prod(x,y);
答案 1 :(得分:1)
据我所知,数组的传递是不正确的。你可以简单地做
在main()
中:
sum = inner_prod(x, y)
并在inner_prod()
函数中:
int inner_prod(int *a, int *b)
{
....
}
还要在inner_prod()
函数上方定义此main()
函数。