我编的求阶乘程序,为什么老是说有错,请高手帮忙改一下错!#include<stdio.h>float g(int n) { int i=1; float y=1; if (n==0) y=1;
else for(i=1;i<=n;i++)y*=i; return(y); }main() { while (1) { int a;
printf ("please input a number: n=");
scanf ("%d",&a);
if (a<0) printf("error!");
else printf ("%d!=%f\\n",a,g(a));
printf("Press any key to continue...");
} }
1.求阶乘的g函数输入是个整数 输出肯定也是个整数啦~然后函数体里面可以直接用递归来算了,不用再做个循环了,那样写太麻烦了啊,代码不好看。2.主函数里面的while循环不知道是干什么的,我去掉了。输出结果的地方对应函数返回类型改了下。就没别的问题了~#include<stdio.h> int g(int n) { if (n==0) return 1; else return n*g(n-1); } main() { int a; printf ("please input a number: n="); scanf ("%d",&a); if (a<0) printf("error!"); else printf ("%d! = %d\\n",a,g(a)); printf("Press any key to continue..."); }
提问者对答案的评价: |