C語言-數組:數組(定義、初始化、元素的訪問、遍歷)內存和內存地址、數組的查找算法和排序算法;

本章概述思維導圖:

C語言數組

在C語言中,數組是一種固定大小的、相同類型元素的有序集合,通過索引(下標)訪問。

數組

數組:是一種容器,可以用來存儲同種數據類型的多個值;

數組特點:

1.連續的空間;

2.一旦定義了,長度不可變換;

代碼示例:

#include <stdio.h>
int main()
{int arr1[3];//定義了數組:arr1;用來存儲3個int類型的數據;char arr2[3];//定義了數組:arr2;用來存儲3個char類型的數據;float arr3[3];//定義了數組:arr3;用來存儲3個float類型的數據;return 0;
}

數組的初始化

數組的初始化:定義數組的時候,第一次給數組賦值;

數組初始化細節:

長度省略:數組值的個數就是數組的長度;

長度未省略:數組的個數<=長度;

代碼示例:

#include <stdio.h>
int main()
{//長度未省略:數組的個數<=長度int arr1[3]={1,22,333};//定義了數組:arr1;用來存儲int類型的數據;char arr2[3]={'i','j','k'};//定義了數組:arr2;用來存儲char類型的數據;float arr3[3]={1.25,6.68,0.888};//定義了數組:arr3;用來存儲float類型的數據;//長度省略:數據值的個數就是數組的長度int arr4[]={8,9,100};//定義了數組:arr4;用來存儲int類型的數據;char arr5[]={'a','b','c'};//定義了數組:arr5;用來存儲char類型的數據;float arr6[]={154.25,9.68,3.888};//定義了數組:arr6;用來存儲float類型的數據;return 0;
}

數組中元素的訪問--獲取和修改

索引:索引就是數組的一個編號,也叫做:角標、下標、編號;

特點:從0開始的,連續+1,不間斷;

數組的獲取:

數組的修改:

索引細節:

1. 索引的范圍:最小索引0;最大索引:數組長度-1;

2. 越界訪問:C語言不檢查數組邊界,越界訪問會導致未定義行為(如崩潰或數據損壞)

代碼示例:

#include <stdio.h>
int main()
{//數組的初始化int arr1[3]={1,22,333};//定義了數組:arr1;用來存儲3個int類型的數據;char arr2[3]={'i','j','k'};//定義了數組:arr2;用來存儲3個char類型的數據;float arr3[3]={1.25,6.68,0.888};//定義了數組:arr3;用來存儲3個float類型的數據;//數組元素的獲取和修改arr1[0]=4;//將數組arr1中第一個元素:1 修改為:4;arr2[1]='a';//將數組arr2中第二個元素:j 修改為:a;arr3[2]=3.1415;//將數組arr3中第三個元素:0.888 修改為:3.1415return 0;
}

數組遍歷

在C語言中,數組遍歷是指依次訪問數組中的每一個元素,通常使用循環結構(如?forwhile)實現。

代碼示例:

#include <stdio.h>
int main()
{//數組的初始化int arr1[3]={1,22,333};//定義了數組:arr1;用來存儲3個int類型的數據;char arr2[3]={'i','j','k'};//定義了數組:arr2;用來存儲3個char類型的數據;float arr3[3]={1.25,6.68,0.88};//定義了數組:arr3;用來存儲3個float類型的數據;//遍歷數組arr1for(int i=0;i<3;i++)printf("arr1[%d]=%d\t",i,arr1[i]);putchar('\n');//遍歷數組arr2for(int i=0;i<3;i++)printf("arr2[%d]=%c\t",i,arr2[i]);putchar('\n');//遍歷數組arr1for(int i=0;i<3;i++)printf("arr1[%d]=%.2f\t",i,arr3[i]);putchar('\n');return 0;
}//代碼運行結果:
arr1[0]=1	arr1[1]=22	arr1[2]=333	
arr2[0]=i	arr2[1]=j	arr2[2]=k	
arr1[0]=1.25	arr1[1]=6.68	arr1[2]=0.88	

內存和內存地址

內存和內存地址

內存:軟件程序在運行時,用來臨時存儲數據的,操作系統會把內存按照字節劃分為N多個小格子

