美文网首页
初识C语言五:函数,宏,递归

初识C语言五:函数,宏,递归

作者: 浆面条浆 | 来源:发表于2019-02-28 20:50 被阅读0次

五:函数

C程序由函数组成,所有的C程序都有且仅有一个main函数,并且main函数是每段代码的入口,程序从main函数出开始运作,当main函数结束时,程序也就结束了。

函数是指完成一个特定工作的独立程序模块。¨库函数:由C语言系统提供定义 ,函数类型通常指函数返回值的类型,如int main(),最后结尾一定为整数,double main(), 最后结尾为实型,也可写void main ,指的是没有返回值。如scanf()、printf()等函数    调用标准库函数时,在程序的最前面用#include命令包含相应的头文件。如#include <math.h>

#include <filename.h>     用于系统头文件

#include   "filename.h"    用于用户头文件

¨自定义函数:需要用户自己定义程序中一旦调用了某个函数,该函数就会完成特定的计算,然后返回到调用它的地方。函数经过运算,得到一个明确的运算结果,并需要回送该结果。



宏定义:
#define 宏名标识符  宏定义字符串

编译时,把程序中所有与宏名相同的字符串,用宏定义字符串替代

#define PI 3.14

#define arr_size  4

说明:

¨宏名一般用大写字母,以与变量名区别

¨宏定义不是C语句,后面不得跟分号

¨宏定义可以嵌套使用

  #define PI 3.14

  #define S 2*PI*PI


宏定义可以写在程序中任何位置,它的作用范围从定义书写处到文件尾。

可以通过“#undef”强制指定宏的结束范围


编译预处理是C语言编译程序的组成部分,它用于解释处理C语言源程序中的各种预处理指令。

文件包含(#include)和宏定义(#define)都是编译预处理指令

¨在形式上都以“#”开头,不属于C语言中真正的语句

¨增强了C语言的编程功能,改进C语言程序设计环境,提高编程效率


由于#define等编译预处理指令不是C语句,不能被编译程序翻译,需要在真正编译之前作一个预处理,解释完成编译预处理指令,从而把预处理指令转换成相应的C程序段,最终成为由纯粹C语句构成的程序,经编译最后得到目标代码。


递归:

以汉诺塔问题为例

递归方法的两个要点

(1)递归出口:一个盘子的解决方法;

(2)递归式子:如何把搬动64个盘子的问题简化成搬动63个盘子的问题。

把汉诺塔的递归解法归纳成三个步骤:

n-1个盘子从座A搬到座C

第n号盘子从座A搬到座B

n-1个盘子从座C搬到座B

算法:hanio(n个盘,A→B,C为过渡)   

{ if (n == 1)

       直接把盘子A→B

   else{

        hanio(n-1个盘,A→C,B为过渡)

      把第n号盘 A→B

       hanio(n-1个盘,C→B,A为过渡)

    }

}


实现:void hanio(int n,char a,char b,char c){

if(n==1){

printf("%c->%c\n",a,b);

}

else {

hanio(n-1,a,c,b);

printf("%c->%c\n",a,b);

hanio(n-1,c,b,a);

}

}

相关文章

  • 初识C语言五:函数,宏,递归

    五:函数 C程序由函数组成,所有的C程序都有且仅有一个main函数,并且main函数是每段代码的入口,程序从mai...

  • C语言基础教程之递归

    一文读懂C语言递归算法,C语言基础教程之递归 C语言递归 递归指的是在函数的定义中使用函数自身的方法。 从前有座山...

  • 递归函数

    1.递归函数概述及用法 一个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。C语言允许函数 的递归...

  • Python语言程序---代码复用与函数递归(二)

    Python语言程序---代码复用与函数递归(二) 函数递归 在函数定义中,调用函数自身的方式就是递归。 递归并不...

  • C语言-函数式宏

    函数式宏 函数式宏(function-like macro)较之对象式宏可以进行更复杂的代换。 函数和函数式宏 函...

  • 13_Python递归函数_全栈开发学习笔记

    1. 初识递归 什么是递归:在函数中调用自身函数最大递归深度默认是997/998 —— 是python从内存角度出...

  • 从递归到迭代

    从递归到迭代。学过 C 语言的都知道递归函数。运行起来类似: 递归运行代码时,必须运行到最后一次,才能依次返回。这...

  • 三、inline内联函数

    C语言中有宏函数的概念。宏函数的特点是内嵌到调用代码中去,避免了函数调用的开销。但是由于宏函数的处理发生在预处理阶...

  • [初学C++]C++的拓展--inline内联函数

    C语言中有宏函数的概念。宏函数的特点是内嵌到调用代码中去,避免了函数调用的开销。但是由于宏函数的处理发生在预处理阶...

  • C 初识递归

    一般定义(来自网络):在调用一个函数的过程中又出现直接或间接地调用该函数本身,就是函数的递调用。 为求解规模为N的...

网友评论

      本文标题:初识C语言五:函数,宏,递归

      本文链接:https://www.haomeiwen.com/subject/xpgnyqtx.html