09-黑马程序员------C 语言学习笔记--- C语言函数

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

一 函数定义

01 函数分为库函数和自定义函数两种

函数一般格式:

函数返回值类型 函数名(数据类型 参数1, 数据类型 参数2,……..)

{

函数体;

}

*函数若不需要返回值类型,则用void表示

*函数的标志是括号,不管有没有参数,括号都要存在

*定义函数时,右括号后不应加分号

*不要在函数列表中再次定义参数列表中出现的变量

*多个参数之间用逗号隔开,即使数据类型相同,也不能同时声明,即数据类型和参数必须成对出现

// 求表达式k!/(M!+N!)的值

#include <stdio.h>
double fact(int f)
{
    int i;
    double r = 1;
    for (i=1; i<f;i++)
    {
        r = r*i;

        return r;
    }
}
int main()
{
    int k,m,n;
    double f1,f2,f3;

    printf("请输入三个整数:\n");
    scanf("%d%d%d",&k,&m,&n);

    f1 = fact(k);
    f2 = fact(m);
    f3 = fact(n);
    printf("k!/(M!+N!)=%f\n",f1/(f2+f3));

}

二 函数调用

01函数调用的一般形式:

函数名(实际参数表) 如果被调用函数没有参数,则“实际参数表可以为空”

02 函数间的参数传递

C语言的规则很简单,C语言函数的所有参数均以“传值调用”方式进行传递,且参数传递方向永远是从实参传递到形参。

03 函数的返回值

return 表达式;

return语句的功能是立即结束当前函数的执行,并返回主调函数中。

// 输入两个整数,计算其平均值,要求用函数实现平均值的计算

#include <stdio.h>
double average(int x,int y);
int main()
{
    int a,b;
    double result;
    printf("请输入两个整数:\n");
    scanf("%d%d",&a,&b);

    result = average(a,b);
    printf("%d和%d的平均值为%f\n",a,b,result);

    return 0;
}

double average(int x,int y)
{
    double ave;
    ave = (x+y)/2;
    return ave;
}
时间: 2024-10-03 13:23:19

09-黑马程序员------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基础学习笔记【正则表达式、常用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 任意一个

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

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

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

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

黑马程序员--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 =