C语言,用函数求阶乘

我只在主函数里有一个scanf是输入k,r的但是每次执行程序我都得输入三个数据,而且算的也不对,是哪里不对
#include<stdio.h>
long int fact(int n)
{
int i; int p;
for(i=1;i<=n;i++)
p=p*i;
return p;
}

int main()
{
int k,r;
printf("输入k,r:");
scanf("%d%d\n",&k,&r);
printf("r=%d,k=%d",k,r);
double s;
s=fact(k)/(fact(r)*fact(k-r));
printf("\nC(%d,%d)=%lf\n",k,r,s);
}

首先你的p没有初始值1,且是int型,所以返回的并不是long型,scanf里面不能加\n

#include<stdio.h>
long fact(int n)
{
int i; long p=1;
if(n>0) //这里添加判断以免出现小于1的现象 
for(i=1;i<=n;i++)
p=p*i;
else printf("程序出错!k必须大于r!"); 
return p;
}

int main()
{
int k,r;
printf("输入k,r:\n");
scanf("%d%d",&k,&r);
printf("r=%d,k=%d",k,r);
double s;
s=fact(k)/(fact(r)*fact(k-r));//若k-r<1,会出错 
printf("\nC(%d,%d)=%lf\n",k,r,s);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-06
p没有赋初值1 所以p=p*i 右边的p是没有值的,会出现语法错误

要输入3个数据是因为你把\n也加进scanf里了
不如把\n提出来在下一行printf("\n");

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网