编写一个读取最多9个整数序列的c程序,打印出每个整数的总和 它的连续子序列。
我能够打印所有连续的子序列,但不能打印每个子序列的总和。请帮我学习。我是一个天真的学习者。请原谅我编码效率低下的原因。以下是我能够做到的。
#include<stdio.h>
int main()
{
int a[9];
int i,j,k,sum[9]={0};
for(i=0;i<9;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
{
for(j=i;j<9;j++)
{
for(k=i;k<j+1;k++)
printf("+%d ",a[k]);
printf("\n");
}
}
getch();
}
答案 0 :(得分:1)
首先,关于这个:
sum[9]={0};
由于问题只要求您打印各个子序列的总和,因此不一定要存储它们,所以我只声明一个int
可以用来进行求和。顺便说一下,如果你确实需要存储所有的总和,你需要一个更大的数组:一个具有每个不同子序列的位置,而不是原始系列的每个成员。
进行计算。这里是你枚举子序列成员的地方:
for(k=i;k<j+1;k++)
printf("+%d ",a[k]);
您要做的是:
a[k]
值添加到总和中。这应该足以让你完成练习,但如果你有任何进一步的具体问题,请告诉我。
答案 1 :(得分:0)
#include<stdio.h>
int main()
{
int a[9]={0};
int sum=0;
int i,j;
for(i=0;i<9;i++)
scanf("%d",&a[i]);
for(i=0;i<9-1;i++)
{
sum=0;
for(j=i;j<9;j++)
{
sum=sum+a[j];
printf("sum: %d ",sum);
}
printf("\n\n");
}
return 0;
}
首先关闭所有我都不知道什么是连续的子序列,很抱歉,如果我的答案对你的问题不是那么正确,我用Google搜索并发现What does this definition of contiguous subsequences mean?我根据我对这个链接的理解。所以根据你的问题应该找到每个可能的集合的总和(以连续的递增顺序)。我已经实现了它。
答案 2 :(得分:-1)
这可能会破坏你的学习过程,但无论如何这里只有一个解决方案:
#include<stdio.h>
int main()
{
int a[9];
int i;
int cont_sum = 0;
int prev;
for(i=0;i<9;i++)
scanf("%d",&a[i]);
prev = a[0];
cont_sum = prev;
for(i=1;i<9;i++)
{
if(a[i] != prev)
{
printf("contiguous sub sequence sum: %d\n", cont_sum);
prev = a[i];
cont_sum = prev;
}
else
{
prev = a[i];
cont_sum += prev;
}
}
printf("contiguous sub sequence sum: %d\n", cont_sum);
getch();
}