Linux C语言基础 day7

目录

思维导图:

学习目标:

学习内容:

1. 数组

1.1 对数组元素的常规操作

1.1.1 逆序

1.1.2 挑选数据

1.1.3 排序

1. 冒泡排序

2. 选择排序

2. 二维数组

2.1 二维数组的概念

2.1.1. 定义格式

2.2.2.初始化

2.2 二维数组的相关操作

2.2.1.  输入输出

2.2.2 求和、均值、最值

2.2.3 转置

3. 字符数组

3.1 一维字符数组

3.1.1. 定义格式

3.1.2. 字符数组初始化

1.单字符处理字符数组

2. 字符串的形式初始化

3.2 strlen

3.3 strcpy

3.4 strcat

3.5 stcmp

例如:

课内练习:

课外作业:


思维导图:

学习目标:

  • 一周掌握C基础知识

学习内容:

1. 数组

1.1 对数组元素的常规操作

1.1.1 逆序

        所谓逆序,就是将数据进行首尾交换,例如,数组原型:1,2,3,4,5。逆序后的数组为:5,4,3,2,1。

总结套路:

        1、需要进行首尾交换的次数是 MAX/2 (MAX表示数组的长度)

        2、交换双方:arr[i] arr[MAX-1-i]

        3、交换三部曲

例如:

//将数组进行逆序

for(int i=0; i<MAX/2; i++) //只需遍历前一半数组

{ //交换三部曲

        int temp = score[i];

        score[i] = score[MAX-1-i];

        score[MAX-1-i] = temp;

} //输出逆序后的数组

printf("逆序后的结果为:");

for(int i=0; i<MAX; i++) {

        printf("%d\t", score[i]);

}

putchar(10);

1.1.2 挑选数据

 int k=0;
    for(i=0;i<MAX;i++)
    {
        if(score[i]>=90){
                arr[k]=score[i];
                k++;
        }
    }
    for(i=0;i<MAX;i++)
{
    printf("%d\t",arr[i]);
}

1.1.3 排序

1. 冒泡排序

        将较大或者较小的数据,经由交换后,慢慢“浮到”数组顶端,如同水中的气泡一样,故名冒泡排序 原理:不断进行相邻的两个数据进行比较,如果满足条件,则进行交换,每一轮都会将一个最值数据"浮到"对应位置 对于每一轮重复上述操作,直到所有数据排序结束

 例如:

for(i=0;i< MAX-1;i++){
        for(int j=0;j<MAX-i-1;j++){
            if(score[j]>score[j+1]){
                int temp=score[j];
                score[j]=score[j+1];
                score[j+1]=temp;
            }
        }
    }printf("排序后的结果为:");
    for(i=0;i<MAX;i++)
{
    printf("%d\t",score[i]);
}
 

2. 选择排序

        将要排序的序列分为已排序序列和待排序序列 不断从待排序序列中找到最值,放入已排序序列的最后位置,随着待排序序列不断减少,已排序序列不断增长 直到待排序序列没有元素,排序结束。

例如:

int maxj=0;
for(i=0;i<MAX;i++)
{   
    maxj=i;
    for(int j=i+1;j<MAX;j++){
        if(score[maxj] < score[j]){
            maxj=j;
        }
    }
    if(maxj != i){
        int temp=score[i];
                score[i]=score[maxj];
                score[maxj]=temp;
    }
}
printf("排序后的结果为:");
    for(i=0;i<MAX;i++)
{
    printf("%d\t",score[i]);
}

2. 二维数组

2.1 二维数组的概念

2.1.1. 定义格式

数据类型 数组名[常量1][常量2];

2.2.2.初始化

1、按行初始化:定义数组时,每一个一维数组的值使用一个花括号括起来 int arr[3][4] = { {1,2,3,4}, {5,6,7,8}, {9,9,9,9} };

2、按行部分初始化:每个一维数组中,可以不填满,没有初始化的部分用0补齐 int arr[3][4] = { {1,2}, {8}}; //1,2,0,0 8,0,0,0 0 ,0, 0, 0

3、按数组排列初始化:数组存储数据时,默认是按顺序存储,第一行存储满了,存第二行 int arr[3][4] = { 1,2,3,4,5,6,7,8, 9}; //1,2,3,4 5,6,7,8, 9,0,0,0

