C语言如何进⾏函数的嵌套调⽤?

一、问题

        C语⾔中不允许进⾏嵌套的函数定义,因此各函数之间是平⾏的,不存在上⼀级函数和下⼀级函数的问题。但是C语⾔允许在⼀个函数的定义中出现对另⼀个函数的调⽤,这就是函数嵌套调⽤。那么如何嵌套调⽤呢?

二、解答

        函数的嵌套调⽤,即在被调函数中又调⽤其他函数。

        下⾯通过⼀个分数相加的例⼦来介绍如何进⾏函数的城套调⽤。本例要实现的是,在程序运⾏时,输⼊4个数。前两个数分别是⼀个分数的分⼦和分母,后两个数也是⼀个分数的分⼦和分母。按 Enter 键以后,将这两个分数相加的计算结果显示出来。

        代码如下:

#include <stdio.h>
int gys(int x, int y)
{return y ? gys(y, x % y) : x;
}
int gbs(int x, int y)
{return x / gys(x, y) * y;
}
void yuefen(int fz, int fm)
{int s = gys(fz, fm);fz /= s;fm /= s;printf("the result is %d/%d\n", fz, fm);
}
void add(int a, int b, int c, int d)
{int u1, u2, v, fz1, fm1;v = gbs(b, d);u1 = v / b * a;u2 = v / d * c;fz1 = u1 + u2;fm1 = v;yuefen(fz1, fm1);
}
int main()
{int a, b, c, d;scanf("%d,%d,%d,%d", &a, &b, &c, &d);add(a, b, c, d);
}

        程序运⾏结果如下所示:

1,3,2,4
the result is 5/6

下⾯分析⼀下函数嵌套调⽤执⾏的过程:

  • 在执⾏ main( ) 函数的过程中,当遇到调⽤ add( ) 函数的操作语句时,流程转向 add( ) 函数;
  • 在执⾏ add( ) 函数时,当遇到调⽤ gbs( ) 函数的操作语句时,流程转向 gbs( ) 函数;
  • 在执⾏ gbs( ) 函数时, 当遇到调⽤ gys( ) 函数的操作语句时,流程转向 gys 函数;
  • 当完成 gys( ) 函数的全部操作后 返回到 gbs( ) 中;
  • 当完成 gbs( ) 剩下的全部操作后,返回到 add( ) 中执⾏剩余部分;直到 add( ) 函数结束,再返回到 main( ) 函数。

三、总结

        通过函数的嵌套调⽤,可以把⼀个复杂问题分解成多个简单的问题进⾏处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python学习16:python中的布尔类型和条件语句的学习

python中的布尔类型和条件语句的学习 1.布尔&#xff08;bool&#xff09;类型的定义&#xff1a; 布尔类型的字面量&#xff1a;True表示真&#xff08;是、肯定&#xff09; False表示假&#xff08;否、否定&#xff09; True本质上是一个数字记作1&#xff0c;False记作0 …

遥感数字图像处理的学习笔记

相关链接&#xff1a; 遥感数字图像处理实验教程&#xff08;韦玉春&#xff09;--部分实验问题回答 目录 1.什么是图像&#xff0c;什么是数字图像&#xff1f; 2.什么是遥感数字图像&#xff1f;模拟图像(照片)与遥感数字图像有什么区别&#xff1f; 3.什么是遥感数字图像…

构建操作可靠的数据流系统

文章目录 前言数据流动遇到的困难先从简单开始可靠性延迟丢失 性能性能损失性能——分层重试 可扩展性总结 前言 在流式架构中&#xff0c;任何对非功能性需求的漏洞都可能导致严重后果。如果数据工程师没有将可伸缩性、可靠性和可操作性等非功能性需求作为首要考虑因素来构建…

ChatGPT商业化平台一键部署(API管理,发卡收费,使用平台,支持GPT4)

接下来我就介绍一下如何利用开源平台搭建一个商业化的chatgpt网站 但是在此之前,请大家认真学习并遵守: OpenAI 的使用条款以及当地法律法规,不得用于非法用途。根据《生成式人工智能服务管理暂行办法》的要求,请勿对中国地区公众提供一切未经备案的生成式人工智能服务。一…

智慧公厕的全域感知、全网协同、全业务融合和全场景智慧赋能

公共厕所是城市的重要组成部分&#xff0c;为市民提供基本的生活服务。然而&#xff0c;传统的公厕管理模式存在诸多问题&#xff0c;如排队等候时间长、卫生状况差、空气质量差等&#xff0c;严重影响市民的出行和生活质量。为了解决这些问题&#xff0c;智慧公厕应运而生&…

Android9.0以后不允许HTTP访问的解决方案

背景 自 Android 9.0 起&#xff0c;默认禁止使用 HTTP 进行访问。当尝试使用 HTTP 链接时&#xff0c;将会收到以下错误信息&#xff1a; "Cleartext HTTP traffic to " host " not permitted"为了解决这一问题&#xff0c;下面介绍两种破解方法&…

