数组中n个相邻数累加算法

【求助】数组中n个相邻数累加算法
数组中n个相邻数累加算法,比如1,2,3,4,5,6
相邻的两个数1+2,2+3,3+4,。。。
相邻的三个数1+2+3,2+3+4,3+4+5,。。。
相邻的四个数1+2+3+4,2+3+4+5,。。。
。。。
相邻的n个数1+2+3+4+5+6

求助此算法,谢谢!
------解决思路----------------------
#include <stdio.h>
int main() {
    const int n=6;
    int d[n]={1,2,3,4,5,6};
    int L,F,sum,i;

    for (L=2;L<=n;L++) {
        printf("----%d----\n",L);
        for (F=0;F<=n-L;F++) {
            sum=d[F];printf("%d",d[F]);
            for (i=F+1;i<F+L;i++) {
                sum+=d[i];
                printf("+%d",d[i]);
            }
            printf("=%d\n",sum);
        }
    }

    return 0;
}
//----2----
//1+2=3
//2+3=5
//3+4=7
//4+5=9
//5+6=11
//----3----
//1+2+3=6
//2+3+4=9
//3+4+5=12
//4+5+6=15
//----4----
//1+2+3+4=10
//2+3+4+5=14
//3+4+5+6=18
//----5----
//1+2+3+4+5=15
//2+3+4+5+6=20
//----6----
//1+2+3+4+5+6=21
//

------解决思路----------------------
我也来凑热闹,除了while循环加了个printf方便看到运算过程和结果。


void formatInfo(int n, char* pInfo)
{
if(NULL == pInfo) return;

char cFactor = (n%2 == 1 ? '+':'-');

if(n > 1)
{
sprintf(pInfo+strlen(pInfo), " %c ", cFactor);
}
sprintf(pInfo+strlen(pInfo), "%d", n);
}

int sum(int nEnd, char* pInfo)
{
int s = 0;
int n = 1;
while( n <= nEnd )
{
int factor = ( 1 == n%2 ? 1 : (-1) );
s += n*factor;

formatInfo(n, pInfo);

n++;
}

sprintf(pInfo+strlen(pInfo), " = %d", s);
return s;
}

int _tmain(int argc, _TCHAR* argv[])
{
char info[1000];
memset(info, 0, sizeof(info));
int s = sum(5, info);
printf("%s\r\n", info);
}


输出结果:
1 - 2 + 3 - 4 + 5 = 3