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;
列出所有可能的案例

求源代码!多谢了!
展开
 我来答
新小圈崛起了
2014-06-07 · 超过23用户采纳过TA的回答
知道答主
回答量:269
采纳率:0%
帮助的人:103万
展开全部

是不是这样:


源代码:

#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.
LennyAscetic
推荐于2017-10-05 · TA获得超过1111个赞
知道小有建树答主
回答量:545
采纳率:0%
帮助的人:880万
展开全部

#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
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式