內存地址:內存中每一個小格子的編號(一格小格子1字節(8位));

內存地址作用:快速的管理內存空間;

通常用十六進制表示

C語言中的內存地址:

示例:

int 類型--->4個字節? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 首地址-->找到第一個小格子;根據4個字節

char類型-->1個字節? ? ? ? ? ? ? ? ? ? ? ? ? ? ?首地址-->找到第一個小格子;根據1個字節

取地址占位符:%p;

代碼示例:

#include <stdio.h>
int main()
{	int num1=0;printf("num1的地址為:%p\n",&num1);int arr1[3]={1,22,333};printf("arr1的地址為:%p\n",arr1);return 0;
}//代碼運行結果:
num1的地址為:0x7ffeaba095d8
arr1的地址為:0x7ffeaba095dc

內存地址的規則:每個內存單元有唯一地址:無論是代碼、數據還是棧/堆空間,每個字節都有一個獨立的地址。

數組在內存中的深入刨析

數組名是首地址,索引在輸出數組的地址時不需要取地址符:&;

代碼示例:

#include <stdio.h>
int main()
{	int arr1[3]={1,22,333};printf("arr1的地址為:%p\n",arr1);return 0;
}//代碼運行結果:
arr1的地址為:0x7ffeaba095dc

數組的地址是連續的:數組元素的地址按類型大小連續排列;

數組名【索引】:地址偏移n個單位;

單位:根際數據類型相關;int4個字節、char1個字節……

代碼示例:

#include <stdio.h>
int main()
{int arr1[3]={1,22,333};printf("arr1[0]:%p\tarr1[1]:%p\tarr1[2]:%p\t\n",&arr1[0],&arr1[1],&arr1[2]);return 0;
}//代碼運行結果:
arr1[0]:0x7ffc1d13880c	arr1[1]:0x7ffc1d138810	arr1[2]:0x7ffc1d138814	

數組的常見問題

數組作為函數的形參,要注意什么?

數組作為函數的形參實現上傳遞的是數組的首地址,如果是要做函數中對數組進行遍歷的話,記得一定要把數組的長度一起傳遞過去;

在主函數定義處中:arr表示的是完整的數組;

在函數中:arr只是一個變量,用來記錄數組的首地址;

數組的索引越界:數組的最小索引為:0 ;數組的最大索引為:長度-1;

代碼示例:

#include <stdio.h>
void arr_put(int arr[],int len);//函數聲明
int main()
{int arr1[]={1,2,3,4};int len1=sizeof(arr1)/sizeof(int);arr_put(arr1,len1);return 0;
}
void arr_put(int arr[],int len)//函數封裝:遍歷數組
{for(int i=0;i<len;i++){printf("arr[%d]=%d\t",i,arr[i]);}putchar('\n');
}//代碼運行結果:
arr[0]=1	arr[1]=2	arr[2]=3	arr[3]=4	

數組的查找算法

基本查找(順序查找):就是從數組的0索引開始,依次往后查找。找到了返回數據對應索引,如果沒有找到,就會返回-1;

代碼示例:

#include <stdio.h>
void arr_put(int arr[],int len);//函數聲明
int chazhao_arr(int arr[],int len,int num);//函數聲明:查找算法
int main()
{int arr1[]={1,2,3,4};int len1=sizeof(arr1)/sizeof(int);arr_put(arr1,len1);int num1=0;printf("輸入要查找的數據:\n");scanf("%d",&num1);int a=chazhao_arr(arr1,len1,num1);if(a != -1){printf("查找的數據對應索引為:%d\n",a);}else printf("未查找到數據\n");return 0;
}
void arr_put(int arr[],int len)//函數封裝:遍歷數組
{for(int i=0;i<len;i++){printf("arr[%d]=%d\t",i,arr[i]);}putchar('\n');
}
int chazhao_arr(int arr[],int len,int num)//函數封裝:查找算法
{for(int i=0;i<len;i++){if(arr[i] == num){return i;}}return -1;
}//代碼第一次運行結果:
arr[0]=1	arr[1]=2	arr[2]=3	arr[3]=4	
輸入要查找的數據:
2
查找的數據對應索引為:1//代碼第二次運行結果:
arr[0]=1	arr[1]=2	arr[2]=3	arr[3]=4	
輸入要查找的數據:
6
未查找到數據

