我试图解决一个问题,但我收到了一些错误,我调试了但找不到有人能找到它。
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
long long int fact(int n)
{
long long int s=1,i;
if(n==0||n==1)
return(1);
else {
for(i=1;i<=n;i++) {
s=s*i;
}
// printf("%lld ",s);
return(s);
}
}
int comb(int m,int n)
{
float data;
data=fact(m+n)/(fact(m)*fact(n));
// printf("%d %d data:%d ",m,n,data);
return(data);
}
int main() {
float nu[100];
int t,i,n,a,b,w,j,k,l,c[100];
scanf("%d",&t);
for(j=0;j<t;j++) {
scanf("%d",&n);
for(i=0;i<=n;i++) {
a=i,b=n-i;
w=comb(a,b);
nu[i]=w;
c[i]=i;
}
for(k=0 ;k< i;k++) {
for(l=0;l<i-1;l++) {
if(nu[l]>nu[l+1]) {
int p,q;
p=nu[l];
nu[l]=nu[l+1];
nu[l+1]=p;
q=c[l];
c[l]=c[l+1];
c[l+1]=q;
}
if(nu[l]==nu[l+1]) {
int q;
if(c[l]>c[l+1]) {
q=c[l];
c[l]=c[l+1];
c[l+1]=q;
}
}
}
}
for(l=0 ; l < i ;l++) {
//printf("%d",nu[i]);
printf("%d ",c[l]);
printf("%d\n",n-c[l]);
}
}
return 0;
}
答案 0 :(得分:0)
comb()返回&#34; int&#34;类型,但你&#34;返回(数据);&#34;,这是&#34;浮动&#34;类型:
int comb(int m,int n)
{
float data;
data=fact(m+n)/(fact(m)*fact(n));
// printf("%d %d data:%d ",m,n,data);
return(data);
}