寒假学习(6)(C语言6+模数电6)

首先是关于字符串的一些函数

cpp 复制代码
#include <stdio.h>
#include <string.h>

int main()
{
    //strspn函数怎么用
    //函数说明:
    //strspn函数返回字符串str1中第一个不在字符串str2中出现的字符下标。
    char *str = "123456789";
    char *str2 = "23";
    printf("%d\n", strspn(str, str2));

    return 0;
}
cpp 复制代码
#include <stdio.h>
#include <string.h>

int main()

{
    #if 0
    //strstr函数怎么用

    //函数说明:

    //strstr函数返回字符串str2在字符串str1中第一次出现的位置。

    char *str = "123456789";

    char *str2 = "23";

    printf("%s\n", strstr(str, str2));
    #endif

    //使用strstr函数统计字串的个数
    char *str = "123223323423";
    char *str2 = "23";
    int count = 0;
    char *p = str;

    while(p!=NULL)
    {
        p = strstr(p, str2);
        if(p!=NULL)
        {
            count++;
            p += strlen(str2);
        }
    }

    // while ((p = strstr(p, str2)) != NULL)
    // {
    //     count++;
    //     p += strlen(str2);
    // }
    printf("%d\n", count);

    return 0;

}
cpp 复制代码
#include <stdio.h>
#include <string.h>

int main()
{
    //strtok函数怎么用
    //函数说明:
    //strtok函数将字符串str1分割成由字符串str2分割的多个部分,并返回分割后的第一个部分。
    char str[] = "i am from china";  // 使用数组而非字符串字面量,允许修改
    char *delim = " ";  // 分隔符字符串

    char *result = strtok(str, delim);

    while (result != NULL)
    {  // 检查返回值
        printf("%s\n", result);
        result = strtok(NULL, delim);  // 继续分割
    }
    

    return 0;
}
cpp 复制代码
#include <stdio.h>
#include <string.h>
//实现strtok_r函数
char* strtok_r(char* str, const char* delim, char** saveptr)
{
 
    if (str == NULL)
    {
        str = *saveptr;
    }
    
    if (str == NULL)
    {
        return NULL;    
    }

    while(delim != NULL)
    {
        if (*delim == *str)
        {
            *str = '\0';
            *saveptr = str + 1;
            return str;
        }
        delim++;
    }
    
}

int main()
{
    char str[] = "i am from china";  // 使用数组而非字符串字面量,允许修改
    char *delim = " ";  // 分隔符字符串

    char *saveptr = NULL;

    char *result = strtok_r(str, delim, &saveptr);

    while (result != NULL)
    {  // 检查返回值
        printf("%s\n", result);
        result = strtok_r(NULL, delim ,&saveptr);  // 继续分割
    }

    return 0;
}
cpp 复制代码
#include  <stdio.h>

int add(int a, int b)

{

    return a + b;

}

int main()
{
    //函数指针的作用
    //函数指针是指向函数的指针,可以通过函数指针调用函数。
    int (*p)(int, int) = add;
    printf("%d\n", p(1, 2));
    //1.隐藏接口
    //2. 间接体现多态

    return 0;
}
cpp 复制代码
#include <stdio.h>
int add(int a, int b)
{
    return a + b;
}
int sub(int a, int b)
{
    return a - b;
}
int mul(int a, int b)
{
    return a * b;
}

int main()
{
    //函数指针数组怎么用
    //函数指针数组是指一个数组,数组中的每个元素都是一个函数指针。
    int (*p[3])(int, int) = {add, sub, mul};
    printf("%d\n", p[0](1, 2));
    printf("%d\n", p[1](1, 2));
    printf("%d\n", p[2](1, 2));

    return 0;

}
cpp 复制代码
#include <stdio.h>
//什么是可变参数

/**
 * 实现原理
 * 变量压栈是连续的 
 * C语言提供了三个宏定义
 * va_start(ap, n) 初始化ap
 * va_arg(ap, type) 获取参数
 * va_end(ap) 结束
 */
#include <stdarg.h>

int add(int n, ...)
//以一个参数n表示可变参数的个数

{
    int sum = 0;

    va_list ap;

    va_start(ap, n);

    for (int i = 0; i < n; i++)

    {

        sum += va_arg(ap, int);

    }

    va_end(ap);

    return sum;

}

int main()

{

    //可变参数怎么用

    //可变参数是指一个函数可以接收任意个数的参数。

    printf("%d\n", add(3, 1, 2, 3));

    return 0;
}

电容的6大核心作用

1滤波:稳定电压,滤除杂波

应用:在电源引脚旁边接一个100nf的电容,来滤波稳压

2 耦合:传递交流信号,隔离直流

3 降压 :利用容抗实现低成本降压

4 定时:与电阻配合实现时间控制

T = RC 在电路中电容由充电到充满到放电是可以通过控制R和C来控制时间的,

5 旁路 : 为高频信号提供捷径

原理 :电容通高频,对高频信号的容抗小

6 储能 : 短时间内释放大电流

电感

