Bronyaer 2022-10-31 22:00 采纳率: 60%
浏览 31
已结题

关于静态变量、阶乘的和的问题

xdm,这次又两个问题
第一个
对于静态变量的定义与赋值
下面两种为什么第一种不行

 static int f;
    f=1;
static int f=1;

这个在用静态变量算阶乘的时候又明显的感觉

第二个

这个是用来算阶乘的和
为什么第11行不屏蔽的时候,从5!开始计算就不正常了
如果屏蔽掉的话就正常了

#include<stdio.h>
int main ()
{
 int factorial(int n);
 int n,sum;
 int i;
 sum=0;
 scanf("%d",&n);
 for(i=1;i<=n;i++)
 {
  printf("%d! = %d\n", i, factorial(i));
  sum+=factorial(i);
 }
 printf("%d\n",sum);
 return 0;
}

int factorial(int n)
{
 static int f=1;
 f=f*n;
 return f;
}

  • 写回答

2条回答 默认 最新

  • 莪是男神 2022-10-31 22:45
    关注
    1. 先回答你第一个问题,之所以静态变量的定义和初始化不能分开写是因为你把它定义在函数外面。
      函数外面的变量放在静态存储区里,它没有操作数栈那些函数特有的东西,所以 不能按顺序执行类似预编译语句、变量/结构体的定义之外的其他语句
    2. 再来回答你第二个问题,这里有问题因为你这里重复调用了函数 factorial,所以结果不正确,你只要在每次循环的时候调用一次就行

      img


      如果此回答有用的话,请采纳
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 修改了问题 10月31日
  • 创建了问题 10月31日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改