永发信息网

请教,程序题改错,求1到10的阶乘和

答案:3  悬赏:0  手机版
解决时间 2021-02-21 15:25
  • 提问者网友:遮云壑
  • 2021-02-20 15:41
#include float fac(int n){int y=1; int i; for(i=1;i<=n;i++) y=y*i; return ;}main(){ int i; float t,s=0; float fac(int n); for(i=1;i<10;i++) s=fac(i); printf("%f\n",s);}
最佳答案
  • 五星知识达人网友:鸽屿
  • 2021-02-20 15:57
float fac中没有返回值,里面用int y存放阶乘,与函数返回类型不一致。
前面已经定义了函数,main里不能再出现这个函数的定义:。

float fac(int n);
每一个阶乘都要输出,printf语句也应该在循环里面。循环应该包括10.

#include <stdio.h>
int fac(int n)
{
int y=1;
int i;
for(i=1;i<=n;i++)
y=y*i;
return (y);
}
main()
{
int i;
int s;
for(i=1;i<=10;i++)
{s=fac(i);
printf("%d=%d\n",i,s);
}
}
全部回答
  • 1楼网友:走死在岁月里
  • 2021-02-20 18:46
楼上基本是正解. 不过,int 型和 double可以隐式转化,反正是1-10的阶乘,都是整数,直接unsigned long int保证就够了,无需用float型造成偶尔的误差,如果你最后不强转成int型,就很难讲了.
  • 2楼网友:詩光轨車
  • 2021-02-20 17:31
#include int main() { int i; int s=0; int fac(int n); for(i=1;i<=10;i++) s+=fac(i); printf("%d\n",s); return 0; } int fac(int n) { int y=1; int i; for(i=1 ;i<=n;i++) y=y*i; return y; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