數組的排序算法

冒泡排序算法:相鄰的數據兩兩比較,小的放前面,大的放后面

1.相鄰的元素兩兩比較,大的放右邊,小的放左邊

2.第一輪結束,最大值已經找到,在數組的最右邊

3.第二輪結束只要在剩余的元素找最大值就可以

4.第三輪結束只要在剩余的元素找最大值就可以

5. ……

6. 全部排序完

細節:如果數組中有N個數據,總共我們z只用執行N-1輪的比較代碼就可以

?第一輪比較完畢后,最大值就已經確定,第二輪可以少循環一次,后面以此類推

代碼示例:

#include <stdio.h>
void arr_put(int arr[],int len);//函數聲明
void arr_min_max(int arr[],int len);//函數聲明:排序算法從小到大排序
int main()
{int arr1[5]={88,66,775,958,12};//定義數組int len1=sizeof(arr1)/sizeof(int);arr_put(arr1,len1);//數組遍歷arr_min_max(arr1,len1);//數組排序arr_put(arr1,len1);//數組遍歷
}
void arr_put(int arr[],int len)//函數封裝:遍歷數組
{for(int i=0;i<len;i++){printf("arr[%d]=%d\t",i,arr[i]);}putchar('\n');
}
void arr_min_max(int arr[],int len)//函數封裝:排序算法從小到大排序
{for(int i=0;i<len-1;i++)//比較的輪數,減一是因為最后一次不需要比較{int temp=0;for(int j=0;j<len-1-i;j++)//相鄰比較,減i減1是因為每輪比較都以排除一個數據,提升效率{if(arr[j]>arr[j+1]){temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}
}//代碼運行結果:
arr[0]=88	arr[1]=66	arr[2]=775	arr[3]=958	arr[4]=12	
arr[0]=12	arr[1]=66	arr[2]=88	arr[3]=775	arr[4]=958	

選擇排序算法:從0索引開始,拿著每一個索引上的元素跟后面的元素依次比較,大的放前面,小的放后面,以此類推;

代碼示例:

