关于循环嵌套定义变量存放的位置问题?

求1到100的阶乘相加(1!+2!+。。。100!)

C语言

相关代码

粘贴代码文本(请勿用截图)

#include<stdio.h>
int main()
{
    int i,j; 
    double item,sum;
    sum=0;
    for(i=1;i<=100;i++)
    {  
     
      item=1;
      for(j=1;j<=i;j++)    
         item=item*j;
     sum=sum+item;    
    }
    printf("%f",sum);
}

请教下,为什么item=1不能写在for循环的外(上)面,sum=0也不能放在for循环里面?
举例:

image.png

image.png

image.png

以上三个关于sum/item的位置输出的结果都是错的,只有下面的这个才是正确答案
image.png

阅读 1.4k
1 个回答

可以先了解下c的数据类型,还有循环语句的执行流程,这些基础学好了,你这个问题就很容易理解了

你这种情况可以先把循环的次数减少一些,debug运行跟一下,对了解代码执行顺序很好,还有可以笔算一下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进