以下程序运行后的输出结果是:int fun(int n){static int s=1;s*=n;return s;main(){int i,s=0;for(i=1;i<=4;i++){s+=f}}}

Posted 王睿丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以下程序运行后的输出结果是:int fun(int n){static int s=1;s*=n;return s;main(){int i,s=0;for(i=1;i<=4;i++){s+=f}}}相关的知识,希望对你有一定的参考价值。

1、题目

在这里插入图片描述
在这里插入图片描述

2、知识点

  • static的作用
  • 函数调用
  • for 循环

3、要做好的功课

一般情况下

在这里插入图片描述
那么得到当这个函数执行完,s这个变量就销毁(不存在)了
在这里插入图片描述
但是有了 static 修饰后的变量,他就有了一个新作用,看下图
在这里插入图片描述

4、开始解题

在这里插入图片描述

调用了 fun()方法(也叫函数)。那我们就开始带值去计算
第一次循环,s=0,i=1
s+=fun(i) => s+=fun(1) 执行这条代码,进入fun函数
在这里插入图片描述
n=1,s=1
s*=n的意思相当于 s = sn
s = 1
1 = 1
return 1;

再来看这行代码
在这里插入图片描述
因为s += fun(i),右边的fun(i)经过第一次计算完后,返回了1
所以main函数中,s += fun(i) => s = 0+1=1,s=1

第二次循环,s=1,i=2
进入fun函数计算,n=2,s=1(用上一次计算后的值)
s*=n => s=sn=12=2
return 2(返回2)

因为s += fun(i),右边的fun(i)经过第一次计算完后,返回了2
所以main函数中,s += fun(i) => 1+2 = 3,s = 3

第三次循环,s=3,i=3
进入fun函数计算,n=3,s=2(用上一次计算后的值)
s*=n => s=sn=23=6
return 6(返回6)

因为s += fun(i),右边的fun(i)经过第一次计算完后,返回了6
所以main函数中,s += fun(i) =>s= 3+6= 9,s = 9

第四次循环,s=9,i=4
进入fun函数计算,n=4,s=6(用上一次计算后的值)
s*=n => s=sn=46=24
return 24(返回24)
因为s += fun(i),右边的fun(i)经过第一次计算完后,返回了24
所以main函数中,s += fun(i) =>s= 9+24= 33,s = 33

以上是关于以下程序运行后的输出结果是:int fun(int n){static int s=1;s*=n;return s;main(){int i,s=0;for(i=1;i<=4;i++){s+=f}}}的主要内容,如果未能解决你的问题,请参考以下文章

如果关闭 fun() 后所有内存都被释放,那么输出如何打印 [重复]

在Dev c里运行成功并输出结果的 却在vs2010里不显示结果是为啥?

#include<stdio.h> main() int a[10]=1,2,3,4,5,6,7,8,9,10,*p=&a[3],*q=p+2; printf("%d\

有以下程序: main( ) int a[10]=1,2,3,4,5,6,7,8,9,10,*p=&a[3],*q=p-2; printf("%d\n",*p+*q);

编写一个c程序,运行时输出以下图形 ***** ***** *****

关于java中char类型和int类型相加结果的面试题