c语言数组中任意个数求和问题。
给你一个数组,请你求出数组里面任意几个数的和的所有情况,比如给你a[5]={1,2,3,4,5};(顺序不一定是有序的)求出它们任意几个数的所有和:一个数的:1,2,3,...
给你一个数组,请你求出数组里面任意几个数的和的所有情况,比如给你a[5]={1,2,3,4,5};(顺序不一定是有序的)求出它们任意几个数的所有和:
一个数的:1,2,3,4,5;
两个数的:1+2=3,1+3=4,1+4=5,1+5=6,2+3=5,2+4=6,2+5=7,3+4=7,3+5=8,4+5=9;
三个数的:1+2+3=6,1+2+4=7,1+2+5=8,1+3+4=8,1+3+5=9,1+4+5=10,2+3+4=9,2+3+5=10,2+4+5=11,3+4+5=12
四个数的:1+2+3+4=10,1+2+3+5=11,1+2+4+5=12,1+3+4+5=13,2+3+4+5=14;
五个数的:1+2+3+4+5=15;
所以所有的和的可能为:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;
列出所有可能的案例
求源代码!多谢了! 展开
一个数的:1,2,3,4,5;
两个数的:1+2=3,1+3=4,1+4=5,1+5=6,2+3=5,2+4=6,2+5=7,3+4=7,3+5=8,4+5=9;
三个数的:1+2+3=6,1+2+4=7,1+2+5=8,1+3+4=8,1+3+5=9,1+4+5=10,2+3+4=9,2+3+5=10,2+4+5=11,3+4+5=12
四个数的:1+2+3+4=10,1+2+3+5=11,1+2+4+5=12,1+3+4+5=13,2+3+4+5=14;
五个数的:1+2+3+4+5=15;
所以所有的和的可能为:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;
列出所有可能的案例
求源代码!多谢了! 展开
2个回答
展开全部
是不是这样:
源代码:
#include <stdio.h>
#include <malloc.h>
int main(void)
{
float* a;
int b,c;
int d,e;
printf("\n输入数的总数(你要输入多少个数):");
scanf("%d",&b);
a=(float*)malloc(sizeof(float)*b);
for(c=0;c<b;c++)
{
printf("\n输入第%d个数:",c+1);
scanf("%g",&a[c]);
}
for(d=0;d<b;d++)
{
for(e=d+1;e<b;e++)
{
printf("\n%g+%g=%g",a[d],a[e],a[d]+a[e]);
}
}
free(a);
printf("\n\n");
system("pause");
return 0;
}
追问
原题是这样的:
输入案例第一行输入一个整数n,表示数组中一共有多少个元素。
接下来一行输入n个数,存入数组中;
第三行输入一个数s,求出数组中哪些数字组合的和等于s,输出有几组这样的数。
例如:
输入
5
1 2 3 4 5
7
输出:3
--------------------
3+4=7,2+5=7,1+2+4=7.
展开全部
#include<stdio.h>
int a[1000];
int v[10000];
int main()
{
int n,i,j,sum;
scanf("%d",&n);//n个数
sum=0;
for(i=1;i<=n;i++) { scanf("%d",&a[i]); sum+=a[i]; }
for(i=1;i<=sum;i++) v[i]=0;//v[i]表示i能否取得到
v[0]=1;
for(i=1;i<=sum;i++)
{
for(j=1;j<=n;j++)
if(i-a[j]>=0 && v[i-a[j]]) v[i]=1;
}
for(i=1;i<=sum;i++) if(v[i]) printf("%d ",i);
return 0;
}
追问
这个要是数组只有两个数的话,数组中元素是啊a,b
若a不是b的二倍,或者b不是a的二倍,就会多出来一个小的数的二倍
比如输入:
2
1 2
输出
1 2 3
---------------
输入
2
2 6
输出
2 4 6 8
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询