C语言程序函数部分求改错

求改错,实在看不懂

 

 

给定的下列程序中,函数fun的功能是:
    判断输入的任何一个正整数n,是否等于某个连续正整数序列之和。
    若是,则输出所有可能的序列。否则输出“不能分解”。
    例如:当输入100时,输出:
    100=9+10+11+12+13+14+15+16
    100=18+19+20+21+22
        请改正函数fun中指定部位的错误,使它能得出正确的结果。

#include  <stdio.h>
    void fun(int n)
    {  int  j, b, c, m, flag=0;
       for (b=1; b <= n/2; b++)
        { /**********found**********/   
          n = m;
          c = b;
          while (m != 0 && m >= c)
          { /**********found**********/
   
            m = m - c; c++;
           }
          /**********found**********/
          if( m != 0 )
          {  printf("%d=", n);
             for (j=b; j < c-1; j++)
                printf( "%d+", j  );
             printf("%d\n", j);
             flag=1;
           }
         }
       if(flag == 0)
         printf("不能分解\n");
    }
    void main( )
    {  int  n;
      // printf("请输入一个整数 :   ");  
       scanf("%d", &n);
       fun(n);
    }

把n赋给m,当m==0而不是m不等于0.不过%d+是什么鬼

代码修改如下:


#include  <stdio.h>
void fun(int n)
{  
	int  j, b, c, m, flag=0;
	for (b=1; b <= n/2; b++)
	{ /**********found**********/
		m = n;//error n = m;
		c = b;
		while (m != 0 && m >= c)
		{ /**********found**********/

			m = m - c; 
			c++;
		}
		/**********found**********/
		if( m == 0 ) //error  m != 0
		{  
			printf("%d=", n);
			for (j=b; j < c-1; j++)
				printf( "%d+", j  );
			printf("%d\n", j);
			flag=1;
		}
	}
	if(flag == 0)
		printf("不能分解\n");
}
void main( )
{
	int  n;
// printf("请输入一个整数 :   ");  
	scanf("%d", &n);
	fun(n);
}