路明非o 2022-04-25 23: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-26 00: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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月4日
  • 已采纳回答 4月26日
  • 创建了问题 4月25日

悬赏问题

  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿
  • ¥15 Matlab在app上输入带有矩阵形式的初始条件发生错误
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址