C语言怎么自定义函数实现两个同维数组对应位置相乘再求和,返回一个数,在main中调用

比如a[2]={1,4},b[2]={2,3},自定义一个函数sum,使得sum(a[2],b[2])=1*2+4*3=14
我直接在定义的函数中写成sum=a[0]*b[0]+a[1]*b[1],以二维为例,这样为什么不对呢

#include<stdio.h>
void sum(int x[],int y[]);//这括号里边的是形参,可以不给出数组的长度。而且数组名任意,只要 void main() //两个数组名不重复就行
{
int a[2],b[2],i;
printf("intput a[2]:\n");
for(i=0;i<2;i++)
scanf("%d",&a[i]);
printf("input b[2]:\n");
for(i=0;i<2;i++)
scanf("%d",&b[i]);
sum(a,b); //这里是实参,数组在做实参是,只能用他的数组名,相当于地址的传递吧
}
void sum(int a[],int b[])
{
int sum1=0,i;
for(i=0;i<2;i++)
sum1+=a[i]*b[i];
printf("%d\n",sum1);
}追问

我直接在定义的函数中写成sum=a[0]*b[0]+a[1]*b[1],以二维为例,这样为什么不对呢

追答

你可以把代码发给我看看吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-07
#include <stdio.h>
#include <stdlib.h>

/*///////////////////////////////
@parameter:
a 计算的第一个数组
m 数组a的长度
b 计算的第二个数组
n 数组b的长度
@algorithm:
首先判断参数是否合法:m==n
用迭代实现对应位置相乘再求和
///////////////////////////////*/
int array_sum(int *a,int m,int *b,int n);

int array_sum(int *a,int m,int *b,int n)
{
if(m!=n)
{
printf("error!");
exit(-1);
}
int sum=0;
for(int i=0;i<n;++i)
sum+=a[i]*b[i];
return sum;
}
int main()
{
int a[2]={1,4};
int b[2]={2,3};

printf("sum=%d",array_sum(a,2,b,2));

return 0;
}
第2个回答  2011-03-07
#include "stdio.h"
#include "string.h"
#define N 5 /*用来定义数组个数的宏定义*/
int iMulSum(int aa[],int bb[]);/*函数声明*/
int main()
{
int aa[N];/*定义数组*/
int bb[N];/*定义数组*/
int iResult = 0;

memset(aa,0,sizeof(aa[N]));/*由于没有给具体的值,数组一定要初始化,否则会有你想不到的结果*/
memset(bb,0,sizeof(bb[N]));

iResult = iMulSum(aa,bb);/*调用函数*/
printf("Result = %d\n",iResult);

}
int iMulSum(int aa[],int bb[])
{
int ii;
int iSum = 0;
for (ii=0;ii<N;ii++)
{
iSum += aa[ii] * bb[ii];/*要把下标相同的做乘法 然后求累和*/
}
return iSum;
}追问

我直接在定义的函数中写成sum=a[0]*b[0]+a[1]*b[1],以二维为例,这样为什么不对呢

追答

你把代码发上来我看看 或者加QQ 67945750
查看sum是否被初始化 看看是否有返回值

第3个回答  2011-03-07
-.-这种问题也需要问?
用个循环 获取a b 数组内的当前元素
从第一个循环到最后一个....按照要求获得sum
int sum(int a[], int b[],int n)
{
for(i = 0; i < n; i++)
sum += a[i]*b[i];
return sum;
}追问

我直接在定义的函数中写成sum=a[0]*b[0]+a[1]*b[1],以二维为例,这样为什么不对呢

第4个回答  2011-03-07
a,b,c为同样大小的同维数组,length为数组的元素个数。
void func (const int* a, const int* b, int* c, int length)
{
for(int i = 0; i < length; i++)
{
c[i] = a[i] * b[i];
}
}
相似回答