#include<stdio.h>int A[100];long sep(int num,int low,int *p,FILE*fp);
void print(int *p,FILE*fp);main()
{
int num;
int low=1;
long count; if((fp=fopen("f:\\se.txt","a"))!=NULL) {
printf("please input a positive integer!\n");
do
scanf("%d",&num);
while(num<0);
fprintf(fp,"%d\n",num);
count=sep(num,low,A,fp);
printf("the total is %ld\n",count);
fclose(fp);
}
else printf("file error!");
}void print(int *p,FILE*fp)
{ int *pi;
for(pi=A;pi<=p;pi++)
fprintf(fp,"%d ",*pi);
fprintf(fp,"\n");
}long sep(int num,int low,int *p,FILE*fp)
{
static long c=1;
int i;
int up; up=(num-1)/2;
for(i=low;i<=up;i++)
{ *(p++)=i;
*p=num-i;
print(p,fp);
c++;
if((*p-1)/2>i)
sep(num-i,i+1,p,fp);
p--;
}
return c;
}
void print(int *p,FILE*fp);main()
{
int num;
int low=1;
long count; if((fp=fopen("f:\\se.txt","a"))!=NULL) {
printf("please input a positive integer!\n");
do
scanf("%d",&num);
while(num<0);
fprintf(fp,"%d\n",num);
count=sep(num,low,A,fp);
printf("the total is %ld\n",count);
fclose(fp);
}
else printf("file error!");
}void print(int *p,FILE*fp)
{ int *pi;
for(pi=A;pi<=p;pi++)
fprintf(fp,"%d ",*pi);
fprintf(fp,"\n");
}long sep(int num,int low,int *p,FILE*fp)
{
static long c=1;
int i;
int up; up=(num-1)/2;
for(i=low;i<=up;i++)
{ *(p++)=i;
*p=num-i;
print(p,fp);
c++;
if((*p-1)/2>i)
sep(num-i,i+1,p,fp);
p--;
}
return c;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货