求1!+2!+.......+20!,用计算机C语言,享用双层循环,但是不知哪里不对,求大神指教!

#include<stdio.h>intmain(){doubles=0;inta=1,b=1,i=1;do{s=s+b;a=a+1;do{i=i+1;b=b*i;}wh... #include<stdio.h>
int main()
{
double s=0;
int a=1,b=1,i=1;
do
{
s=s+b;
a=a+1;
do
{
i=i+1;
b=b*i;
}
while(i<=a);
}
while(a<=20);
printf("%e\n",s);
return 0;
}

另一个用for语句编的也不对
#include<stdio.h>
int main()
{
double s=0;
int a,b=1,i;
for(a=1;a<=20;a++)
{
s=s+b;
for(i=1;i<=a;i++)
{
b=1;
b=b*i;
}
}
printf("%e\n",s);
return 0;
}
展开
 我来答
恋V天真
推荐于2016-10-03 · TA获得超过1676个赞
知道小有建树答主
回答量:426
采纳率:0%
帮助的人:259万
展开全部
我改的for循环的。题主你用了两个嵌套循环,首蠢判个for循环的a每增加1,第二个循环实际上带旦改循环了a次,所以你的行不通。你在第二个for循环内增加个printf函迟前数输出b的值就知道了。
#include<stdio.h>
int main()
{
double s=0;
int a=0,b=1,i;
for(i=1;i<=20;i++)//循环20次得出i!的值
{ b=b*i;
a++;
if(a<=20)//将20内i!相加
{
s=s+b;
}

}
printf("%e\n",s);
return 0;
}
jesry_wu
2015-05-09 · TA获得超过940个赞
知道小有建树答主
回答量:793
采纳率:72%
帮助的人:200万
展开全部
b=1; //这句错了
b=b*i;
追问
应该怎么改呢。求问。谢谢(^_^)
哦看到了。不好意思。谢谢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式