路明非o 2022-04-25 15:48 采纳率: 100%
浏览 44
已结题

在C语言for循环里双循环中有一部分赋值不懂

#include<stdio.h>
int main()
{
int i,j,n;
double t,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=1; //每次进循环 t=1 那第一次进循环的时候 i=1 到第二循环的时候 表达式一 j=2 但表达式二 j又<=1 这怎么运行的
for(j=2;j<=i;j++)
t=t*j;
s=s+t;
}
printf("%f",s);
return 0;
}

  • 写回答

2条回答 默认 最新

  • 浪客 2022-04-25 16:12
    关注

    表达式一 j=2 但表达式二 j又<=1 ,循环条件不满足,不进行循环,直接进行后面的s+t运算。

    for(j=2;j<=i;j++)
    t=t*j;
    这个是算阶乘的,每个数独立计算,这样如果不把t初始化为1,那么后面数的阶乘是在前一个数基础上乘的,阶乘计算就不对了。

    这个循环可以简化为

    for(t=1,i=1;i<=n;i++)
    {
      t*=i;  //计算阶乘,
      s+=t;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    路明非o 2022-04-26 12:38

    谢谢 我懂了

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 5月3日
  • 已采纳回答 4月26日
  • 创建了问题 4月25日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部