zoukankan      html  css  js  c++  java
  • C语言入门:函数的概要

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    #include "windows.h"//头文件 仓库
    void gbtc()//函数首 ---》 函数类型 函数名 ()
    {
    //被调函数。
    //函数体
    printf("1");
    Sleep(5000);//S必须大写
    printf("2");
    Sleep(5000);
    printf("3");
    Sleep(5000);
    printf("4");
    }
    void main()//主调函数
    {
    //函数

    //什么是函数 具有特定功能的模块。
    //函数的组成部分。由两部分来组成: 函数首 和 函数体。
    //使用函数 就是 调用 函数 主调函数 调 被调函数
    gbtc();//调用
    }

    //----------------------------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h" //值传递(普通变量) 地址传递 (数组,指针)

    //函数的组成部分
    //函数首
    //函数体
    //什么是参数 参数就就是函数之间 交流的数据 void gbtc(形式参数)
    //什么是实参 是在函数调用的时 函数后括号内的内容(参数)
    //什么是形参 是在函数定义的时 函数后括号内的内容(参数)
    //参数的传递方向 必须是实参 传递给形参。
    //形参接收的时候,会和实参的 顺序 ,个数,类型 相匹配。
    void gbtc(int a,int b,char w) //100为整数类型的,
    //形参的存储空间只有在用的时候(接收的时候) 才有内存的占有。
    //一旦不用,立即释放
    {
    printf("接收的a的值为:%d,接收的b的值为:%d,接收的w的值为:%c ",a,b,w);
    }
    void main()
    {
    int a,b;
    char w;
    //从有无参数的角度 分为 有参函数 和无参函数
    //主调函数 调 被调函数的时候 传递的数据 叫实参
    // main() 调 gbtc(100); 100
    printf("请输入a和b的值:");
    scanf("%d%d",&a,&b);//原样输入
    getchar();//接收回车
    printf("请输入字符w的值:");
    scanf("%c",&w);
    gbtc(a,b,w);//a,b,w为实参
    printf("调用之后的a的值为:%d,调用之后的b的值为:%d,调用之后的w的值为:%c ",a,b,w);
    //实参的存储空间 一直都存在
    } //值传递的时候 实参的值会赋值一份给形参,也就是 实参的值可以改变形参的值
    //形参的值并不能改变 实参的值,因为 形参在值传递的时候 不用,立即释放。
    //实参 和形参 并没有共用一块空间。

    //----------------------------------------------------------------------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void jsq(int a,int b,int c,char fh)//计算器函数
    {
    printf("根据传递过来四则运算符号:");
    switch(fh)//表达式
    {
    //case 后面 只能是整数 和字符 不能是小数
    case '+':printf("%d+%d+%d=%d",a,b,c,a+b+c);
    break;
    case '-':printf("%d-%d-%d=%d",a,b,c,a-b-c);
    break;
    case '*':printf("%d*%d*%d=%d",a,b,c,a*b*c);
    break;
    case '/':
    //按a和b相除 a/b/c b不能为0 c也不能为0
    if(b!=0 && c!=0)
    {
    printf("%d/%d/%d=%d",a,b,c,a/b/c);
    }
    else
    {
    printf("分母不能为0 ");
    }
    break;
    }

    }

    void main()//多敲 多看 多练 多想
    {
    //实现一个功能:输入a,b,c三个数的值,然后在子函数(自定义函数)中,进行四则运算(+,-,*,/)。
    //想当 于 简单计算器。
    //需要自己设计 页面。
    int a,b,c;//三个数
    char fh;//符号
    printf("请输入a,b,c的值:");
    scanf("%d%d%d",&a,&b,&c);
    getchar();//接收回车
    printf("请输入四则运算的符号:");
    scanf("%c",&fh);
    jsq(a,b,c,fh);//先调用函数
    }

    //----------------------------------------------------------------------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    //传递到子函数 我让这个数组 所有元素*2
    void dou(int a[5],int i)//1.重新定义为数组。 2.指针来接收。
    {
    printf("所有元素都*2: ");
    for(i=0;i<5;i++)
    {
    a[i]=a[i]*2;
    }
    printf("打印传递之后的数组数据(*2): ");
    for(i=0;i<5;i++)
    {
    printf("%d ",a[i]);
    }
    printf(" ");
    }
    void main()
    {
    //值传递 实参传递形参 单向传递 实参改变形参,形参不可以改变实参 实参和形参并不共用同一空间。
    //地址传递 (数组 指针 )
    //实参传递形参 单向传递 实参可以改变形参,形参改变 也可以 改变实参的值。 实参和形参 共用同一空间。
    //数组 数组名是数组的首地址。
    int a[5]={1,2,3,4,5};
    int i;
    // a=&a[0];代表的是 首地址。 a[0]为第一个元素 ,那么 第一个元素的地址 就为 首地址。
    printf("数组中原数据为: ");
    for(i=0;i<5;i++)
    {
    printf("%d ",a[i]);
    }
    printf(" ");
    printf("开始传递数据: ");//需要调用函数 并且传递参数
    dou(a,5);//传递 参数为什么? 只需要传递数组名 , 因为 通过 数组名 可以找到 数组 还需要传递长度
    printf("调用之后 main中原数据为: ");
    for(i=0;i<5;i++)
    {
    printf("%d ",a[i]);
    }
    }

    //----------------------------------------------------------------------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    //函数的类型 void(空类型 也代表无返回值) int,char,double,float 代表 返回值的类型。
    //函数的类型 省略的时候 为int
    int fun(int a,int b)
    {
    return a+b;//返回到调用的位置。 //出口。 结束


    }
    void main()
    {
    int k;
    //从返回值角度 有返回值函数 无返回值函数
    //在函数中 有return 就是 有返回值函数。
    k= fun(1,2);//
    printf("返回的结果为:%d",k);
    }

    //----------------------------------------------------------------------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    //利用函数处理 一批数,奇数返回1, 偶数返回2. 通过返回的结果 在主函数 输出 “奇数” “偶数”
    int fun(int num)
    {
    if(num%2==0)//偶数
    {
    return 2;//返回到调用的位置上
    }
    else //奇数
    {
    return 1;
    }
    }
    void main()
    {
    int num,k;
    for(;;)
    {
    printf("请输入一个数字");
    scanf("%d",&num);
    k=fun(num);

    if(k==2)
    {
    printf("偶数 ");
    }
    else
    {
    printf("奇数 ");
    }
    }
    }

    //------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    int fun(int a,int b)
    {

    return a+b;
    }
    void main()
    {
    int k;
    k=fun(1,2);
    printf("%d",k);
    }

    //-----------------------------------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    //递归
    //什么是递归 递归的概念 程序/(函数)自身调用自身的一种编程技巧
    void fun()
    {
    printf("上课睡觉的同学,站起来! ");
    fun();//函数自己调用自己 称为 递归
    }
    void main()
    {
    fun();//第一次调用
    }

    //------------------------------------------------------------------------------------------------

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    //定义函数
    int fun(int n)
    {
    //2.递归的方式。

    if(n==1)
    {
    return 1;//1的阶乘 为1
    }
    else if(n==0)
    {
    return 0;//0的阶乘为 0
    }
    else
    {
    // 1*2*3*4*5 5*4*3*2*1
    return n*fun(n-1);
    // 5* 4 * 3 * 2 * 1
    // 5*fun(5-1); 5*4*3*2*1
    // fun(4)= 4*fun(4-1); 4*3*2*1
    // fun(3)=3*fun(3-1); 3*2*1
    // fun(2)=2*fun(2-1); 2*1
    // fun(1) 1
    }
    }
    void main()
    {
    //递归阶乘 1-5 1-n

    int i,n,k;//循环变量
    int cj=1;
    printf("请输入一个n:");
    scanf("%d",&n);
    //1.非递归的方式!
    for(i=1;i<=n;i++)
    {
    cj=cj*i;
    }
    printf("非递归的方式的阶乘为:%d ",cj);

    k= fun(n); // 5*4*3*2*1
    printf("递归的方式的阶乘为:%d ",k);
    }

  • 相关阅读:
    lvs+keeplived笔录
    python之购物车的编写(熬夜撸代码中。。。)
    关于三级菜单程序的编写
    .split()函数使用方法
    range()函数的使用
    关于python如何简单跳出多层循环
    Kubernetes部署通用手册 (支持版本1.19,1.18,1.17,1.16)
    八个开源的 Spring Boot 前后端分离项目,一定要收藏!
    招聘简章-2020年10月25日19:31:39
    小公司老板的日常管理
  • 原文地址:https://www.cnblogs.com/ZJ-CN/p/12266377.html
Copyright © 2011-2022 走看看