【C语言_数组_复习篇】

news2024/11/17 7:49:47

目录

一、数组的概念

二、数组的类型

三、一维数组

        3.1 一维数组的创建

        3.2 一维数组的初始化

        3.3 一维数组的访问

        3.4 一维数组在内存中的存储

四、二维数组

        4.1 二维数组的创建

        4.2 二维数组的初始化

        4.3 二维数组的访问

        4.4 二维数组在内存中的存储

五、变长数组 

六、sizeof计算数组的大小

七、字符串数组

        7.1 字符串数组的创建

        7.2 字符串数组的初始化

        7.3 字符串数组的输入

        7.4 字符串数组的输出

        7.5 字符串数组经典应用

八、指针数组

        8.1 指针数组

        8.2 指针数组模拟实现二维数组

九、函数指针数组

        9.1 函数指针数组

        9.2 转移表 

 十、结构体数组

十一、一维数组_例题

十二、二维数组_例题

十三、字符数组_例题

十四、图片 


一、数组的概念

1. 数组是一组相同类型元素的集合,存放在数组内的值被称为数组元素,数组分为一维数组和多维数组。

2. 多维数组是根据数组每个元素是几维数组划分的:二维数组的每个元素是一维数组,三维数组的每个元素是二维数组,其他的数组依此类推,多维数组中最常见的数组是二维数组。

3. 数组的元素个数不能为0数组内的每个元素必须是相同类型的

4. 数组的type有很多,如int、char、float、结构体等。后面所讲到的字符串数组,指针数组、函数指针数组和结构体数组也都只不过是不同类型的数组而已它们均可创建出一维、二维、多维的形式

5. 在创建数组时要想清楚,想要创建几维数组,数组内每个元素的类型是什么

二、数组的类型

1. 数组的类型是除掉数组名剩余的部分,例如,int arr[10],数组arr的类型是int [10]。

三、一维数组

3.1 一维数组的创建

1. 一维数组的语法格式:type arr_name[常量值];

2. type表示一维数组中的每个元素是什么类型的,arr_name表示一维数组的名称,[常量值]表示一维数组的大小。

3. “定义可存放几个什么类型的一维数组”

#include <stdio.h>
int main()
{
	int arr1[10];//定义可存放10个整型的一维数组
	char arr2[4];//定义可存放4个字符的一维数组
	float arr3[6];//定义可存放6个单精度浮点型的一维数组
	//...
	return 0;
}

3.2 一维数组的初始化

1. 一维数组的初始化分为完全初始化和不完全初始化。

2. 完全初始化:一维数组有多大,就初始化几个元素。

3. 不完全初始化:初始化的元素个数小于一维数组的大小,剩余未初始化的元素会默认初始化为0。

4. 省略数组大小的初始化:初始化一维数组时,[ ]中的常量值也可以省略不写此时初始化几个元素,一维数组就为多大

#include <stdio.h>
int main()
{
	int arr1[10] = { 1, 2, 3, 4, 5, 6 ,7, 8, 9,10 };//完全初始化
	int arr2[10] = { 0 };//不完全初始化
	int arr3[] = { 1, 2, 3, 4 };//省略数组大小的初始化,数组大小为4
	return 0;
}

3.3 一维数组的访问

1. 数组元素的访问需要用到下标引用操作符[ ],数组元素的下标都是从0开始,最大为sz-1

2. 访问时的要点:①知道需要的变量在哪个数组中②知道变量在该数组中的下标编号是多少

③连续输入或使用数组元素时创建循环变量利用 for 循环解决

