题目是这个:输入正整数n, 在主函数中输出1!+2!+3!+...n!的值,要求将计算阶乘的运算写成函数JC(n)。

请大神看下怎么错了。。
#include<stdio.h>
int JC(int n)
{
int sum,m,i;
for(i=1;i<n+1;i++)
{
m*=i;
sum+=m;
return sum;
}
}
int main(void)
{
int JC();
int n,sum;
printf("please input n:");
scanf("%d",&n);
sum=JC();
printf("sum=%d",sum);
return 0;
}

第1个回答  2012-11-24
算法不对,算阶乘要用递归
#include<stdio.h>
#include<stdlib.h>
int JC(int n)
{
int value=0;
if ( n == 1 )
{
value = 1;
return value;
}
else
{
value = n * JC( n - 1 );
return value;
}
}
int main(void)
{
//int JC();
int n,i;
int sum = 0;
printf("please input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum+=JC(i);
}
printf("sum=%d",sum);
system("pause");
return 0;
}
第2个回答  2012-11-24
你要计算的是1!+2!+3!+...n!,
那么函数JC应该是这样的:
int JC(int n)
{
int m=1,i;
for(i=1;i<=n;i++)
m*=i;
return m;
}

主函数中JC()的调用应该是这样的:
int main(void)
{
int n,sum;
printf("please input n:");
scanf("%d",&n);
for(int i=1;i<=n;i++)
sum+=JC(i);
printf("sum=%d",sum);
return 0;
}本回答被提问者和网友采纳
第3个回答  2012-11-24
楼主您好
我觉得您的程序的意思是想输入一个数n,求1!+2!。。。+n!的和。

你的JC函数中m和sum这两个局部变量都没有赋初值所以是不行的,而且你的主函数中sum=JC这个语句中没有把实参传递给函数。
改成如下应该是正确的我试过了

#include<stdio.h>
int JC(int n)
{
int sum=0,m=1,i;
for(i=1;i<n+1;i++)
{
m*=i;
sum+=m;

}
return(sum);

}
int main(void)
{
int JC();
int n,sum;
printf("please input n:");
scanf("%d",&n);
sum=JC(n);
printf("sum=%d",sum);
return 0;
}
第4个回答  2012-11-24
sum=JC();改成下面的:

sum=JC(n);

写程序 ,在 主函数 中 输出1!+2!+3!+...+10!的值。要求 将 计算将...
f=f*i; \/* 实现阶乘 *\/ s=s+f; \/* 实现阶乘的相加 *\/ } \/* 注意:for循环的运用 *\/ printf("1!+2!+3!+……+10!=%d\\n",s);}

编写求阶乘的函数,在主函数中调用该函数,求1!+2!+3!+…+n!的和,并输 ...
include <stdio.h>int factorial(int n){int res = 1;for (int i = 2; i <= n; i++)res *= i;return res;}int main(){int n;scanf("%d", &n);int res = 0;for (int i = 1; i <= n; i++)res += factorial(i);printf("%d\\n", res);return 0;} ...

c语言。求1!+2!+3!+……+10!。要求编写求N的阶乘的函数
int main(){ int i,j,n;double sum=1,k=0;scanf("%d",&n);for(j=1;j<=n;j++){ sum=1;for(i=1;i<=j;i++)sum=sum*i;if(j!=n)printf("%d!+",j);else printf("%d!",j);k+=sum;} printf("=%lf",k);printf("\\n");return 0;} ...

使用C语言输入一个正整数n,输出1+2!+3!+...n!
int main(){ int i,sum=0,t,s,n;printf("请输入一个整数:");\/\/提示语句 scanf("%d",&n);\/\/输入n的值 for(i=1;i<=n;i++) \/\/第一次循环,就是数字1到n 的递增 { s=1;\/\/每次阶乘都要初始化s=1 for(t=1;t<=i;t++)\/\/循环里的循环 ,求每个i的阶乘 s*=t;\/\/ 目的...

2 编程计算1!+2!+3!+..的前n项的和,n从键盘输入,要求:采用递归函数方法...
factorial 函数来计算每一项的阶乘,并将它们累加起来。在 main 函数中,从键盘输入一个整数n,然后调用 factorialSum 函数计算前n项阶乘的和,并将结果打印输出。请注意,阶乘的计算可能会涉及到很大的数值,所以在实际应用中可能需要使用大数计算库来处理阶乘的计算。此示例中仅适用于较小的n值。

...在主函数中调用该函数求1!+2!+3!+…+10!。 要求:函数要定义在主函数...
int factorial(int a);\/\/声明计算阶乘函数 int main(){ int sum=0,n;cout<<"请输入n的值"<<endl;cin>>n;for(int i=1;i<=n;i++){ sum+=factorial(i);\/\/调用函数 } cout<<"n的阶乘为:"<<sum<<endl;return 0;} int factorial(int a){ int result=1;for(int i=1;i<=a...

c语言 求1!+2!+3!+...+n!的值.n由键盘输入
printf("%d\\n",sum);return 0;} 例如:include <stdio.h> \/* 通过递归计算一个数的回阶乘 *\/ int factorial(int num){ if (num==1)return 1;else return (num * factorial(num - 1));} int main(){ int i,n;long sum = 1;scanf("%d",&n);for (i = 2;i <= n...

计算1!+2!+3!...+(n-1)!+n!。设计求解该问题的C语言程序,阶乘的计算使 ...
在 main 函数中,我们读入了要求计算的数字 n。然后,使用一个循环从 1 到 n 逐个计算 1! 到 n! 的和。在每次循环中,调用 factorial 函数来计算阶乘,并将结果加到 sum 变量上。最后,输出 sum 变量的值,即 1!+2!+3!+...+(n-1)!+n! 的和。这个程序的输出示例如下:Please enter a...

给定一个整数N,输出1-N的阶乘和即1!+2!+3!+……+N!.输入要求 读入一个...
include<stdio.h> define N 50 void main(){ int i=1,t=1,s=0;while(i<=N){ t=t*i;s=s+t;i++;} printf("s=%d\\n",s);} 注意:while循环结构

1!+2!+3!+...+n! JAVA
这是我做的练习题,我的答案,结果经验证是对的。我这个是1!+2!+3!+。。。+30!的代码,相求到多少,就把里面的30改成多少,求N就改成n。计算结果:2.7441081847014212 乘以10的32次方,貌似是这么读

相似回答