用C语言!!!计算s=(1!)+(1!+2!)+……+(1!+2!+……+n!)。n由用户输入,小于10。

(提示:函数h1(n)计算n的阶乘;函数h2(m)计算1!+2!+……+m!的累加运算;在主函数中调用h2()函数,h2()函数中调用h1()函数来实现累加。)... (提示:函数h1(n)计算n的阶乘;
函数h2(m)计算1!+2!+……+m!的累加运算;
在主函数中调用h2()函数,h2()函数中调用h1()函数来实现累加。)
展开
 我来答
刺友互
高粉答主

2019-07-10 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:72.1万
展开全部

1、在Eclipse中新建一个类,类名可以用中文。这里用“阶乘”做类名。

2、系统会自动生成以下代码。

3、由于a的值是未知的,也就是要使用者输入。所以要用到Scanner。所以在类名前加上import java.util.Scanner。

4、输入以下代码import java.util.Scanner;public class 阶乘 {public static void main(String[] args) {// TODO 自动生成的方法存根Scanner scanner=new Scanner(System.in)。

5、输入4调试;结果如下。

6、结果要求保留两位有效数字,所以要用到DecimalFormat。

7、得到最后的结果。

White_MouseYBZ
2017-07-11 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6612万
展开全部

从s=(1!)+(1!+2!)+……+(1!+2!+……+n!)看出,从第二项开始第n项的值是第n-1项的值+n!。所以可以编制一个求n!的函数fact,在主函数中用一个for循环,计数变量i从1步长为1增值到n,另设一变量t始终记录当前项的值,那么下一项的值就是t+fact(n+1)。用一个案值为0的变量s记录和,则s+=t+=fact(n)便是所求之结果。代码如下:

#include "stdio.h"
int fact(int n){//求n!
int m;
for(m=1;n>1;m*=n--);
return m;
}
int main(int argc,char *argv[]){
int n,s,i,t;
printf("Input n(int 0<n<10)...\nn=");
if(scanf("%d",&n)!=1 || n<1 || n>9){//输入n并限制1~9
printf("Input error, exit...\n");
return 0;
}
for(s=t=0,i=1;i<=n;s+=t+=fact(i++));//用t记录当前项的值,下一项只求一次阶乘
printf("The result is %d\n",s);
return 0;
}

运行样例如下:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
落月Prc
2011-07-04 · TA获得超过2789个赞
知道大有可为答主
回答量:2011
采纳率:100%
帮助的人:2433万
展开全部
int h1(int n)
{
int v=1;
for(int i=1;i<=n;i++)
v=n*v;
return v;
}//计算n!
int h2(int m)
{
int v=0;
for(int i=1;i<=m;i++)
v+=h1(i);
return v;
}//计算 (1!+2!+....+m!)
void main()
{
int n=getchar();//好久没写C了,这句类型怎么转换忘记了- -!
int v=0;
for(int i=1;i<=10;i++)
v+=h2(i);
printf("%d",v);
}//输出结果。
更多追问追答
追问
那正确吗?
追答
=我试下....
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式