首页 > 其他 > 详细

单元加

时间:2016-02-13 21:51:59      阅读:304      评论:0      收藏:0      [点我收藏+]

 

已知输入整数14时,运行结果如下,试根据规律编写程序

技术分享

#include <stdio.h>
int t;//标记i的重复次数
//void divide(int i,int number)
//{
//int k,n=number;
//while(n>i)
//{
//  n=n-i;
//  if((n+i)!=number)
//    {
//      for(k=0;number-k>n;k=k+i)
//          printf("%d+",i);
//      printf("%d\n",n);
//  }
//  else
//    printf("%d+%d\n",i,n);
//}
//}
void divide(int i,int n)
{
    printf("%d",i);
    for(int j=0;j<t;j++)
    {
        printf("+%d",i);    
    }
    printf("+%d\n",n-i);
    if(n-i <= i)
    {
        return;
    }
    else{
        t ++;
        divide(i,n-i);    
    }
}
int main()
{
    int n;
    printf("Input:");
    scanf("%d",&n);
    for(int i=1;i<=n/2;i++)
    {
        t = 0;
        divide(i,n);
    }
    return 0;
}

已知输入整数14时,运行结果如下,试根据规律编写程序

技术分享

//递归
#include <stdio.h>
int num(int a,int i,int n)
{
    int j=0,k;
    if(a<=0)
        return a;
    k=num(a-i,i,n+i)+i;
    for(j=i;j<=n;j=j+i)
        printf("%d+",i);
    printf("%d\n",k);
    return k;
}
int main()
{
    int number,n;
    printf("input:");
    scanf("%d",&number);
    for(n=1;n<=number/2;n++)
        num(number-n,n,n);
    return 0;
}
//非递归
#include <stdio.h>
void divide(int i,int num,int n)
{
    int t,flag = 0;//t:标记最尾的一个数
    if(n % i)
    {
        t = n % i;
        flag = 1;
    }
    else
        t = i;
    while(t < n)
    {
        for(int k = 0 ; k < num - 1; k ++)
        {
            printf("%d+",i);
        }
        if(flag)//不能整除
        {
            printf("%d+%d\n",i,t);
        }
        else{
            printf("%d\n",t);
        }
        t += i;
        num --;
    }
}
int main()
{
    int n;
    printf("Input:");
    scanf("%d",&n);
    for(int i=1;i<=n/2;i++)
        divide(i,n/i,n);
    return 0;
}

 

单元加

原文:http://www.cnblogs.com/520xiuge/p/5188307.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!