温柔杀814 2023-04-11 09:04 采纳率: 50%
浏览 30
已结题

C语言2023专接本试题

img


如何理解int f(int n)主函数开始主函数结束 return n的意义

  • 写回答

1条回答 默认 最新

  • a5156520 2023-04-11 09:09
    关注

    程序的重点应该在于主函数main对于f的调用,所以下面简单介绍下这个函数的执行过程(程序各语句的含义注释在在程序中);

    1、执行s=f(a)时,执行函数f,参数n=3, 静态变量 a赋值为1,然后a+=2=1+2=3 ,接着,n+=a+=2 = 3+3=6 ,所以第一次返回n,为6;

    2、执行s=s+f(a)时, 赋值语句右边 ,s为上一行的结果,为6 ,而f(a) 的调用让函数f再次执行,参数n的值依然为3,此次静态变量a已初始化一次,不再赋值,其值为上次执行的结果3, 接着执行a+=2=3+2=5,然后n+=a+=2=5+3=8,所以第二次返回n,结果为8,然后函数main()中,s=s+f(a)=6+8=14;

    3、所以最后打印结果,输出为14.

    参考链接:

    
    #include <stdio.h>  // printf函数的头文件 
    
    int f(int n);  // 声明函数f 
    
    int main(void){  // 程序主函数main 
        
        int a=3,s;  // 定义int型变量a和s,其中a赋值为3 
        s=f(a);  // 此处第一次调用f(a),返回6 ,s=6
        //printf("in main(), s=%d\n",s);
        s=s+f(a);  // 此处第二次调用f(a),返回8, s=s+f(a)= 6+8=14
        printf("%d\n",s);
        
    }
    
    int f(int n){
        
        // 第一次调用f(a), f中a=1 
        // 第二次调用f(a), a为静态变量,已在第一次调用变为3 ,静态变量赋值只执行一次 
        // https://blog.csdn.net/xiaohudeITmeng/article/details/52637405
        static int a=1; 
        //printf("in f(), a=%d\n",a); 
        
        // 第一次调用 a+=2-->a=1+2=3, n+=a+=2 = 3+3 =6; 
        // 第二次调用 a+=3--->a=3+2=5 ,n+=a+=2 = 3+5=8 
        n+=a+=2;
    //    printf("in f(), n=%d\n",n);
        
        // 第一次调用 返回6 
        // 第二次调用 返回8 
        return n;
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月19日
  • 已采纳回答 4月11日
  • 创建了问题 4月11日

悬赏问题

  • ¥15 ios可以实现ymodem-1k协议 1024字节传输吗?
  • ¥300 寻抓云闪付tn组成网页付款链接
  • ¥15 请问Ubuntu要怎么安装chrome呀?
  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)