【Python基础教程】4 . 算法的空间复杂度

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;python基础教程 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、…

最短路-Floyd Dijkstrea

Floyd算法 一种求解“多源最短路”问题的算法 在Floyd算法中&#xff0c;图一般用邻接矩阵存储&#xff0c;边权可正可负&#xff08;但不允许负环&#xff09;&#xff0c;利用动态规划的思想&#xff0c;逐步求解出任意两点之间的最短距离 int d[N][N],初始为无穷 d[i][j…

拌合楼管理软件开发(十三) 对接耀华XK3190-A9地磅(实战篇)

前言: 实战开整 目前而言对于整个拌合楼管理软件开发,因为公司对这个项目还处于讨论中,包括个人对其中的商业逻辑也存在一些质疑,都是在做一些技术上的储备.很早就写好了串口与地磅对接获取代码,也大概知道真个逻辑,这次刚好跟库区沟通,远程连接到磅房电脑,开始实操一下. 一、地…

【极简主义的深度学习】01 概览深度学习

要学习一个东西&#xff0c;需要先想清楚为什么而出发&#xff0c;以及怎么能达到自己想要的效果。当然也不能太执着于自己的目标&#xff0c;沿途的风景也是非常美丽的&#xff0c;如果路边的风景你觉得很美就停下来欣赏&#xff0c;机器学习也一样。对于我来说&#xff0c;是…

GFW不起作用

闲着折腾&#xff0c;刷openwrt到一个小米3G路由器后&#xff0c;GFW不起作用。后面发现是自己电脑设置了DNS&#xff0c;解析完IP后&#xff0c;在经过代代&#xff0c;IP不在GFW的清单里&#xff0c;所以转发控制就没有起作用。 结论 在经过代代前的所有节点&#xff0c;都…

使用Selenium的execute_script方法执行JavaScript代码

Selenium 的 execute_script 方法允许在浏览器上下文中执行 JavaScript 代码。这对于执行一些 WebDriver 本身不提供的操作非常有用&#xff0c;比如直接操作 DOM 元素、执行一些特定的 JavaScript 功能等。这个方法的一般语法是&#xff1a; driver.execute_script(script, *…

Java基础知识总结(30)

注解 获取注解中的值 /*** 自定义注解*/ Target({ElementType.TYPE,ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) public interface MyAnno { ​String value() default "admin"; // String value(); // int age(); } ​ //若注解属性没有给定属…

一.Git环境

1.Linux安装 sudo apt-get install git2.初次运行Git的配置 当我们安装好Git后&#xff0c;还需要在Git bash或者terminal进行一些相关设置&#xff0c;以下设置仅需设置一次即可。 git config --global user.name "Your Name" git config --global user.email &q…

【C++】反向迭代器

一、前言 在前面对vector等容器的学习中&#xff0c;我们学会了如何去使用正向迭代器并模拟实现 但是我们没有去模拟实现反向迭代器&#xff0c;这篇文章中我们就来了解反向迭代器的底层并实现它&#xff0c;把之前的坑给填上。 二、反向迭代器 反向迭代器的底层设计十分精妙…

python统计分析——灵敏度、特异度和ROC曲线

参考资料&#xff1a;python统计分析【托马斯】 1、灵敏度和特异度 灵敏度&#xff1a;也叫作效能。被检验正确识别出来的阳性结果&#xff08;病人中有疾病且检验结果是阳性的概率&#xff09;。 特异度&#xff1a;被检验正确识别出来的阴性结果&#xff08;病人健康且检验结…

大模型融合方法-DARE

LLM在SFT之后会产生大量的冗余参数(delta参数)&#xff0c;阿里团队提出DARE方法来消除delta参数&#xff0c;并将其合并到PRE模型中&#xff0c;从而实现多源模型能力的吸收。 DARE无需GPU重新训练&#xff0c;其思路非常简单&#xff0c;就跟dropout类似&#xff1a; m t ∼…

针对pycharm打开新项目需要重新下载tensorflow的问题解决

目录 一、前提 二、原因 三、解决办法 一、前提 下载包之前&#xff0c;已经打开了&#xff0c;某个项目。 比如&#xff1a;我先打开了下面这个项目&#xff1a; 然后在terminal使用pip命令下载&#xff1a; 如果是这种情况&#xff0c;你下载的这个包一般都只能用在这一个…

RGB到灰度图像的转换原理及例程

RGB到灰度图像的转换是一种常用的图像处理操作&#xff0c;其原理是根据人眼对不同颜色的敏感度&#xff0c;将彩色图像的红、绿、蓝三个通道的像素值按照一定权重进行加权平均&#xff0c;得到灰度图像的像素值。 在RGB图像中&#xff0c;每个像素点由红、绿、蓝三个分量组成…