//一维数组的输入和输出
#include <stdio.h>
int main()
{
	int arr[10] = { 0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;//循环变量
	for (i = 0; i < sz; i++)
	{
		scanf("%d", &arr[i]);
		printf("%d ", arr[i]);
	}
	return 0;
}

3.4 一维数组在内存中的存储

1. 一维数组在内存中连续存储,并且随着下标的增长地址由小到大变化

//验证一维数组在内存中的存储方式
#include <stdio.h>
int main()
{
	char arr[5] = { '0', '1', '2', '3', '4'};//字符数组,每个元素占一个字节
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;//循环变量
	for (i = 0; i < sz; i++)
	{
		printf("arr[%d]=%p\n", i, &arr[i]);
	}
	return 0;
}

 

四、二维数组

4.1 二维数组的创建

1. 二维数组的语法格式:type arr_name[常量值1][常量值2];

2. type表示二维数组中的每个元素是什么类型的,arr_name表示二维数组的名称,[常量值1]表示二维数组中有几个一位数组(即几行)[常量值2]表示每个一维数组中有几个元素(即几列)

#include <stdio.h>
int main()
{
	int arr[3][5];//定义三行五列的整型二维数组
	char arr2[4][6];//定义4行6列的字符二维数组
	float arr3[2][4];//定义2行4列的浮点数二维数组
	//...
	return 0;
}

4.2 二维数组的初始化

1. 二维数组的初始化分为完全初始化和不完全初始化,二维数组中的每个一维数组的{}可打可不打不打{ }时元素按照排满一行再换一行的顺序摆放,打{ }时可以控制每行存哪些元素

2. 完全初始化:二维数组有几列几行,就初始化几列几行的元素。

3. 不完全初始化:初始化的元素个数小于数组大小(行*列),剩余未初始化的元素默认初始化为0。

4. 省略二维数组行标的初始化:初始化二维数组时,常量值1也可以省略不写但常量值2必须写, 编译器会根据初始化内容判断二维数组有几行

#include <stdio.h>
int main()
{
	int arr1[3][4] = { { 1, 2, 3, 4 }, { 2, 3, 4, 5 }, { 3, 4, 5, 6 } };//完全初始化
	int arr2[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//完全初始化

	int arr2[3][4] = { { 1 }, { 2, 3 }, { 4, 6, 8 } };//不完全初始化
	int arr3[3][4] = { 0, 1, 2 };//不完全初始化

	int arr4[][4] = { 1, 2 };//数组为1行4列
	int arr5[][4] = { { 1 }, { 3 }, { 2 , 5 } };//数组为3行4列
	return 0;
}

4.3 二维数组的访问

1. 二维数组的访问也要用到下标引用操作符[ ],二维数组的行标和列标都是0开始最大为sz-1

2. 访问时的要点:① 知道需要的变量在哪个数组中 ② 知道变量在该数组中的行标和列标是多少 ③ 连续输入或使用数组元素时创建循环变量利用嵌套 for 循环解决。

//二维数组的输入和输出
#include <stdio.h>
int main()
{
	int arr[3][4] = { 0 };
	int i = 0;//循环变量
	for (i = 0; i < 3; i++)
	{
		int j = 0;//循环变量
		for (j = 0; j < 4; j++)
		{
			scanf("%d", &arr[i][j]);
			printf("%d ", arr[i][j]);
		}
		//换行
		printf("\n");
	}
	return 0;
}

4.4 二维数组在内存中的存储

1. 二维数组和一维数组一样,在内存中连续存放随着下标的增长地址由小到大变化

//验证二维数组在内存中的存储方式
#include <stdio.h>
int main()
{
	char arr[2][3] = { { '1', '2', '3' }, { '2', '3', '4' }};//字符数组,每个元素占一个字节
	int i = 0;//循环变量
	for (i = 0; i < 2; i++)
	{
		int j = 0;//循环变量
		for (j = 0; j < 3; j++)
		{
			printf("arr[%d][%d]=%p\n", i, j, &arr[i][j]);
		}
	}
	return 0;
}

 

五、变长数组 

1. 概念:C99之前,数组的大小只能是常量。C99之后,引入了变长数组的概念,可以使用变量来指定数组的大小。但VS默认不支持C99中的变长数组,使用gcc编译器的DevC++支持,oj刷题的网站一般也是支持的。

2. 变⻓数组的根本特征数组⻓度只有运⾏时才能确定,所以变⻓数组不能初始化

3. 好处:当在开发时,没有确定好数组的大小,可以利用变长数组,待程序运⾏时再为数组分配精确的⻓度。

4. 注意:变⻓数组的意思是数组的⼤⼩是可以使⽤变量来指定的,在程序运⾏的时候,根据变量的⼤⼩来指定数组的元素个数,⽽不是说数组的⼤⼩是可变的。数组的⼤⼩⼀旦确定就不能再变化了。

六、sizeof计算数组的大小

1. sizeof是专门计算变量或类型所占空间大小的一个关键字,计算结果的单位是字节,sizeof不会执行( )内的任何运算和函数调用。

2. sizeof(数组名)计算的是整个数组的大小,这里的数组名不再是数组首元素的地址。

3. 计算一维数组元素个数:int sz = sizeof(arr) / sizeof(arr[0]);利用整个数组的大小除以单个数组元素的大小,得到的就是数组大小,打印时占位符%d不行就用%zd。

4. 计算二维数组元素个数:int sz = sizeof(arr) / sizeof(arr[0][0]);

5. 使用的好处:方便修改和利用。

6. 好习惯:定义和初始化一维数组后,下面一行立即写上用sizeof计算出的一维数组元素个数。

温馨提示:

1.下面讲到的字符串数组、指针数组、函数指针数组和结构体数组讲解的例子都只会使用它们的一维数组,它们的多维数组并不常用,所以就没有举例。

2. 字符串数组、指针数组、函数指针数组和结构体数组的一维数组和二维数组的创建、初始化、使用、在内存中的存储都差不多,只需要记住它们与内置类型差异点即可

七、字符串数组

7.1 字符串数组的创建

1. C语言中没有专门的字符串类型,如果要存放字符串可以用字符串数组存放(字符串数组本质是字符数组)。

2.  字符串数组的语法格式(和一维字符数组、二维字符数组一样):

     一位字符串数组:char arr_name[常量值]

     二维字符串数组:char arr_name[常量值1][常量值2]

7.2 字符串数组的初始化

1. 字符串数组的初始化分为完全初始化和不完全初始化,且均有两种写法,第一种是用单引号初始化,在字符串的末尾会自动存入\0,这种写法在定义字符串数组的大小时要考虑\0也是数组中的一个元素,第二种是用大括号的初始化,但不会自动存入\0,需要手动存入\0才能代表这是一个字符串数组,否则只能作为一个字符数组。(通常会用双引号的形式初始化)

2. 下面代码中仅展示一维字符串数组初始化形式,因为二维字符串数组很少用到。

#include <stdio.h>
int main()
{
    //一维字符串
	//方法一:用双引号初始化
	char arr1[4] = "abc";//完全初始化  a b c \0
    char arr2[4] = "ab";//不完全初始化 a b \0
    char arr3[] = "ab"//字符串数组大小为3

	//方法二:用大括号的初始化
	char arr4[4] = { 'a', 'b', 'c', '\0' };//完全初始化
	char arr5[4] = { 'a', 'b', '\0'};//不完全初始化
    char arr6[] = { 'a', 'b', '\0'};//字符串数组大小为3
 
    char arr7[4] = { 'a', 'b', 'c', 'd' };//不是字符串数组,因为数组中没有\0
	char arr8[4] = { 'a', 'b'};//不是字符串数组,因为数组中没有\0
    char arr9[] = { 'a', 'b'};//不是字符串数组,因为数组中没有\0                  
	return 0;
}

7.3 字符串数组的输入

1. 字符串数组的输入可以用scanf() 和 gets() 但两者是有区别的。 
2. scanf() 读取字符串时以空格为分隔,遇到空格就认为当前字符串结束了,所以无法读取含有空格的字符串。
3. gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以在字符串数组输入时,最好用 gets()

#include <stdio.h>
int main()
{
	char arr1[10] = { '0'};
	//输入方法一:
	scanf("%s", arr1);//"hello world",只会读取hello
	//输入方法二:
	gets(arr1);//"hello world",全部读取
	return 0;
}

7.4 字符串数组的输出

1. 字符串数组的输出可以用用scanf() 和 gets() 但是有区别的。

2. printf():通过格式控制符%s 输出字符串,不能自动换行

3. puts():输出字符串并自动换行,该函数只能输出字符串。

#include <stdio.h>
int main()
{
	char arr1[10] = "abcde";
	//输出方法一:
	printf("%s\n", arr1);//不会自动换行,打印时加\n
	//输出方法二:
	puts(arr1);//会自动换行
	return 0;
}

7.5 字符串数组经典应用

//【实现:多个字符从两端移动,向中间汇聚】
//##########################
//Y########################!
//Yo######################!!
//You####################!!!
//You ##################!!!!
// ...
//You are the best!!!!!!!!!!

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

int main()
{
	char arr1[] = "You are the best!!!!!!!!!!";
	char arr2[] = "##########################";
	//计算数组arr2的元素个数
	int sz = sizeof(arr2) / sizeof(arr2[0]);
	//再屏幕上先打印数组arr2的内容
	printf("%s\n", arr2);
	int left = 0;
	int right = sz - 2;//字符串的末尾隐藏着一个\0
	while (left <= right)
	{
		//睡眠1000毫秒
		Sleep(700);//sleep的第一个字母大写!

		arr2[left] = arr1[left];
		arr2[right] = arr1[right];

		//清屏
		system("cls");//system函数是库函数,执行系统命令,cls清理控制台屏幕

		//再次在屏幕上打印数组arr2
		printf("%s\n", arr2);

		//调整
		left++;
		right--;
	}
	return 0;
}

八、指针数组

8.1 指针数组

1. 指针数组就是存放指针的数组,数组中的每个元素都是指针(地址)。

2. 指针数组的类型由数组中每个元素解引用所指向变量的类型决定。

#include <stdio.h>
int main()
{
	int arr1[] = { 1, 2, 3 };
	int arr2[] = { 2, 3, 4 };
	int arr3[] = { 3, 4, 5 };

	int* arr[3] = { arr1, arr2, arr3 };//一维指针数组
	//由于数组名是数组首元素的地址,每个数组首元素的地址是int*类型的
	//所以arr指针数组语法中的tpye部分要写成int*
	return 0;
}

8.2 指针数组模拟实现二维数组

1. 模拟的⼆维数组,并⾮完全是⼆维数组,因为每⼀⾏的数据在内存中是⾮是连续的。

2. 下图代码的解释:parr是数组首元素的地址,而parr首元素的地址是数组arr1的地址,我们可以通过对parr+-整数拿到parr中每个元素的地址,即内部每个数组的地址,再通过对这些地址解引用拿到,每个内部数组首元素地址,最后通过首元素的地址偏移和解引用,找到parr内部数组中的每个元素,即有了 *(*(arr+i) + j) == parr[i][j] 。

#include <stdio.h>
int main()
{
     int arr1[] = {1,2,3,4,5};
     int arr2[] = {2,3,4,5,6};
     int arr3[] = {3,4,5,6,7};
     
     int* parr[3] = {arr1, arr2, arr3};//一位指针数组
     int i = 0;
     int j = 0;
     for(i=0; i<3; i++)
     {
         for(j=0; j<5; j++)
         {
             printf("%d ", parr[i][j]);
         }
         printf("\n");
     }
     return 0;
}

九、函数指针数组

9.1 函数指针数组

1. 函数指针数组是存放函数指针的数组函数指针数组里的元素全都是函数指针

2. 函数指针数组的类型由数组中每个元素的类型决定,但函数指针数组的创建写法比较独特,具体见下方代码。

    即要把函数指针类型中写指针名称的地方写成函数指针数组名+数组大小

#include <stdio.h>

int Add(int x, int y)
{
	//...
	return x + y;
}

int Sub(int x, int y)
{
	//...
	return x - y;
}

int Mul(int x, int y)
{
	//...
	return x * y;
}

int main()
{
	int (*arr[3])(int, int) = { Add, Sub, Mul };//函数指针数组
                                                //arr是数组名,[3]表示数组大小
    //int ret = (arr+1)(2, 3);//err
	//int ret = (*(arr + 1))(2, 3);
	int ret = arr[1](2, 3);//下标直接访问
	printf("%d\n", ret);
	return 0;
}

9.2 转移表 

#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 div(int a, int b)
{
	return a / b;
}

int main()
{
	int x, y;
	int input = 1;
	int ret = 0;
	int(*p[5])(int x, int y) = { 0, add, sub, mul, div }; //转移表
	do
	{
		printf("*************************\n");
		printf(" 1:add 2:sub \n");
		printf(" 3:mul 4:div \n");
		printf(" 0:exit \n");
		printf("*************************\n");
		printf("请选择:");
		scanf("%d", &input);
		if ((input <= 4 && input >= 1))
		{
			printf("输⼊操作数:");
			scanf("%d %d", &x, &y);
			ret = p[input](x, y);
			printf("ret = %d\n", ret);
		}
		else if (input == 0)
		{
			printf("退出计算器\n");
		}
		else
		{
			printf("输⼊有误\n");
		}
	} while (input);
	return 0;
}

 十、结构体数组

1. 结构体数组是存放同一种结构体类型变量的数组结构体数组里的元素全都是同一个结构体类型创建的结构体变量

2. 结构体数组的类型由数组中每个元素是什么结构体类型决定。

//首先声明结构体类型
struct stu
{
	char name[20];
	int age;
};
 
//定义结构体数组,并初始化
struct stu mate[3]={{"Allen",18},{"Smith",19},{"Grace",18}};

十一、一维数组_例题

[NOIP2013]记数问题_牛客题霸_牛客网 (nowcoder.com)

逆序输出_牛客题霸_牛客网 (nowcoder.com)

N个数之和_牛客题霸_牛客网 (nowcoder.com)

最高分与最低分之差_牛客题霸_牛客网 (nowcoder.com)

争夺前五名_牛客题霸_牛客网 (nowcoder.com)

有序序列合并_牛客题霸_牛客网 (nowcoder.com)

有序序列判断_牛客题霸_牛客网 (nowcoder.com)

有序序列插入一个整数_牛客题霸_牛客网 (nowcoder.com)

序列中删除指定数字_牛客题霸_牛客网 (nowcoder.com)

序列中整数去重_牛客题霸_牛客网 (nowcoder.com)

小乐乐查找数字_牛客题霸_牛客网 (nowcoder.com)

筛选法求素数_牛客题霸_牛客网 (nowcoder.com)

十二、二维数组_例题

回型矩阵_牛客题霸_牛客网 (nowcoder.com)

蛇形矩阵_牛客题霸_牛客网 (nowcoder.com)

井字棋_牛客题霸_牛客网 (nowcoder.com)

扫雷_牛客题霸_牛客网 (nowcoder.com)

十三、字符数组_例题

[NOIP2018]标题统计_牛客题霸_牛客网 (nowcoder.com)

[NOIP2008]笨小猴_牛客题霸_牛客网 (nowcoder.com)

添加逗号_牛客题霸_牛客网 (nowcoder.com)

字符串操作_牛客题霸_牛客网 (nowcoder.com)

简写单词_牛客题霸_牛客网 (nowcoder.com)

十四、图片 

 本篇已完结。。。。。。

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

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

相关文章

大数据主要组件HDFS Iceberg Hadoop spark介绍

HDFSIceberghadoopspark HDFS 面向PB级数据存储的分布式文件系统&#xff0c;可以存储任意类型与格式的数据文件&#xff0c;包括结构化的数据以及非结构化的数据。HDFS将导入的大数据文件切割成小数据块&#xff0c;均匀分布到服务器集群中的各个节点&#xff0c;并且每个数据…

R语言:vagen包做微生物香农指数分析,ggplot2画箱线图

> setwd("目录路径") > library(vegan) > library(picante) > library(openxlsx) > library(ggplot2) > library(ggsci) > otu <- read.xlsx("OTU.xlsx",rowNames T) > head(otu)T1 T2 T3 T5 T6 T8 T9 N…

瑞_23种设计模式_状态模式

文章目录 1 状态模式&#xff08;State Pattern&#xff09;1.1 介绍1.2 概述1.3 状态模式的结构1.4 状态模式的优缺点1.5 状态模式的使用场景 2 案例一2.1 需求2.2 代码实现&#xff08;未使用状态模式&#xff09;2.3 代码实现&#xff08;状态模式&#xff09; 3 案例二3.1 …

基于python+vue网络相册设计与实现flask-django-nodejs-php

网络相册设计与实现的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&#xff0…

递归的个人总结

递归函数&#xff08;递去、回归&#xff09;是函数不断的调用自己&#xff1b; 可以按照如下来理解&#xff1a;func1中调用func2&#xff0c;func2中调用func3; func3函数返回了&#xff0c;继续执行func2中的语句&#xff1b;func2执行完了&#xff0c;继续执行func1之后的…

备考ICA----Istio实验6---流量镜像 Traffic Mirroring 实验

备考ICA----Istio实验6—流量镜像 Traffic Mirroring 实验 流量镜像功能可以将生产的流量镜像拷贝到测试集群或者新的测试版本中&#xff0c;在不影响实际生产环境的情况下&#xff0c;测试具有实际生产流量的服务&#xff0c;帮助减低版本变更的风险。也可以用在不同集群间的…

定制 Elasticsearch 镜像

安装ik分词器 下载ik分词器 下载地址&#xff1a;https://github.com/infinilabs/analysis-ik/releases Dockerfile FROM docker.elastic.co/elasticsearch/elasticsearch:8.12.2 COPY ./elasticsearch-analysis-ik-8.12.2.zip /opt/ RUN bin/elasticsearch-plugin instal…

如何在 Odoo 17 的 齿轮菜单⚙️ 中添加新菜单

在 Odoo 中&#xff0c;齿轮菜单是一个重要组件&#xff0c;允许用户访问与系统内不同模型和功能相关的各种配置选项和设置。它通常由位于用户界面左上角的齿轮或齿轮图标表示。下图显示了 "sale.order "模型的齿轮菜单。 默认情况下&#xff0c;我们在 CogMenu 中提…

当我想用ChatGPT-Next-Web来套壳Azure OpenAI Service时

使用Cloudflare worker来代理Azure OpenAI API&#xff0c; 并将其转换为兼容OpenAI的API 一直没能搞定OpenAI的订阅&#xff0c; 就因为没有搞定国外的信用卡&#xff0c; 所以就一直使用GPT-3.5来处理日常的文字生成工作&#xff0c; 例如写文档&#xff0c; 生成一些简单的脚…

前言:为什么C语言最适合编程入门?

前言&#xff1a;为什么C语言最适合编程入门&#xff1f; C语言被认为最适合编程入门的原因主要有以下几点&#xff1a; 基础且强大&#xff1a;C语言是一种基础且强大的编程语言。它提供了对底层硬件的直接访问&#xff0c;让初学者能够更好地理解计算机的工作原理&#xff0…

使用jupyter-Python进行模拟股票分析

tushare财经数据接口包 pip install tushare作用&#xff1a;提供相关指定的财经数据 需求&#xff1a;股票分析 使用tushare包获取某股票的历史行情数据 输出该股票所有收盘比开盘上涨3%以上的日期 输出该股票所有开盘比前日收盘跌幅超过2%的日期 假如我从2015年1月1日开…

二、阅读器的开发(初始)-- 2、阅读器开发

1、epubjs核心工作原理 1.1 epubjs的核心工作原理解析 epub电子书&#xff0c;会通过epubjs去实例化一个Book对象&#xff0c;Book对象会对电子书进行解析。Book对象可以通过renderTo方法去生成一个Rendition对象&#xff0c;Rendition主要负责电子书的渲染&#xff0c;通过R…

蓝桥杯第二天刷真题

public class Main {public static void main(String [] args) { //存大数方法String s"202320232023"; // 定义一个字符串&#xff0c;它将被转换为结束循环的数值long end Long.parseLong(s);long sum 0;long primarynumber 1;for(int i 1; i<end; i) {long …

C语言基础知识复习(考研)

&#xff08;1&#xff09;C语言文件操作 1 什么是文件 文件有不同的类型&#xff0c;在程序设计中&#xff0c;主要用到两种文件&#xff1a; (1)程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行这种文件的内容是程序代码。 (2)数据文件。文件的内容不是…

Blender小:图片转mesh,并展UV

其实就这么一个插件&#xff1a;Image2Mesh https://github.com/kedepot/i2m-std blender加载完图片之后点这个就行 到了这一步还不行如果直接放到unity中使用的话&#xff0c;添加材质和贴图之后每一个小块都是独立的区域来展示贴图&#xff0c;所以需要展UV

python_BeautifulSoup爬取汽车评论数据

爬取的网站&#xff1a; 完整代码在文章末尾 https://koubei.16888.com/57233/0-0-0-2 使用方法&#xff1a; from bs4 import BeautifulSoup 拿到html后使用find_all()拿到文本数据&#xff0c;下图可见&#xff0c;数据标签为&#xff1a; content_text soup.find_all…

Linux:rpm部署Jenkins(1)

1.获取Jenkins安装包 我这里使用的是centos7系统&#xff0c;ip为&#xff1a;192.168.6.6 2G运存 连接外网 Jenkins需要java环境&#xff0c;java的jdk包你可以去网上下载离线包&#xff0c;或者直接去yum安装&#xff0c;我这里使用的是yum安装 再去获取Jenkins的rpm包…

JavaScript高级(十七)---异步函数await-async

异步函数 async function 异步函数的内部代码执行过程和普通的函数是一致的&#xff0c;默认情况下也是会被同步执行。 async function foo() {console.log("foo function start~")console.log("内部的代码执行1")console.log("内部的代码执行2&quo…

项目风采展示【车酷-传祺】

桌面功能介绍&#xff1a; 1&#xff1a;支持本地音乐控制 2&#xff1a;蓝牙音乐控制 3&#xff1a;三方音乐控制

课时72:流程控制_for循环_嵌套循环

1.1.1 嵌套循环 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 这里的嵌套实践&#xff0c;与选择语句的嵌套实践基本一致&#xff0c;只不过组合的方式发生了一些变化。常见的组合样式如下&#xff1a;for嵌套for语句for …