计算机二级问题,初学者,请多指教

#include<stdio.h>voidmain(){intf(int,int);intp(int,int);intq(int,int);intn,k;printf("... #include<stdio.h>
void main()
{
int f(int,int);
int p(int,int);
int q(int,int);
int n,k;
printf("please enter 2 numbers:\n");
scanf("%d%d",&n,&k);
printf("c=%d\n",f(p(n,k),q(n,k)));
}
f(int,int)
{
int a,b,c;
c=a/b;
}
p(int n,int k)
{
int i,j=1;
for (i=1;i<=n;i++)
j=j*i;
return (j);
}
q(int k,int n)
{
int x,y=1,g,h=1,b;
for (x=1;x<=k;x++)
y=y*x;
for (g=1;g<=(n-k);g++)
h=h*g;
b=y*h;
return (b);
}
这个程序为什么无论输入什么结果都是1???
原题是计算n!/(k!(n-k)!)的程序
展开
 我来答
提大刀砍鬼子
2012-08-11 · TA获得超过106个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:82.6万
展开全部


你把N和K搞混了,函数实现的时候是求了(n!) *(n-k)



但是你的代码写的太麻烦了,还有很多问题没考虑,比如输入控制(考虑输入的类型范围)

还有就是n-k数值的判断,除数为0的情况,再就是代码的排序和无关变量的定义。


其实我觉得直接写一个求阶乘的函数,然后调用就够了,不用写那么麻烦,希望有所帮助

兔子和小强
2012-08-11 · TA获得超过6950个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1727万
展开全部
int f(int a, int b)
{return a/b;} //返回a/b

int g(int n, int k)//而不是int k, int n

不过程序方法很不好
int main()
{
int n, k, i, p = 1;
scanf("%d%d", &n, &k);
//C(n,k) = n*(n-1)...(n-k+1) / k!
for(i=1; i<=k; i++)
p = p*(n+1-i)/i;
printf("C(%d,%d) = %d", n, k, p);
}
这样即可
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冷冥love
2012-08-11
知道答主
回答量:78
采纳率:0%
帮助的人:23.7万
展开全部
11111111
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式