10-黑马程序员------C 语言学习笔记--- C语言函数的声明和原型

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

三 函数的声明和原型

01 在函数调用之前,应该对所调用函数进行声明,指出该函数的返回值类型及形参的个数和类型。

函数声明的一般格式:

函数返回值类型 函数名(形参类型1 形参名1,………………);

*函数声明的位置,一种是在主调函数中对函数进行声明;另外一种是在所有函数的外部进行函数声明。

// 编程求1+2en+....+nen

#include <stdio.h>
double power(int p,int q);
double sigma(int m,int n);

int main()
{
    int x,y;
    double sum;

    printf("请输入两个函数:\n");
    scanf("%d%d",&x,&y);

    sum = sigma(x,y);
    printf("sum=%f\n",sum);
}

double power(int p,int q)
{
    int i;
    double product=1;
    for (i=1; i<=q; i++)
    {
        product = product*p;
        return product;
    }

}

double sigma(int m,int n)
{
    int i;
    double p, sum=0;
    for (i=1; i<m; i++)
    {
        p = power(m,n);
        sum = sum+p;
        return sum;
    }

}

四 函数的嵌套和递归

01 嵌套调用是指在一个函数的定义中出现对另一个函数的调用,即被调函数中又调用其他函数。

02 函数在调用过程中,又直接或间接的调用自身,则称函数的递归调用,这种函数也被称为递归函数

// 用递归方法求整数n的阶乘

#include <stdio.h>
double fact(int m);
int main()
{
    int x;
    double result;

    printf("请输入一个整数:\n");
    scanf("%d",&x);

    result = fact(x);

    if (result == -1)
    {
        printf("结果错误\n");
    }
    else
    {
        printf("%d!=%f\n",x,result);
    }

}

double fact(int m)
{
    if (m<0)
    {
        return -1;
    }
    else if(m==0||m==1)
    {
        return 1;
    }
    else
        return m*fact(m-1);
}
时间: 2024-10-09 05:58:45

10-黑马程序员------C 语言学习笔记--- C语言函数的声明和原型的相关文章

黑马程序员--java基础学习笔记5

黑马程序员--java基础学习笔记6 一.笔记内容概述: 数组-第二种定义格式.数组-常见操作-遍历-最值-选择排序-冒泡排序-排序位置置换代码提取.数组-排序的性能问题.数组-常见功能-查找-折半查找.进制转换-查表法-整合. 二.常用内容介绍: 1.数组初始化的三种方式: int[] arr = new int[3]; int[] arr = new int[]{1,2,3}; int[] arr = {1,2,3}; 2.查表法: 如果数据中出现了对应关系,而且对应关系的一方是有序的数字编

黑马程序员--java基础学习笔记4

一.笔记内容概述: 函数-定义.函数-格式.函数-细节-void.函数-细节-错误格式.函数-细节-定义思想错误.函数-两个明确.函数-内存加载过程.函数-重载.数组-概述.数组-定义.数组-内存空间划分.数组-栈内存-堆内存.数据常见问题. 二.常用内容介绍: 1.编写函数体时,两个明确: a.这个功能的结果是什么?(其实就是在明确函数的返回值类型). b.这个功能的实现过程中是否需要未知内容参与运算?(其实就是在明确参数列表). c.函数返回值类型与参数列表中的参数类型没有关系.(看下面)

黑马程序员--java基础学习笔记8

 一.笔记内容概述: 面向对象(数组工具对象建立-文档注释-单例设计模式&内存图解).继承.单继承和多重继承. 二.常用内容介绍: 1.继承的好处:提高了代码的复用性;让类与类之间产生了关系;开发最终的核心内容:不断地创建对象,使用对象,并维护着对象之间的关系. 2.什么时候使用继承? 当类与类之间存在着所属关系的时候,就定义继承;java不直接支持多继承,因为多个父类中如果有相同成员时,就会出现调用的不确定性;java中通过多实现implements的方式来间接体现多继承; 3.如何学习一

黑马程序员--Java基础学习笔记【序列化、多线程】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 序列化流与反序列化流 ObjectOutputStream 对象输出流 writeObject(Object obj) 可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中 ObjectInputStream对象输入流 readObject(Objectobj) 从源输入流中读取字节序列,反序列化为一个对象并返回 序列化:将数据分解成字节流,以便存储在文件中或在网络上传输

黑马程序员--Java基础学习笔记【正则表达式、常用API】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式 正则表达式的组成规则 java.util.regex.Pattern 常见组成规则 字符集合 [abc] a.b.c中任意一个字符 [^abc] 除了a.b.c的任意字符 [a-z] a-z中的任意一个字符 [a-zA-Z0-9] a-z.A-Z.0-9中任意一个字符 [a-z&&[^bc]] a-z中除了b和c以外的任意一个字符 预定义字符集 .任意一个字符 \d 任意一个

黑马程序员_ 基础学习笔记总结

------- android培训.java培训.期待与您交流! ---------- 1.java api System.getProperties()方法 该方法返回一个Properties对象,这个对象里存储的是java虚拟机启动时系统的基本资料,如操作系统类型(windows.linux..),系统使用语言,系统默认字符集等.当java开发跨平台代码时常常需要根据运行程序的操作系统类型做一些特定操作,就可以通过System.getProperties()返回的对象检查系统类型. 2.ja

黑马程序员--Java基础学习笔记【单例设计模式、网络编程、反射】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 设计模式分类: 创建模式:是对类的实例化过程的抽象化,又分为类创建模式和对象创建模式 类创建模式:工厂方法模式 对象-:简单工厂(静态工厂方法)模式.抽象工厂模式.单例模式.建造模式- 结构模式:描述如何将类或者对象结合在一起形成更大的结构 适配器模式.缺省模式.合成模式.装饰模式(包装模式).门面模式- 行为模式:对不同的对象之间划分责任和算法的抽象化 不变模式.策略模式.迭代子模式.命令模

黑马程序员--Java基础学习笔记【异常处理】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 异常 异常就是Java程序在运行过程中出现的导致程序无法正常运行的错误. Java 中异常继承体系,顶层的类 java.lang.Throwable java.lang.Exception 所有异常的超类 RuntimeException 运行时异常可以不处理 非RuntimeExceptioin非运行时异常必须捕获处理 java.lang.Error 所有错误的超类 异常处理机制 当程序中抛

黑马程序员--java基础学习笔记6

一.笔记内容概述: 面向对象(概述&举例).类与对象的之间的关系.类与对象体现&细节.对象的内存体现.成员变量和局部变量的区别.类类型参数.匿名对象.基本数据类型参数传递图解.引用数据类型参数传递图解.封装&代码示例.面向对象(封装&思想).二维数组&定义方式&内存图解&另一种定义方式&应用场景. 二.常用内容介绍: 1.面向对象的特征: a.封装:将具体动作封装起来,方便调用,提高了代码的复用性和安全性. b.继承:继承某个类后,可以直接调

黑马程序员--java基础学习笔记3

一.笔记内容概述: 比较运算符&逻辑运算符.位运算符.移位运算符.三元运算符.if语句.局部代码块.switch语句.while语句.do-while语句.for循环语句.循环结构的使用场景. 二.常用内容介绍: 1.>>>无符号右移,数据进行右移时,高位出现的空位,无论原来的最高位是什么,空位都用0补. 2.^运算符的特点: true ^ true = false; true ^ false = true; false ^ true = true; true ^ true =