初识C语言——第二十四天

news2024/10/6 1:46:06

函数的基本使用和递归

1.函数是什么

2.库函数

3.自定义函数

4.函数参数

5.函数调用

6.函数的嵌套调用和链式访问

7.函数的声明和定义


函数是什么

C语言中函数的分类

1.库函数

2.自定义函数

库函数:

简单的总结,C语言常用的库函数都有:

#include <stdio.h>
#include <string.h>
int main()
{
    char arr1[20] = { 0 };
    char arr2[] = "hello bit";
    strcpy(arr1, arr2);

    printf("%s\n",arr1);//打印arr1这个字符串%s - 以字符串的格式打印
    return 0;
}

int main()
{
    char arr[] = "hello bit";

    memset(arr,'x', 5);

    printf("%s\n", arr);

    return 0;
}

自定义函数

//Swap1在被调用的时候,实参传给形参,其实形参是实参的一份临时拷贝
//改变形参,不能改变实参
void Swap1(int x,int y)//传值调用
{
    int z = 0;
    z = x;
    x = y;
    y = z;
}

void Swap2(int* pa, int* pb)//传址调用
{
    int z = 0;
    z = *pa;
    *pa = *pb;
    *pb = z;
}




int main()
{
    int a = 10;
    int b = 20;

    printf("交换前:a=%d b=%d\n", a, b);
    Swap2(&a, &b);

    printf("交换后:a=%d b=%d\n", a, b);

    return 0;
}

函数的调用

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//#include <stdlib.h>
//#include <time.h>
//
//void menu()//无返回值函数
//{
//    printf("**************************\n");
//    printf("********  1.play   *******\n");
//    printf("********  0.exit   *******\n");
//    printf("**************************\n");
//
//}
//
//void game()
//{
//
//    int guess;
//    int ret = rand() % 100 + 1;//产生1-100的随机数
//    while (1)
//    {
//        printf("请猜一个数字:<");
//        scanf("%d", &guess);
//        if (guess < ret)
//        {
//            printf("猜小了\n");
//        }
//        else if (guess > ret)
//        {
//            printf("猜大了\n");
//        }
//        else
//        {
//            printf("恭喜你,猜对了\n");
//            break;
//        }
//    }
//}


//#include <string.h>
//int main()
//{
//    char arr1[20] = { 0 };
//    char arr2[] = "hello bit";
//    strcpy(arr1, arr2);
//
//    printf("%s\n",arr1);//打印arr1这个字符串%s - 以字符串的格式打印
//    return 0;
//}
//
//int main()
//{
//    char arr[] = "hello bit";
//
//    memset(arr,'x', 5);
//
//    printf("%s\n", arr);
//
//    return 0;
//}

Swap1在被调用的时候,实参传给形参,其实形参是实参的一份临时拷贝
改变形参,不能改变实参
//void Swap1(int x,int y)//传值调用
//{
//    int z = 0;
//    z = x;
//    x = y;
//    y = z;
//}
//
//void Swap2(int* pa, int* pb)//传址调用
//{
//    int z = 0;
//    z = *pa;
//    *pa = *pb;
//    *pb = z;
//}
//
//
//
//
//int main()
//{
//    int a = 10;
//    int b = 20;
//
//    printf("交换前:a=%d b=%d\n", a, b);
//    Swap2(&a, &b);
//
//    printf("交换后:a=%d b=%d\n", a, b);
//
//    return 0;
//}

//#include <math.h>
//int is_prime(int x)
//{
//    //2-x-1
//    int j = 0;
//    for (j = 2; j <=sqrt(x); j++)
//    {
//        if (x % j == 0)
//        {
//            return 0;
//        }
//
//    }
//    
//        return 1;
//
//}
//
//
//int main()
//{
//    //100-200之间的素数
//    int i = 0;
//    int count = 0;
//    for (i = 100; i <= 200; i++)
//    {
//        //判断i是否为素数
//        if (is_prime(i) == 1)
//        {
//            printf("%d ", i);
//            count++;
//        }
//    }
//
//    printf("\ncount=%d ", count);
//    return 0;
//}

//int is_leap_year(int x)
//{
//    if ((x % 4 == 0 && x % 100 != 0) || (x % 400 == 0))
//    {
//        return 1;
//    }
//    else
//    return 0;
//}
//
//
//
//int main()
//{
//    int y = 0;
//    for (y = 1000; y <= 2000; y++)
//    {
//        if (is_leap_year(y) == 1)
//        {
//            printf("%d ", y);
//        }
//        
//    }
//
//    return 0;
//}

//int binary_search(int* a,int key1)