4、特殊初始化:定义二维数组并初始化时,可以不指定第一维的大小,由初始化总个数除以列数向上取整,得到行数 int arr[][4] = { 1,2,3,4,5,6}; // 1,2,3,4 5,6,0,0

5、注意:定义二维数组时,无论任何时候,第二维都不能省略

2.2 二维数组的相关操作

2.2.1.  输入输出

        对于二维数组而言,是有行有列的元素集合,需要使用双重循环来进行定位横标和纵标

        在双重循环中,找到任意一个元素 arr[i][j] 来对其进行输入输出

例如:

#include <stdio.h>
#define M 3
#define N 4
int main(int argc, char const *argv[])
{
    int i=0,j=0;
    int s[M][N];
    for(int i=0;i<M;i++){
        for(int j=0;j<N;j++){
            printf("请输入第%d行第%d列的元素:",i+1,j+1);
            scanf("%d",&s[i][j]);
        }
        printf("\n");
    }
    printf("数组分别是:\n");
    for(int i=0;i<M;i++){
        for(int j=0;j<N;j++){
            printf("%d\t",s[i][j]);
        }
        printf("\n");
    }

2.2.2 求和、均值、最值

        1、整体求和就是将任意一个元素进行累加

        2、求每一行的和:将每一行的数据进行累加,求出结果后,可以放入一个新数组

        3、求整体最值:先将第一个当做最值,然后遍历所有的元素,进行比较,给定比较条件后,适当更新最值

        4、求每一行的最值:在外层循环内,先将当前行的第一个当做最值,然后遍历当前行的所有数据,进行比较和更新

例如:

int a[3]={0};
    for(i=0;i<M;i++){
        for(j=0;j<N;j++){
            a[i]+=s[i][j];
        }
    }
    printf("每一行的和分别是:\n");
    for(i=0;i<M;i++){
        printf("%d\t",a[i]);
    }
    printf("\n");
    int max=s[0][0];
    int maxi=0;
    int maxj=0;
    for ( i = 0; i < M; i++)
    {
        for (j = 0;j < N; j++)
        {
           if(max<s[i][j]){
               max = s[i][j];
               maxi = i+1;
               maxj = j+1;
           }
        }
    }
    printf("最大值为第%d行,第%d列,值为%d",maxi,maxj,max);
    printf("\n");
    int max1={0};
    for(i=0;i<M;i++){
        max1=s[i][0];
        for ( j = 0; j < N; j++)
        {
           if (max1 < s[i][j])
           {
               max1 = s[i][j];
           }
        }
        printf("第%d行的最大值为:%d\n", i+1,max1);
    }
    printf("\n");

2.2.3 转置

        1、所谓转置,就是将二维数组行列互换

        2、完成转置,需要使用一个新数组

        3、转置核心代码:brr[j][i] = arr[i][j]

例如:
    int brr[N][M] = {0};
    for(int i=0; i<M; i++)         //外行
    {
        //找到当前行的任意一个元素
        for(int j=0; j<N; j++)
        {
            //在此处找到了任意一个元素 arr[i][j]
            brr[j][i] = s[i][j];
        }
    }

    //输出转置后的结果
    printf("上述二维数组转置后的结果如下:\n");
    for(int i=0; i<N; i++)
    {
        for(int j=0; j<M; j++)
        {
            printf("%d\t", brr[i][j]);
        }
        printf("\n");
    }

3. 字符数组

3.1 一维字符数组

3.1.1. 定义格式

char 数组名[常量];

3.1.2. 字符数组初始化

1.单字符处理字符数组

        全部初始化:char arr[5] = {'h', 'e', 'l', 'l', 'o'};

        部分初始化:char arr[5] = {'h', 'e', 'l'}; //没有初始化的部分用 0('\0') 补齐

        特殊初始化:char arr[] = {'h', 'e', 'l', 'l', 'o'}; //此时字符数组的长度为 5

2. 字符串的形式初始化

        整体初始化:char arr[10] = {"hello"}; //或者 char arr[6] = "hello";

        特殊字符串初始化: char arr[] = "ni hao"; //此时,数组的实际长度7 但是,字符串实际长度为6

3.2 strlen

        格式:#include <string.h> size_t strlen(const char *s);

        功能:计算字符串的长度,不包括结尾的'\0'

        参数:要计算长度的字符串的首地址

        返回值:计算的结果

3.3 strcpy

        格式:#include <string.h> char *strcpy(char *dest, const char *src);

        功能:将src指向的字符串复制到dest指向的缓冲区里

        参数: dest:目标字符串 src :源字符串         

        返回值: 同dest

        注意: 要保证dest足够大,否则会出现越界访问的问题!!!

3.4 strcat

        格式:#include <string.h> char *strcat(char *dest, const char *src);

        功能:将src指向的字符串追加到dest指向的字符串后面 回复覆盖 dest 结尾的 '\0'

        参数:

                dest:目标字符串

                src :源字符串

        返回值: 同dest

        注意:要保证 dest 足够大

3.5 stcmp

        格式:#include <string.h> int strcmp(const char *s1, const char *s2);

        功能:比较两个字符串

        参数: s1 和 s2 就是要参与比较的两个字符串 //是逐个比较两个字符串中字符的ascii码

        返回值:

                >0 s1>s2

                ==0 s1==s2

                <0 s1<s2

例如:

#include<stdio.h>
#include<string.h>
int main(int argc, const char *argv[])
{
    //定义两个字符数组初始化字符串
    char str1[20] = "hello world";
    char str2[] = "I Love China";

    //测试strlen
    int len = strlen(str2);           //求字符串2的实际长度
    printf("len = %d\n", len);           //12
    int size = sizeof(str2);          //求字符串所占字符数组的长度
    printf("size = %d\n", size);         //13
    size = sizeof(str1);             //求字符数组1的大小
    printf("size = %d\n", size);         //20

    //比较两个字符串的大小
    if(strcmp(str1, str2) >0)
    {
        printf("%s大\n", str1);
    }else if(strcmp(str1, str2) < 0)
    {
        printf("%s小\n", str1);
    }else
    {
        printf("一样大\n");
    }

    //完成两个字符串的赋值,将str2赋值给str1
    strcpy(str1, str2);             // str1 = str2
    printf("拷贝后:str1 = %s, str2 = %s\n", str1, str2);

    //完成两个字符串的连接, 将str2连接到str1后面
    strcat(str1, str2);
    printf("连接后:str1 = %s, str2 = %s\n", str1, str2);
    
    


    return 0;
}


课内练习:

杨辉三角

解析:


课外作业:

1.提示并输入一个字符串,统计该字符串中字母、数字、空格以及其他字符的个数

解析:

#include<stdio.h>>

#include<string.h>

int main(int argc, char const *argv[])

{

        char s[1001]={0};

        int i=0;

        int zimu=0;

        int kg=0;

        int dight=0;

        int other=0;

        printf("请输入字符串:");

        gets(s);

        while (s[i] != '\n' && s[i] != '\0') {

            if((s[i]>='A' && s[i]<='Z') || (s[i]>='a' && s[i]<='z')){

                zimu++;

            }else if (s[i]>='0' && s[i]<='9')

            {

                dight++;

            }else if (s[i] == ' ')

            {

                kg++;

            }else

            {other++;}

            i++;

        }

        printf("该字符串中字母有%d个、数字有%d个、空格有%d个,其他字符有%d个",zimu,dight,kg,other);

    return 0;

}

2.提示并输入一个字符串,求出该字符串中所有数字的总和

解析:

#include<stdio.h>>

#include<string.h>

int main(int argc, char const *argv[])

{

        char s[1001]={0};

        int i=0;

        int sum=0;

        printf("请输入字符串:");

        gets(s);

        while (s[i] != '\n' && s[i] != '\0') {

        if (s[i]>='0' && s[i]<='9')

        {

            sum=sum+(s[i]- '0');

        }

        i++;

        }

        printf("%d",sum);

    return 0;

}

3.定义一个4*3的二维整形数组,完成对二维数组的输入、输出。并将该二维数组中每一行的最值放入到一个一维数组中,并对该一维数组进行升序排序后输出。

解析:

#include <stdio.h>
int main(int argc, char const *argv[])
{
      int s[4][3]={0};
        int a[4]={0};
        int i=0,j=0;
        int temp=0; 
        for(i=0;i<4;i++){
            for ( j = 0; j < 3; j++)
            {
                printf("请输入第%d行第%d列的元素:",i+1,j+1);
                scanf("%d",&s[i][j]);
            }
            printf("\n");
        }
        printf("数组分别是:\n");
        for(i=0;i<4;i++){   
            for ( j = 0; j < 3; j++)
            {
                printf("%d\t",s[i][j]);
            }
            printf("\n");
        }
        for(i=0;i<4;i++){
            a[i]=s[i][0];
            for(j=0;j<3;j++){
                if(a[i] < s[i][j]){
                    a[i]=s[i][j];
                }
            }
        }
        printf("该一维数组进行升序排序后输出为:");
        for(i=1;i<4;i++){
            for(j=0;j<4-i;j++){
            if(a[j] > a[j+1]){
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
                 }
            }
        }
        for(i=0;i<4;i++)
            {
                printf("%d\t",a[i]);
            }
            printf("\n");
    return 0;
}

4.提示并输入两个一维整形数组,求这两个数组的交集。

解析:

    #include <stdio.h>

    #include <string.h>

    #define M 30

    int main(int argc, const char *argv[])

    {

    int arr[M]={0};

    int brr[M]={0};

    int crr[M]={0};

    int N=0;

    int count=0;

    printf("请输入两个一维数组的长度:\n");

    scanf("%d",&N);

    printf("请输入第一个数组的数字:\n");

    for(int i=0;i<N;i++){

        printf("第%d个:",i+1);

        scanf("%d",&arr[i]);

        putchar(10);

    }

    printf("请输入第二个数组的数字:\n");

    for(int i=0;i<N;i++){

        printf("第%d个:",i+1);

        scanf("%d",&brr[i]);

        putchar(10);

    }

    int k=0;

    for(int i=0;i<N;i++){

        for(int j=0;j<N;j++){

            if(arr[i]==brr[j]){

                crr[k]=arr[i];

                k++;

                count++;

                break;

            }

        }

    }

    int temp=0;

    for(int i=0;i<N;i++){

        for(int j=i+1;j<N;j++){

            if(crr[i]==crr[j]){

                for(temp = j;temp<N-1;temp++)

                    crr[temp]=crr[temp+1];  

                j--;    

                N--;    

            }

        }

    }

    printf("两个数组的交集为:\n");

    for(int i=0;i<N;i++){

        if (count == 0) {

        printf("没有交集。\n");

    }else

        printf("%d\t",crr[i]);

    }

    putchar(10);

    // 如果交集中没有元素,输出相应的信息

   

    return 0;

}

5.完成注册和登录功能:使用两个一维字符数组存储账户和密码

注册:完成对账号和密码的输入

登录:将登录账号和密码跟注册的账号和密码进行匹配,如果相等,则登录成功,否则,登录失败

解析:

#include<stdio.h>

int main(int argc, const char *argv[])
{
    //定义变量存储菜单选项
    int menu = 0;

    //定义变成存储注册账号和密码,以及登录账号和密码
    char sign_usrName[20] = "";       //注册账号
    char sign_pwd[20] = "";           //注册密码
    char login_usrName[20] = "";      //登录账号
    char login_pwd[20] = "";          //登录密码

    while(1)
    {
        printf("\t\t======XXX管理系统========\n");
        printf("\t\t1、注册\n");
        printf("\t\t2、登录\n");
        printf("\t\t0、退出\n");

        printf("请输入操作码:");
        scanf("%d", &menu);
        getchar();                //吸收回车

        //对操作码多分支选择
        switch(menu)
        {
        case 1:
            {
                //提示用户输入账号和密码
                while(1)
                {
                    printf("请输入注册账号:");
                    gets(sign_usrName);
                    printf("请输入注册密码:");
                    gets(sign_pwd);

                    //判断账号和密码是否合格
                    if( !(strlen(sign_usrName)>=6 && strlen(sign_pwd)>=6) )
                    {
                        printf("注册失败,请重新注册\n");
                        continue;
                    }
                    break;           //表示注册成功
                }

            }
            break;
        case 2:
            {
                //提示并输入登录账号和密码
                printf("请输入登录账号:");
                gets(login_usrName);
                printf("请输入登录密码:");
                gets(login_pwd);

                //判断是否登录成功
                if(strcmp(sign_usrName,login_usrName)==0 && strcmp(sign_pwd,login_pwd)==0)
                {
                    printf("登录成功\n");
                    exit(0);           //退出程序
                }else
                {
                    printf("账号或密码错误\n");
                }

            }
            break;
        case 0:goto END;
        default:printf("您输入的功能有误,请重新输入\n");
        }

    }

END:

    return 0;
}

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

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

相关文章

2.4G芯片开发的遥控玩具方案介绍 东莞酷得

玩具从早期的简单功能&#xff0c;到现如今各种各样的智能操作&#xff0c;发展的速度也是飞速的。随着玩具市场的逐步完善与推进&#xff0c;中国的智能玩具市场也出现了很多远程遥控玩具。遥控玩具也是从最初的有线到现在的无线&#xff0c;从地上跑的到天上飞的&#xff0c;…

Wireshark 对 https 请求抓包并展示为明文

文章目录 1、目标2、环境准备3、Wireshark 基本使用4、操作步骤4.1、彻底关闭 Chrome 进程4.2、配置 SSLKEYLOGFILE [核心步骤]4.3、把文件路径配置到 Wireshark 指定位置4.4、在浏览器发起请求4.5、抓包配置4.6、过滤4.6.1、过滤域名 http.host contains "baidu.com4.6.2…

UNI_App平台调试指南 debug(十五)

App平台调试指南 debug 常规开发里,在 HBuilderX 的运行菜单里运行 App,手机端的错误或 console.log 日志信息会直接打印到控制台。 如果需要更多功能,比如审查元素、打断点 debug,则需要启动调试模式。自 HBuilderX 2.0.3+ 版本起开始支持 App 端的调试。 #打开调试窗口…

响应式建站公司企业官网源码系统 带源代码以及搭建部署教程

系统概述 响应式建站公司企业官网源码系统是一套集设计、开发、部署于一体的综合性解决方案。它旨在为企业提供一个易于定制、功能强大、适应各种设备屏幕的官方网站平台。 该系统采用先进的技术架构&#xff0c;确保网站的稳定性和性能。它能够与各种后端数据库和服务器环境…

TCP四次挥手:为什么四次?原理大揭密!

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hello, 大家好,我是你们的技术小伙伴小米!今天我们来聊一聊网络基础中的一个重要环节——TCP四次挥手过程。大家都知道,TCP连接的建立和断开是网络通…

2024年10款免费的项目管理软件推荐

本文向大家推荐10款2024年免费使用的项目管理软件&#xff0c;其中包括桌面应用和基于Web平台的多种产品&#xff0c;同时还涵盖了一些优秀的开源软件。 1.禅道开源项目管理软件 禅道是一款开源的、基于Web的项目管理软件&#xff0c;其功能丰富且操作简便&#xff0c;为团队提…

孟加拉最受欢迎的slot游戏推广okspin海外网盟广告优势

孟加拉最受欢迎的slot游戏推广okspin海外网盟广告优势 在当今全球化日益加剧的时代&#xff0c;游戏产业正迎来前所未有的发展机遇。孟加拉国&#xff0c;作为一个充满活力和潜力的新兴市场&#xff0c;其游戏出海之路也愈发受到业界的关注。在这一过程中&#xff0c;广告投放…

C++入门——命名空间与输入输出与缺省参数与重载函数与引用与内联

文章目录 命名空间——namespace命名空间的用处命名空间的定义命名空间的使用命名空间的嵌套命名空间的别名 输入与输出原理概述输入输出的使用 缺省参数定义缺省参数的方式使用缺省参数的价值和优势 函数重载定义与使用价值与优势 引用定义与使用价值与优势注意事项常量引用函…

【TOOLS】Chrome扩展开发

Chrome Extension Development 1. 入门教程 入门案例&#xff0c;可以访问【 谷歌插件官网官方文档 】查看官方入门教程&#xff0c;这里主要讲解大概步骤 Chrome Extenson 没有固定的脚手架&#xff0c;所以项目的搭建需要根据开发者自己根据需求搭建项目&#xff08;例如通过…

生物素-十一聚乙二醇-沙利度胺;Biotin-PEG11-Thalidomide

Biotin-PEG11-Thalidomide&#xff0c;即生物素-十一聚乙二醇-沙利度胺&#xff0c;是一种结合了生物素、十一聚乙二醇&#xff08;PEG11&#xff09;和沙利度胺的复杂化合物。以下是对该化合物的详细分析&#xff1a; 一、组成成分及特性 生物素&#xff08;Biotin&#xff09…

美间·AI创意商拍——面向全球电商从业者提供AI背景图、AI真实增强、AI智能抠图、AI扩图、AI智能消除等AI生成及设计工具

一、产品介绍 「美间AI创意商拍」是群核科技推出的电商AIGC设计平台&#xff0c;依托群核前沿技术研究院自研大模型和美间2D智能设计引擎&#xff0c;面向全球电商从业者提供AI背景图、AI真实增强、AI智能抠图、AI扩图、AI智能消除等AI生成及设计工具&#xff0c;帮助用户高效…

【全面介绍语言模型的原理,实战和评估】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🥂语言模型的原理 🥂语言模型基于统计和机器学习的原理,目标…

怎么批量下载网页里的图片和视频 如何批量下载一个网站的所有图片 如何批量下载网页视频文件 idm软件怎么下载

当我们在网站内需要下载大量图片时&#xff0c;一张一张的下载非常麻烦。这里推荐大家使用IDM这款网页图片下载工具。下面&#xff0c;我将介绍怎么批量下载网页里的图片和视频&#xff0c;如何批量下载一个网站的所有图片的解决方法。 一、怎么批量下载网页里的图片和视频 …

营业执照注销多少钱

营业执照不注销会有什么后果&#xff1f;1、公司不经营&#xff0c;放几年自动注销&#xff1f;真相&#xff1a;不管放多长时间&#xff0c;公司是不会自动注销的。相反&#xff0c;放任长久不维护&#xff0c;公司会出现异常&#xff0c;营业执照被吊销&#xff0c;公司股东、…

uniapp小程序上传文件webapi后端项目asp.net

需求 小程序需要上传用户相册图片或拍摄的照片到后端服务器 uniapp官方处理小程序文件方法 选择文件方法&#xff1a;uni.chooseMedia uni-app官网uni-app,uniCloud,serverless,uni.chooseVideo(OBJECT),chooseVideo HarmonyOS 兼容性,uni.chooseMedia(OBJECT),uni.saveVid…

软件架构之计算机网络

软件架构之计算机网络 第 4 章 计算机网络4.1 网络架构与协议4.1.1 网络互联模型4.1.2 常见的网络协议4.1.3 IPv6 4.2 局域网与广域网4.2.2 无线局域网4.2.3 广域网技术4.2.4 网络接入技术 4.3 网络互连与常用设备4.4 网络工程4.4.1 网络规划4.4.2 网络设计4.4.3 网络实施 4.5 …

PTrade常见问题系列8

get_fundamentals函数能否在后台验证是否能取到数据 get_fundamentals函数能否在量化服务器后台调用&#xff0c;验证是否能取到财务数据&#xff1f; 可后台调用。 #获取财务数据 from fly.data.quotation import get_fundamentals get_fundamentals(600000.SS, balance_stat…

【ChatGPT 消费者偏好】第二弹:ChatGPT在日常生活中的使用—推文分享—2024-07-10

今天的推文主题还是【ChatGPT & 消费者偏好】 第一篇&#xff1a;哪些动机因素和技术特征的组合能够导致ChatGPT用户中高和低的持续使用意图。第二篇&#xff1a;用户对ChatGPT的互动性、性能期望、努力期望以及社会影响如何影响他们继续使用这些大型语言模型的意向&#x…

强烈推荐!!李沐老师《动手学深度学习》最新Pytorch版!

动手学深度学习(PyTorch版)》是由李沐、Aston Zhang和孔德威共同编写的教材&#xff0c;专为深度学习初学者和实践者设计。本书使用PyTorch作为主要的深度学习框架&#xff0c;全面系统地介绍了深度学习的基本理论、常见模型和实际应用技巧。 书中内容包括深度学习的基础知识、…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第二十二章 安装VMware Tool 工具

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…