C高手帮我看看这个程序吧,有些小毛病

来源:百度知道 编辑:UC知道 时间:2024/06/10 19:42:30
Description

输入一个数字N,找出i个连续自然数累加为N的所有和式(i>1)。

Input

整数N

Output

N=i个连续自然数累加和式。多解时每个式子占一行,按i从小到大的顺序输出

Sample Input

15
Sample Output

15=1+2+3+4+5
15=4+5+6
15=7+8
Source

我自己的程序只会出来一个序列,本来想for(j=i;j<n/2+1;j++)结果不能编译,这是为什么?不然要怎么改这个程序,才能输出正确的结果呢?谢谢了
我的程序是:
#include<stdio.h>
void main()
{
int n,i,j,k,t=0,sum=0;
printf("input a number:");
scanf("%d",&n);
for(i=1;i<n/2;i++)
{
for(j=1;j<n/2+1;j++)
{
sum=sum+j;
if(sum==n)
{
t=j;
printf("%d=",n);
for(k=i;k<t;k++)
printf("%d+",k);
printf("%d",t);
printf("\n");
}
t=0;
}
}
}

改了半天终于出来了,你的源程序有几点错误,改了,你自己看吧
#include<stdio.h>
void main()
{
int n,i,j,k,t=0,sum=0;
printf("input a number:");
scanf("%d",&n);
for(i=1;i<=n/2;i++) //此处有改动
{
for(j=i;j<=n/2+1;j++) //此处最关键
{
sum=sum+j;
if(sum==n)
{
t=j;
printf("%d=",n);
for(k=i;k<t;k++)
printf("%d+",k);
printf("%d",t);
printf("\n");
t=0;
}

}
sum=0; //这个很重要。

}

}