有数组a[ ]={1,2,3,4,5}和数组b[ ]={1,2,3,4,5},需要将a数组中的数依次取出分别与b数组中的数相加得到新的数组再输出新数组的和,即第一次将a中的1分别与b中的1,2,3,4,5相加,得到[2,3,4,5,6],输出为2+3+4+5+6=20;第二次为将a中的2分别与b中的1,2,3,4,5相加,得到[3,4,5,6,7],输出为3+4+5+6+7=25,之后类似,求用C/C++编写,急用,感激不尽!!!
#include
int main()
{int a[ ]={1,2,3,4,5},b[ ]={1,2,3,4,5};
int x=sizeof(a)/sizeof(a[0]), y=sizeof(b)/sizeof(b[0]);
int i,j;int c[y],sum=0;
for(i=0;i<x;i++)
{ printf("c(%d)=",i);
for(j=0;j<y;j++)
{ c[j]=a[i]+b[j];
sum=sum+c[j];
printf("%d ",c[j]);
}
printf("\n sum(%d)=%d \n",i,sum);
}
return 0;
}
楼上的做法有点笨重吧,首先b数组是永远求和的,没必要每次都重新遍历再求和。
可以在楼上的基础上进行改进:
1.对b数组求和
2.输出值=a数组当前元素*b数组个数+b数组的和
首先计算B的整体值是对的,但是 也得注意楼主要求的输出格式。。。。
#include
int main()
{int a[ ]={1,2,3,4,5},b[ ]={1,2,3,4,5};
int i,j;sum=0;sum1=0;
for(i=0;i<b.length;i++)
{sum+=b[i];
}
for(j=0;j<a.length;j++)
{
sum1=sum+a[i]*b.length;
printf(sum1);
}
}
a数组每个元素要依次和b数组逐个元素相加,那么可以先把b数组各元素求和保存到一个变量
如果仅仅为了遍历新的数组元素值,没必要产生新数组啊。
遍历a数组,每个元素加上这个变量进行输出呗。
int a[ ]={1,2,3,4,5};
int b[ ]={1,2,3,4,5};
int size = sizeof(a)/sizeof(a[0]);
int sum[ ] = {};
int i,j;
sum[size] = {0,0,0,0,0}
for (i = 0; i < size; i++){
for (j = 0; j < size; j++) {
b[j] = b[j] + a[i];
}
for(j = 0; j < size; j++){
sum[i] = sum[i] + b[j];
}
}
#include
int main()
{
int i,j;
int sum = 0;
int a[] = {1,2,3,4,5,};
int b[] = {1,2,3,4,5};
int c[6] = {0};
for(i = 0;i < 5;i++)
{
for(j = 0;j < 5;j++)
{
c[j] = a[i] + b[j];
sum= sum + c[j];
}
printf("%d\n",sum);
sum = 0;
}
return 0;
}
楼主,我这个代码绝对符合你的要求。
#include<stdio.h>
int main(){
int i,j,sum;
int a[]={1,2,3,4,5};
int b[]={1,2,3,4,5};
int c[]={0,0,0,0,0};
for(i=0;i<5;i++){
sum=0;
for(j=0;j<5;j++){
c[j]=a[i]+b[j];
sum+=c[j];
}
for(j=0;j<5;j++)
if(j!=4)
printf("%d+",c[j]);
else
printf("%d=",c[j]);
printf("%d\n",sum);
}
return 0;
}
b 的每个元素为 b[i] + a[0] + a[1] .... + a[4]
所以 b[0] + a[0] + a[1] .... + a[4]
b[1] + a[0] + a[1] .... + a[4]
b[2] + a[0] + a[1] .... + a[4]
b[3] + a[0] + a[1] .... + a[4]
b[4] + a[0] + a[1] .... + a[4]
sum(b[]) + 5*sum(a[])