C语言分解成连续和
1、打开Dev-C++

2、写好头函数。
#include<stdio.h>

3、写好主函数

4、fun函数功能是分解成连续和
void fun (int n)
{
//声明变量其中 flag是标识,标识n是否可被分解
// flag=0 表示不可分解 flag=1 表示可分解
//其中 变量b 为开始减的数字
// 变量c 为减数 即连续的数字
// 变量m 为差和被减数
// 即n-c的差
// 即m-c的被减数
int j,b,c,m,flag=0;
//b从1开始,一直到n的一半结束
for(b=1;b<=n/2; b++)
{
//首先将n的值赋给被减数m
m=n;
//将开始减的数字b赋值给减数c
c=b;
//循环
//只有当 m==0 (m-c=0) (说明分解成功)
// 当 m<c 减数小于被减数 (说明不可分解)
//时,跳出循环
while(m!=0 && m>=c)
{
//计算被减数m与减数c的差
//并赋值给被减数m
m=m-c;
//给减数加一
c++;
}
//判断m(差)是否为0 如果为0 表示n可以分解
if(m==0)
{
//进入if表示可以分解 则输出分解数字
printf("%d=",n);
//输出分解数字的连续数字
//b是当前开始减的数字
//循环控制在 j<c-1
//输出分解数字的连续数字
//该连续数字的范围是b(含)到c(含)
//for循环输出b到c-1
//即连续数的第一个到连续数的倒数第二个
for(j=b; j<c-1; j++)
printf("%d+",j);
//输出连续数的最后一个
printf("%d\n",j);
//注:为什么这里要分成两次输出呢
//因为目的是对齐格式
//输出类似 1+2+3+4 的这种格式
//给flag标识为1,表明该n可以被分解
flag=1;
}
}
//判断n是否已被分解
//若能被分解 flag为1
//不能被分解 flag默认为0
if(flag==0)
{
printf("不能分解");
}
}

5、总代码
#include<stdio.h>
void fun (int n)
{
//声明变量其中 flag是标识,标识n是否可被分解
// flag=0 表示不可分解 flag=1 表示可分解
//其中 变量b 为开始减的数字
// 变量c 为减数 即连续的数字
// 变量m 为差和被减数
// 即n-c的差
// 即m-c的被减数
int j,b,c,m,flag=0;
//b从1开始,一直到n的一半结束
for(b=1;b<=n/2; b++)
{
//首先将n的值赋给被减数m
m=n;
//将开始减的数字b赋值给减数c
c=b;
//循环
//只有当 m==0 (m-c=0) (说明分解成功)
// 当 m<c 减数小于被减数 (说明不可分解)
//时,跳出循环
while(m!=0 && m>=c)
{
//计算被减数m与减数c的差
//并赋值给被减数m
m=m-c;
//给减数加一
c++;
}
//判断m(差)是否为0 如果为0 表示n可以分解
if(m==0)
{
//进入if表示可以分解 则输出分解数字
printf("%d=",n);
//输出分解数字的连续数字
//b是当前开始减的数字
//循环控制在 j<c-1
//输出分解数字的连续数字
//该连续数字的范围是b(含)到c(含)
//for循环输出b到c-1
//即连续数的第一个到连续数的倒数第二个
for(j=b; j<c-1; j++)
printf("%d+",j);
//输出连续数的最后一个
printf("%d\n",j);
//注:为什么这里要分成两次输出呢
//因为目的是对齐格式
//输出类似 1+2+3+4 的这种格式
//给flag标识为1,表明该n可以被分解
flag=1;
}
}
//判断n是否已被分解
//若能被分解 flag为1
//不能被分解 flag默认为0
if(flag==0)
{
printf("不能分解");
}
}
void main()
{
int n;
printf("请输入一个整数:");
scanf("%d",&n);
fun(n);
}

6、结果如下图
