zoukankan      html  css  js  c++  java
  • 第五章函数

    一、函数

    1、习题

    (1)设置一个函数计算输入的整数位数


    注:data=0时会自动结束循环

    (2)设计一个函数,检验一个数是否为质数

    define _CRT_SECURE_NO_DEPRECATE

    include <stdio.h>

    include <stdlib.h>

    int zhi(int data)//是质数返回1,否则返回0
    {
    if (data <= 1)
    {
    return data=0;
    }
    else if (data == 2 || data == 3)
    {
    return 1;
    }
    else
    {
    int flag = 1;
    for (int i = 2; i < data; i++)
    {
    if (data%i == 0)
    {
    flag = 0;
    break;
    }
    }
    return flag;
    }
    }
    void main()
    {
    int num;
    scanf("%d", &num);
    int flag = zhi(num);
    if (flag == 1)
    {
    printf("质数");
    }
    else
    {
    printf("不是质数");
    }
    system("pause");
    }

    (3)实现1+2+3+……+100的递归函数

    2、简单函数

    (1)自定义函数


    函数的别称是方法,函数也就是完成某一特定功能的模块首先自定义一个函数print ,实现的功能是打印一段话,并等待输入一个字符

    在main函数中调用print函数:

    运行结果:

    图解分析一下这段代码的运行过程:
    程序的执行从main函数开始,调用print函数,然后开始顺序执行print函数内部的程序,调用库函数printf和getchar,然后返回到main函数。

    函数的执行流程:

    ①函数的顺序调用

    定义三个函数print1、print2、print3,每个函数分别调用两次printf



    在main函数中顺序调用print1,print2,print3

    运行结果如下:
    顺序打印出print1,print2,print3 函数的内容

    程序的执行过程图:
    首先从入口函数main开始执行,然后顺序调用print1,print2,print3。最后执行getchar函数

    ②函数的嵌套调用

    在print2中的调用print1,在print3中调用print2



    在main函数中直接调用print3函数.

    运行结果:
    首先执行main函数,顺序执行main的函数体,调用print3函数,然后打印 33333---shang,调用print2,执行print2函数体,打印22222---shang,然后调用print1,执行print1函数体,打印11111---shang,11111---xia,然后返回到print2继续执行,打印出22222—xia,返回到print3继续执行打印出33333---xia。(函数调用必须等待当前函数调用完成以后,才执行下一步)

    嵌套函数的执行流程图:

    (2)带参数的函数

    ①无参函数


    Main函数中调用后,打印出printf函数中字符串的内容

    ②带参函数


    printadd的参数是两个int类型的参数
    例:在main中调用printadd(10,12);则打印出10+12=22

    ③带参函数的应用

    printf("calc"); //则是把calc字符串输出到屏幕上sprintf(str, "calc"); //则是把字符串calc字符串输出到str中。for /l %i in (1,1,5) do start notepad 则是在屏幕上 打开5个记事本。 (在DOS命令下输入: for /l %i in (1,1,5) do start notepad)

    在main函数中调用open.
    %i 等价于%d , 打印有符号十进制数据。
    %%i 打印 的时候,%%映射一个% ,打印一个%,需要两个%

    运行结果则是 打开5个记事本。

    (3)函数的返回值

    定义一个函数add ,返回值类型为int类型。

    在main函数中调用add,并且把调用函数的结果作为函数的参数(函数调用可以嵌套)

    运行结果:
    打印出13,14

    (4)函数的形参和实际参数

    ①在main函数中调用godata函数,则打印出n1、n2、n3、n4

    ②在main函数中调用godata函数,则打印出n1、n2

    ③在main函数中调用Windows.h头文件中的Sleep函数

    在main函数或者其他函数中,如果没有return,函数执行完成以后会自动退出

    (5)形参和实际参数类型

    函数调用之前,形式参数,也就是函数定义时()里的参数,值都不确定,不确定的值,不会分配内存,只有调用函数的时候,才会分配内存新建一个变量,接受实际参数的值,当函数调用结束的时候,形参占据的内存会被回收。
    实际参数是函数调用的时候,函数传递的确切值就是实际参数
    实际参数可以是常量,变量或者表达式。
    int num是一个形式参数,只有调用的时候,才分配内存。
    num的地址和实参的地址是不同的

    函数调用的时候形参分配内存。新建一个变量,存储传递过来的实际参数的值,等价于实际参数给形式参数赋值,赋值会自动进行数据类型转换,会自动完成数据类型转换。

    (6)局部变量

    局部变量,调用完成以后会被回收。
    局部变量是为块语句服务,块语句执行结束,局部变量就会被回收。
    函数内部定义的变量,还有函数的参数都是局部变量。

    (7)全局变量

    全局变量,不属于任何一个函数。可以被任何一个函数调用。
    创建全局变量比main函数还要早,全局变量会一直占内存,而局部变量,用完就扔。
    需要谁都可以访问的场合就需要全局变量。全局变量可以用于函数的通信

    (8)全局变量的用途以及好处好坏处

    (9)作用域

    (10)输出函数

    (11)输入函数

    (12)字符输入,输出

    (13)字符串输入,输出

    (14)函数定义与声明

  • 相关阅读:
    sikiA计划问题记录
    列表+泛型
    查看别人项目找代码的方法
    Unity3d 异常与解决方案集合(持续)
    实现继承+接口继承+虚方法+隐藏方法+this/base+抽象类+密封类/方法+修饰符
    定义类+类实例化+属性+构造函数+匿名类型var+堆与栈+GC回收机制+值类型与引用类型
    局部变量和成员变量的区别
    数组元素二分查找(折半查找)
    数组元素冒泡排序
    数组元素选择排序
  • 原文地址:https://www.cnblogs.com/liang-xp/p/10398061.html
Copyright © 2011-2022 走看看