Bronyaer 2022-10-31 22:00 采纳率: 70.6%
浏览 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日