电感就是将导线绕制成线圈形状,当电流流过时,在线圈(电感)两端就会形成较强的磁场。由于电磁感应的作用,会对电流的变化起阻碍作用。

因此,电感对直流呈现很小的电阻(近似于短路),对交流呈现的阻抗较高,其阻值的大小与所通过交流信号的频率有关。

同一电感元件,通过交流电流的频率越高,呈现的阻值越大。

电感的两个重要特性

1、电感对直流呈现很小的电阻(近似于短路),对交流呈现的阻抗与信号频率成正比,交流信号频率越高,电感呈现的阻抗越大; 电感的电感量越大,对交流信号的阻抗越大。

2、电感具有阻止电流变化的特性,流过电感的电流不会发生突变,根据电感的特性,在电子产品中常作为滤波线圈、谐振线圈 等。

电感的功能及作用

1、电感的滤波功能

LC滤波电路

在电感滤波中,纹波系数与负载电阻成正比,另一方面,在电容滤波中,它与负载电阻成反比,因此如果将电感滤波与电容结合起来,纹波系数将几乎与负载滤波无关。它也被称为电感输入滤波电路、扼流输入滤波电路、RC滤波电路。

在该电路中,扼流圈与负载串联,为交流分量提供高电阻,并允许直流分量流过负载。负载两端的电容并联连接,过滤掉流过扼流圈的任何交流分量。通过这种方式,就可以得到整流,并通过负载提供平滑的直流电。

电感滤波电路

这种类型也叫做扼流过滤电路,由插在整流器和负载电阻R之间的电感组成。整流包含交流分量和直流分量。当输出通过电感时,为交流分量提供高电阻,而对直流分量没有电阻。因此整流输出的交流分量被阻断,只有直流分量到达负载。

2、电感的谐振功能

电感通常和电容并联构成LC谐振电路,主要用来阻止一定频率的信号干扰。

天线感应射频信号,经电容Ce耦合到由调谐线圈L1和可变电容CT组成的谐振电路,经L1和CT谐振电路的选频作用,把选出的广播节目载波信号通过L2耦合传送到高频放大器。

图中的黄色圈起来的部分为CT、L1构成的谐振电路进行调谐选台。

3、LC串联、并联谐振电路

LC串联谐振电路

将电感与电容串联,可构成串联谐振电路,如下图所示。

该电路可简单理解为与LC并联电路相反。LC串联电路对谐振频率信号的阻抗几乎为0,阻抗最小,可实现选频功能。电感和电容的参数值不同,可选择的频率也不同。

LC并联谐振电路

电感与电容并联能起到谐振作用,阻止谐振频率信号输入。电感对交流信号的阻抗随频率的升高而变大。电容的阻抗随频率的升高而变小。

电感和电容并联构成的LC并联谐振电路有一个固有谐振频率,即共谐频率。

在这个频率下,LC并联谐振电路呈现的阻抗最大。利用这种特性可以制成阻波电路,也可制成选频电路。

二极管

  1. 整流:

2 稳压::导通后两侧的压降大约0.7V

3 放止浪涌

防止尖锋电流

4 发光

三极管

开漏输出:在集电极加一个上拉电阻

线与

一 反馈电阻

电阻反馈 连接输出和输入

二 上拉和下拉电阻

用于数字电路

下拉电阻,去接地,让平时状态电位是低

上拉相反

就是提高电路的稳定性

有平时功耗

阻值小是强上拉,阻值大是若上拉

会有延迟问题,驱动能力要考虑,也可以用于阻抗的匹配

三 最大输出功率

电源内阻 = 负载电阻

四 0欧姆电阻

并非没有阻值

1 跨接电阻

2 预留电阻点位

3 调试电路,接万用表

4 单点接地,连接接地的两块区域

5 熔断电阻 50mΩ一下

五负电阻

U越大I越小

相关推荐
知识分享小能手2 小时前
Oracle 19c入门学习教程,从入门到精通,Oracle 用户管理与权限分配 —— 语法详解与实战案例(13)
数据库·学习·oracle
智者知已应修善业2 小时前
【输出方形点阵】2024-11-1
c语言·c++·经验分享·笔记·算法
●VON2 小时前
在 OpenHarmony 上打造智能 TodoList:基于 Flutter 的标签分类与动态过滤实践
学习·flutter·openharmony·布局·技术
hope_wisdom2 小时前
C/C++数据结构之用数组实现队列
c语言·数据结构·c++·队列
好奇龙猫2 小时前
【日语学习-日语知识点小记-日本語体系構造-JLPT-N2前期阶段-第一阶段(7):复习】
学习
近津薪荼2 小时前
优选算法——双指针专题2(模拟)
c++·学习·算法
Tina Tang2 小时前
Agentic AI学习笔记(5)
笔记·学习
呆瑜nuage2 小时前
【复习系列】数组和指针
c语言·面试
茉莉玫瑰花茶2 小时前
Spine 软件入门学习笔记:面向 2D 游戏动画 + C++ API 开发 - 1
学习·spine