int binary_search(int arr1[],int key1,int n1)
{
    int left = 0;
    int right = n1 - 1;
    
    while (left <= right)
    {
        int mid = (left + right) / 2;
        if (arr1[mid] < key1)
        {
            left = mid + 1;
        }
        else if (arr1[mid] > key1)
        {
            right = mid - 1;
        }
        else
        {
            return mid;
        }

    }
    return -1;

}



int main()
{
    int arr[] = {1,2,3,4,5,6,7,8,9,10};
    int key = 7;
    int n = sizeof(arr) / sizeof(arr[0]);

    //找到了就返回找到的位置的下标
    //找不到就返回-1
    //数组arr传参,实际传递的不是数组本身
    //仅仅传过去了数组首元素的地址
    int ret=binary_search(arr,key,n);
    if (ret == -1)
    {
        printf("找不到\n");
    }
    else
    {
        printf("找到了,下标是: %d\n", ret);
    }


    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1698265.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于数据库和数据表的基础SQL

目录 一. 数据库的基础SQL 1. 创建数据库 2. 查看当前有哪些数据库 3. 选中数据库 4. 删除数据库 5. 小结 二. 数据表的基础SQL 1. 创建数据表 2. 查看当前数据库中有哪些表 3. 查看指定表的详细情况(查看表的结构) 4. 删除表 5. 小结 一. 数据库的基础SQL 1. 创建…

YOLOv10 | 手把手教你利用yolov10训练自己数据集(含环境搭建 + 参数解析 + 数据集查找 + 模型训练、推理、导出)

一、前言 本文内含YOLOv10网络结构图 各个创新模块手撕结构图 训练教程 推理教程 参数解析 环境搭建 数据集获取等一些有关YOLOv10的内容&#xff01; 目录 一、 前言 二、整体网络结构图 三、空间-通道分离下采样 3.1 SCDown介绍 3.2 C2fUIB介绍 3.3 PSA介绍 …

【QT八股文】系列之篇章3 | QT的多线程以及QThread与QObject

【QT八股文】系列之篇章3 | QT的多线程 前言4. 多线程为什么需要使用线程池线程池的基础知识python中创建线程池的方法使用threading库队列Queue来实现线程池使用threadpool模块&#xff0c;这是个python的第三方模块&#xff0c;支持python2和python3 QThread的定义QT多线程知…

【kubernetes】探索k8s集群中金丝雀发布后续 + 声明式资源管理yaml

目录 一、K8S常见的发布方式 1.1蓝绿发布 1.2灰度发布&#xff08;金丝雀发布&#xff09; 1.3滚动发布 二、金丝雀发布 三、声明式管理方法 3.1YAML 语法格式 3.1.1查看 api 资源版本标签 3.1.2查看资源简写 3.2YAML文件详解 3.2.1Deployment.yaml 3.2.2Pod.yaml …

数据结构(五)

数据结构&#xff08;五&#xff09; 常见的排序算法内部排序交换插入选择归并基数 外部排序基于归并的 常见的排序算法 内部排序 交换 冒泡&#xff1a;每一次运行总会将最小的或者最大的放到前面&#xff0c;如果需要交换&#xff0c;一直在交换 快速排序*&#xff1a;经过…

《C++ Primer Plus》第十一章复习题和编程练习

这里写目录标题 一、复习题二、编程练习 一、复习题 1. 使用成员函数为Stonewt类重载乘法运算符&#xff0c;该运算符将数据成员与double类型的值相乘。注意&#xff0c;当用英石和磅表示时&#xff0c;需要进位。也就是说&#xff0c;将10英石8磅乘以2等于21英石2磅。 答&am…

Python语言基础学习(下)

目录 一、顺序语句 二、条件语句 (1) if (2) if - else (3) if - elif - else 缩进和代码块 空语句 pass 三、循环语句 while 循环 for 循环 continue break 四、函数 创建函数 调用函数 函数返回 函数变量 函数递归 关键字参数 五、列表和元组 创建列表 …

创新实训2024.05.25日志:Web应用技术选型

我们的web应用使用python web的fastapi框架&#xff0c;通过uvicorn开启web服务。 1. refs 官网文档&#xff1a;FastAPI (tiangolo.com) github&#xff1a;https://github.com/tiangolo/fastapi 2. 环境配置 python:3.11 uvicorn:0.29.0 pip install "uvicorn[stan…

【启程Golang之旅】基本变量与类型讲解

欢迎来到Golang的世界&#xff01;在当今快节奏的软件开发领域&#xff0c;选择一种高效、简洁的编程语言至关重要。而在这方面&#xff0c;Golang&#xff08;又称Go&#xff09;无疑是一个备受瞩目的选择。在本文中&#xff0c;带领您探索Golang的世界&#xff0c;一步步地了…

嵌入式全栈开发学习笔记---C语言笔试复习大全25(实现学生管理系统)

目录 实现学生管理系统 第一步&#xff1a;结构体声明 第二步&#xff1a;重命名结构体 第三步&#xff1a;限定可以存储的最大学生数目 第四步&#xff1a;定义结构体指针数组和定义一个整型变量存放当前的人数 第五步&#xff1a;设计欢迎界面 第六步&#xff1a;设计…

【设计模式】JAVA Design Patterns——Command(事务模式)

&#x1f50d;目的 将请求封装为对象&#xff0c;从而使你可以将具有不同请求的客户端参数化&#xff0c;队列或记录请求&#xff0c;并且支持可撤销操作。 &#x1f50d;解释 真实世界例子 有一个巫师在地精上施放咒语。咒语在地精上一一执行。第一个咒语使地精缩小&#xff0…

从关键新闻和最新技术看AI行业发展(2024.5.6-5.19第二十三期) |【WeThinkIn老实人报】

写在前面 【WeThinkIn老实人报】旨在整理&挖掘AI行业的关键新闻和最新技术&#xff0c;同时Rocky会对这些关键信息进行解读&#xff0c;力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的优化建议&#xff0c;一起交流学习&#x1f4aa; 欢迎大家关注Rocky的公众号&…

C++之std::is_trivially_copyable(平凡可复制类型检测)

目录 1.C基础回顾 1.1.平凡类型 1.2.平凡可复制类型 1.3.标准布局类型 2.std::is_trivially_copyable 2.1.定义 2.2.使用 2.3.总结 1.C基础回顾 在C11中&#xff0c;平凡类型&#xff08;Trivial Type&#xff09;、平凡可复制类型&#xff08;TrivialCopyable&#x…

深入理解与防御跨站脚本攻击(XSS):从搭建实验环境到实战演练的全面教程

跨站脚本攻击&#xff08;XSS&#xff09;是一种常见的网络攻击手段&#xff0c;它允许攻击者在受害者的浏览器中执行恶意脚本。以下是一个XSS攻击的实操教程&#xff0c;包括搭建实验环境、编写测试程序代码、挖掘和攻击XSS漏洞的步骤。 搭建实验环境 1. 安装DVWA&#xff…

8.什么是HOOK

程序编译的本质是&#xff0c;首先计算机它只能看得懂机器码也就是只能看得懂数字&#xff0c;机器码学起来很费劲然后就创造了编译器这个东西&#xff0c;编译器它懂机器语言所以它可以跟机器沟通&#xff0c;而我们人可以跟编译器沟通&#xff0c;人跟编译器的语言就是各种各…

GBDT、XGBoost、LightGBM算法详解

文章目录 一、GBDT (Gradient Boosting Decision Tree) 梯度提升决策树1.1 回归树1.2 梯度提升树1.3 Shrinkage1.4 调参1.5 GBDT的适用范围1.6 优缺点 二、XGBoost (eXtreme Gradient Boosting)2.1 损失函数2.2 正则项2.3 打分函数计算2.4 分裂节点2.5 算法过程2.6 参数详解2.7…

不拍视频,不直播怎么在视频号卖货赚钱?开一个它就好了!

大家好&#xff0c;我是电商糖果 视频号这两年看着抖音卖货的热度越来越高&#xff0c;也想挤进电商圈。 于是它模仿抖音推出了自己的电商平台——视频号小店。 只要商家入驻视频号小店&#xff0c;就可以在视频号售卖商品。 具体怎么操作呢&#xff0c;需要拍视频&#xf…

leedcode【142】. 环形链表 II——Java解法

Problem: 142. 环形链表 II 思路解题方法复杂度Code性能 思路 1.用快慢指针找到相遇的点&#xff08;快指针一次走一步&#xff0c;慢指针一次走两步&#xff09; 2.一个指针从head开始&#xff0c;一个指针从相遇点开始&#xff0c;一次一步&#xff0c;相遇处即为环入口 解题…

Vmware 17安装 CentOS9

前言 1、提前下载好需要的CentOS9镜像&#xff0c;下载地址&#xff0c;这里下载的是x86_64 2、提前安装好vmware 17&#xff0c;下载地址 &#xff0c;需要登录才能下载 安装 1、创建新的虚拟机 2、在弹出的界面中选择对应的类型&#xff0c;我这里选择自定义&#xff0c;点…

P459 包装类Wrapper

包装类的分类 1&#xff09;针对八种基本数据类型相应的引用类型——包装类。 2&#xff09;有了类的特点&#xff0c;就可以调用类中的方法。 Boolean包装类 Character包装类 其余六种Number类型的包装类 包装类和基本数据类型的相互转换 public class Integer01 {publi…