#include <stdio.h>
void arr_put(int arr[],int len);//函數聲明
void arr_max_min(int arr[],int len);//函數封裝:選擇排序從大到小排序
int main()
{int arr1[5]={88,66,775,958,12};int len1=sizeof(arr1)/sizeof(int);arr_put(arr1,len1);arr_max_min(arr1,len1);arr_put(arr1,len1);
}
void arr_put(int arr[],int len)//函數封裝:遍歷數組
{for(int i=0;i<len;i++){printf("arr[%d]=%d\t",i,arr[i]);}putchar('\n');
}void arr_max_min(int arr[],int len)//函數封裝:選擇排序從大到小排序
{for(int i=0;i<len-1;i++){int temp=0;for(int j=i+1;j<len;j++){if(arr[i]<arr[j]){temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}}
}//代碼運行結果:
arr[0]=88	arr[1]=66	arr[2]=775	arr[3]=958	arr[4]=12	
arr[0]=958	arr[1]=775	arr[2]=88	arr[3]=66	arr[4]=12	

數組練習題

通過本章的學習,接下來就是進入實戰環節,小伙伴們開始攻略C語言數組(冒泡/選擇排序和查找算法)練習題啦!小伙伴們先嘗試自己敲代碼敲完后在來查看代碼示例呦!

數組(求最值)

題目:已知數組元素為:{33,5,22,44,55},請找出數組中最大值并打印在控制臺上

#include <stdio.h>
int max_out(int arr[],int len);
int main()
{int arr[5]={33,5,22,44,55};int len=sizeof(arr)/sizeof(int);int max=max_out(arr,len);printf("max=%d\n",max);return 0;
}
int max_out(int arr[],int len)//函數封裝:找最值
{int max=0;for(int i=0;i<len;i++){if(max<arr[i]){max=arr[i];}}return max;
}

數組(求和)

題目:生成10個1~100之間的隨機數存入數組

1.求出所有數據的平均數

2.統計有多少個數據比平均值小

代碼示例:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int sum_out(int arr[]);
int main()
{srand(time(NULL));//生成種子int arr[10];for(int i=0;i<10;i++){arr[i]=rand()%100+1;printf("arr[%d]=%d\n",i,arr[i]);}int sum=sum_out(arr);printf("和為:%d\n",sum);int count=sum/10;printf("平均值為:%d\n",count);int count1=0;//統計比平均值小的變量;for(int i=0;i<10;i++){if(arr[i]<count){printf("%d比平均值小\n",arr[i]);count1++;}}printf("一共有%d個數字比平均值小\n",count1);return 0;
}
int sum_out(int arr[])//求數組的和
{int sum=0;for(int i=0;i<10;i++){sum+=arr[i];}return sum;
}

數組(反轉數組)

題目:鍵盤錄入五個數據并存入數組,完成以下需求

1.遍歷數組

2.反轉數組

3.再次遍歷

代碼示例:

#include <stdio.h>
void bianli_arr(int arr[],int len);
int main()
{printf("輸入五個數據\n");int arr[5];for(int i=0;i<5;i++){scanf("%d",&arr[i]);}bianli_arr(arr,5);int temp=0;for(int i=0;i<5/2;i++){temp=arr[i];arr[i]=arr[4-i];arr[4-i]=temp;}bianli_arr(arr,5);return 0;
}
void bianli_arr(int arr[],int len)
{for(int i=0;i<len;i++){printf("arr[%d]=%d ",i,arr[i]);}printf("\n");	
}

數組(替換)

題目:定義一個5個成員整型數組data[]={10,22,88,66,88},將所有的88替換成666

代碼示例:

#include<stdio.h>
int main()
{int arr[]={10,22,88,66,88};int len=sizeof(arr)/sizeof(int);for(int i=0;i<len;i++){if(arr[i] == 88){arr[i]=666;}}for(int i=0;i<len;i++){printf("%d ",arr[i]);}return 0;
}

數組(統計)

題目:定義一個5個成員整型數組data[]={10,22,88,66,88},統計88的個數

代碼示例:

#include<stdio.h>
int main()
{int arr[]={10,22,88,66,88};int len=sizeof(arr)/sizeof(int);int count=0;for(int i=0;i<len;i++){if(arr[i] == 88){count++;}}printf("88出現的個數有%d個\n",count);return 0;
}

數組(正向/逆向排序)

題目:定義一個5個成員整型數組,從鍵盤上獲取5個整數,輸出數組所有成員(正向和逆向);輸出最大值,最小值和平均值;

代碼示例:

#include<stdio.h>
void arr_bianli(int arr[],int len);
int main()
{int arr[5];printf("輸入五個數:\n");for(int i=0;i<5;i++){scanf("%d",&arr[i]);}/*從大到小排序*/for(int i=0;i<4;i++){for(int j=0;j<4-i;j++){if(arr[j]<arr[j+1]){arr[j]=arr[j+1]^arr[j];arr[j+1]=arr[j]^arr[j+1];arr[j]=arr[j]^arr[j+1];}}}arr_bianli(arr,5);/*從小到大排序*/for(int i=0;i<4;i++){for(int j=0;j<4-i;j++){if(arr[j]>arr[j+1]){arr[j]=arr[j+1]^arr[j];arr[j+1]=arr[j]^arr[j+1];arr[j]=arr[j]^arr[j+1];}}}arr_bianli(arr,5);printf("最小值為:%d\t最大值為:%d\n",arr[0],arr[4]);int sum=0;for(int i=0;i<5;i++){sum+=arr[i];}printf("平均值為:%d\n",sum/5);return 0;
}
void arr_bianli(int arr[],int len)//函數封裝:循環打印遍歷數組
{for(int i=0;i<len;i++){printf("%d ",arr[i]);}printf("\n");
}

制作不易!喜歡的小伙伴給個小贊贊!喜歡我的小伙伴點個關注!有不懂的地方和需要的資源隨時問我喲!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91399.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91399.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91399.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

河南萌新聯賽2025第(二)場:河南農業大學(補題)

文章目錄前言A.約數個數和整除分塊(相當于約數求和)相關例題&#xff1a;取模B.異或期望的秘密二進制的規律相關例題累加器小藍的二進制詢問乘法逆元1. 概念2.基本定義3.費馬小定理1.定理內容2.重要推論D.開羅爾網絡的備用連接方案E.咕咕嘎嘎!!!(easy)I.猜數游戲(easy)K.打瓦M.…

常見中間件漏洞

一、TomcatTomcat put方法任意文件寫入漏洞環境搭建&#xff0c;啟動時端口被占用就改yml配置文件&#xff0c;改成8081端口。(我這里是8080)cd vulhub-master/tomcat/CVE-2017-12615 docker-compose up -d 去抓包&#xff0c;改成put提交。下面的內容是用哥斯拉生成的木馬文件…

27.(vue3.x+vite)以pinia為中心的開發模板(監聽watch)

效果截圖 代碼實現: HelloWorld.vue <template><div style="padding: 20px">介紹:<br />1:使用統一的 watch 來監聽store的值。<br

Jenkins 詳解

Jenkins 是一個開源的持續集成和持續交付(CI/CD)工具&#xff0c;用于自動化軟件開發過程中的構建、測試和部署階段。以下是關于 Jenkins 的詳細介紹&#xff1a; 1. Jenkins 核心概念 1.1 持續集成(CI) 開發人員頻繁地將代碼變更提交到共享倉庫每次提交都會觸發自動構建和測試…

動態配置實現過程

查看DCCValueBeanFactory類的完整實現&#xff0c;了解動態配置的實現過程 動態配置實現過程 1. 自定義注解 使用DCCValue注解標記需要動態配置的字段&#xff0c;格式為key:defaultValue&#xff1a; DCCValue("downgradeSwitch:0") private String downgradeSw…

【大模型理論篇】跨語言AdaCOT

參考&#xff1a;AdaCoT: Rethinking Cross-Lingual Factual Reasoning throughAdaptive Chain-of-ThoughtAdaCoT&#xff08;Adaptive Chain-of-Thought&#xff0c;自適應思維鏈&#xff09;是一項提升大型語言模型&#xff08;LLMs&#xff09;跨語言事實推理能力的新框架。…

vue3項目搭建

前一段時間招聘前端開發,發現好多開發連基本的創建項目都不會,這里總結一下 在Vue 3中,使用Webpack和Vite創建的項目文件結構及語言(JS/TS)的選擇有以下主要區別: 1. 創建方式與文件結構差異 方式一、Webpack(Vue CLI) 創建命令: vue create project-name 典型文件結構…

企業簽名的多種形式

企業簽名有多種形式&#xff0c;可分為企業簽名獨立版、企業簽名穩定版、企業簽名共享版等。每一種形式的企業簽名都有其獨特的特點&#xff0c;其中&#xff1a;  企業簽名獨立版&#xff1a;其特性主要為穩定性較高&#xff0c;使用者可以通過控制APP的下載量來保證APP的穩…

解構遠程智能系統的視頻能力鏈:從RTSP|RTMP協議接入到Unity3D頭顯呈現全流程指南

在人工智能奔騰的2025年&#xff0c;WAIC&#xff08;世界人工智能大會&#xff09;釋放出一個明確信號&#xff1a;視頻能力已經成為通往“遠程智能”的神經中樞。在無人機、四足機器人、遠程施工、巡檢等新興場景中&#xff0c;一套可靠、低延遲、可嵌入頭顯設備的視頻傳輸系…

Less Less基礎

1.lessless是一種動態樣式語言&#xff0c;屬于CSS預處理器的范疇&#xff0c;它擴展了CSS語言&#xff0c;增加了變量&#xff0c;Mixin&#xff0c;函數等特性&#xff0c;使CSS更易維護和擴展。Less既可以在客戶端上運行&#xff0c;也可以借助Node.js在服務端運行。2.Less中…

如何使用 Redis 實現 API 網關或單個服務的請求限流?

使用 Redis 高效實現 API 網關與服務的請求限流 在微服務架構中&#xff0c;對 API 網關或單個服務的請求進行速率限制至關重要&#xff0c;以防止惡意攻擊、資源濫用并確保系統的穩定性和可用性。 Redis 憑借其高性能、原子操作和豐富的數據結構&#xff0c;成為實現請求限流的…

圖片查重從設計到實現(7) :使用 Milvus 實現高效圖片查重功能

使用 Milvus 實現高效圖片查重功能本文將介紹如何利用 Milvus 向量數據庫構建一個高效的圖片查重系統&#xff0c;通過傳入圖片就能快速從已有數據中找出匹配度高的相似圖片。一.什么是圖片查重&#xff1f; 圖片查重指的是通過算法識別出內容相同或高度相似的圖片&#xff0c;…

誘導多能干細胞(iPSC)的自述

自十七年前誘導多能干細胞&#xff08;也稱iPS細胞或iPSC&#xff09;技術出現以來&#xff0c;干細胞生物學和再生醫學取得了巨大進展。人類iPSC已廣泛用于疾病建模、藥物發現和細胞療法開發。新的病理機制已被闡明&#xff0c;源自iPSC篩選的新藥正在研發中&#xff0c;并且首…

基于深度學習的醫學圖像分析:使用DeepLabv3+實現醫學圖像分割

前言 醫學圖像分析是計算機視覺領域中的一個重要應用&#xff0c;特別是在醫學圖像分割任務中&#xff0c;深度學習技術已經取得了顯著的進展。醫學圖像分割是指從醫學圖像中識別和分割出特定的組織或器官&#xff0c;這對于疾病的診斷和治療具有重要意義。近年來&#xff0c;D…

Lombok 字段魔法:用 @FieldDefaults 解鎖“隱身+鎖死”雙重特效

前言 項目里總有這樣一種神秘現象:明明只是幾個字段,卻堆滿 private final,每次都得機械敲上一遍。有的同事一邊敲一邊默念“代碼規范不能丟”,表情嚴肅得像在寫遺囑。可惜,規范雖好,手指遭殃。 于是,Lombok 悄然登場,肩扛簡潔大旗,手握注解神器,@FieldDefaults 正…

小白如何自學網絡安全,零基礎入門到精通,看這一篇就夠了!

小白如何自學網絡安全&#xff0c;零基礎入門到精通&#xff0c;看這一篇就夠了&#xff01; 小白人群想學網安但是不知道從哪入手&#xff1f;一篇文章告訴你如何在4個月內吃透網安課程&#xff0c;掌握網安技術 一、基礎階段 1.了解網安相關基礎知識 了解中華人民共和國網…

前端 vue 第三方工具包詳解-小白版

恭喜你邁入Vue世界&#xff01;&#x1f604; 對于前端小白&#xff0c;掌握這些常用第三方包能極大提升開發效率和項目質量。以下是Vue生態中必備的第三方包及小白友好式用法解析&#xff1a;&#x1f9f1; 一、基礎工具包&#xff08;每個項目必裝&#xff09; 1. Vue Router…

解決mac下git pull、push需要輸入密碼

解決方法&#xff1a; 1.強制配置 SSH 自動加載鑰匙串 編輯 SSH 配置文件 vi ~/.ssh/configHost *AddKeysToAgent yes # 自動將密鑰添加到 ssh-agentUseKeychain yes # 明確使用鑰匙串存儲密碼IdentityFile ~/.ssh/id_rsa # 替換為你的私鑰路徑2.修復 Sh…

內存網格、KV存儲和Redis的概念、使用場景及異同

基本概念 內存網格 (In-Memory Data Grid - IMDG) 內存網格是一種分布式內存數據存儲技術&#xff0c;具有以下特點&#xff1a;分布式架構 數據跨多個服務器節點分布存儲提供線性擴展能力內存優先 主要數據存儲在內存中&#xff0c;提供微秒級訪問延遲支持持久化作為備份企業級…

【C++算法】87.BFS解決最短路徑問題_為高爾夫比賽砍樹

文章目錄題目鏈接&#xff1a;題目描述&#xff1a;解法C 算法代碼&#xff1a;題目鏈接&#xff1a; 675. 為高爾夫比賽砍樹 題目描述&#xff1a; 解法 注意&#xff1a;砍樹要從低到高砍。 砍掉1&#xff0c;從1到5到2 砍掉2&#xff0c;從2到5到3 砍掉3&#xff0c;從3到5…