C語言二維陣列超細講解 - 有解無憂

文章推薦指數: 80 %
投票人數:10人

這種理解方法在資料初始化和用指標表示時顯得很方便,. 在C語言中,二維陣列中元素排列的順序是按行存放的 ... 菜單 網站主頁 前端設計 後端開發 .NET開發 軟體設計 企業開發 區塊鏈 移動端開發 軟體工程 資料庫 作業系統 其他 主頁 > 後端開發 > C語言二維陣列超細講解 C語言二維陣列超細講解 2020-09-1415:27:45後端開發   用一維陣列處理二維表格,實際是可行的,但是會很復雜,特別是遇到二維表格的輸入、處理和輸出,   在你絞盡腦汁的時候,二維陣列(一維陣列的大哥)像電視劇里救美的英雄一樣顯現在你的面前,初識陣列的朋友們還等什么呢?讓我們認識一下這位武功高強的大哥吧! 1.雙下標變數   聰明的你一定能夠顧名思義了吧,簡單舉個例子:Array[2][3]   Array是陣列名,后面的兩個方括號內分別放行下標和列下標,這里的行下標和列下標就是所謂的雙下標,   這里的下標規則和一維陣列的下標規則一模一樣:   (1)可以是正的整形變數:     eg:Array[2][3];   (2)可以是字符常量:     eg:Array[‘A’][‘B’] = Array[65][66];(不清楚字符常量的同學可以點擊: https://baike.baidu.com/item/%E5%AD%97%E7%AC%A6%E5%B8%B8%E6%95%B0?fromtitle=%E5%AD%97%E7%AC%A6%E5%B8%B8%E9%87%8F&fromid=103245)   (3)可以是有確定值的運算式:     eg:Array[i+1][j+2]、Array[A[1]][A[2]];   總而言之,這里的下標分別表示行數和列數,      接下來和小編一起感受一下雙下標變數的威力,   上下標變數可以使方程組的計算更簡單,比如:   計算一個二元一次線性方程組: $$\left\{\begin{matrix}7*x_{1}-4*x_{2}=7\\-2*x_{1}+3*x_{2}=-1\end{matrix}\right.$$   它的一般運算式為: $$\left\{\begin{matrix}a11*x1+a12*x2=b1\\a21*x1+a22*x2=b2\end{matrix}\right.$$   我們可以寫出一個該方程組的增廣矩陣: $$\begin{pmatrix}a11&a12&b1\\a21&a22&b2\end{pmatrix}$$   運用克拉默法則可得: $$x1=(b1*a22-b2*a12)/(a11*a22-a21*a12)$$ $$x2=(a11*b2-a21*b1)/(a11*a22-a21*a12)$$   因為矩陣的本質其實就是二維數表,我們可以用二維陣列來表示這個方程組的系數,   我們先定義一個二維數表:a[2][2],和一個一維數表:b[2]   那么a11可以寫成:a[0][0],a12可以寫成 a[0][1],a21,a22同理,則: $$x1=(b[0]*a[1][1]-b[1]*a[0][1])/(a[0][0]*a[1][1]-a[1][0]*a[0][1])$$   x2道理一樣,   所以,通過雙下標變數,我們只需要為a[i][j],b[i]中的元素賦值,便可以輕松解決方程組的問題,   另外,通過雙下標變數來表示一張二維數表,使下標變數的行列下標正好與資料在表格中的位置相對應,形象直觀地反映了二維表格,   2.二維陣列定義   很簡單,由雙下標變數定義的陣列就稱為二維陣列,雙下標變數就是陣列的元素,   二維陣列定義的一般形式和一維陣列大同小異,只是下表中的常量運算式多了一個(維度加一):   [][]   例如:floata[3][4],b[5][6];   這里的float表示二維陣列中元素的型別是單精度浮點型,a、b就是給陣列取的名字,   注意:a[3][4]千萬千萬不要寫成a[3,4]!   上面我們把二維陣列理解成二維圖表,我們也可以將二維陣列看成元素是一維陣列的一維陣列,將維數降低,   比如 a[3][4],我們可以把a看成一個一維陣列,里面有三個元素:a[0]、a[1]、a[2],每個元素又包含4個元素:   a[0]       a[0][1] a[0][2] a[0][3] a[0][4] a[1] a[1][1] a[1][2] a[1][3] a[1][4] a[2] a[2][1] a[2][2] a[2][3] a[2][4]   這種理解方法在資料初始化和用指標表示時顯得很方便,     在C語言中,二維陣列中元素排列的順序是按行存放的,就是說先排列第一行的資料,再排列下第二行的資料,以此類推,如圖:   陣列元素可以出現在運算式中也可以被賦值,例如:b[1][2]=a[1][3]/2,   小編在這里想提醒一下:要嚴格區分定義陣列時用的a[5][6]和參考元素時的 a[5][6]的區別哦! 3.二維陣列的初始化 對二維陣列的初始化有一下幾種辦法: (1)分行給二維陣列賦值   這個方法用到了我們前面講的對二維陣列的降維理解,比如: inta[2][3]={{1,2,3},{4,5,6}};   此陳述句先將第一行元素依次賦值為:1、2、3,然后將第二行元素賦值為:4、5、6,因此說是按行賦值, (2)可以只有一個花括號,按二維陣列元素的排列順序對各元素依次賦值   比如: inta[2][3]={1,2,3,4,5,6}; (3)對部分元素賦初值   ① inta[2][3]={{2},{4}};   此陳述句表示只給第一行第一個元素賦值為2,第二行第一個元素賦值為4,而其他元素都為0,   ② inta[2][3]={{1,2,3}};   此陳述句表示只給第一行三個元素分別賦值為:1、2、3,   ③ inta[2][3]={{},{1,2,3}};   此陳述句表示只給第二行三個元素分別賦值為:1、2、3, (4)定義陣列時對第一維的長度可以不定義,但必須定義第二維的長度   例: inta[][3]={1,2,3,4,5,6};   系統會根據輸入的總個數分配存盤空間,易知這個二維陣列有二行;   再如:   有關二維陣列的知識就講到這里啦,歡迎小伙伴來交流哦!   預告:二維陣列的應用   2020-04-21    17:26:54 轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/36296.html 標籤:C 上一篇:藍橋杯-最大子陣下一篇:C語言----回圈結構2(基礎篇六) 標籤雲 其他(123570)Java(13369)Python(12729)C(7542)區塊鏈(7372)JavaScript(7051)基礎類(6313)AI(6244)腳本語言(PerlPython)(5129)非技術區(4971)Android(4120)MySQL(4012)Linux(3394)C語言(3288)C++語言(3117)Java相關(2746)疑難問題(2699)單片機工控(2479)Web開發(1951)網絡通信(1793)數據庫相關(1767)VB基礎類(1755)PHP(1727)開發(1646)系統維護與使用區(1617).NETCore(1586)基礎和管理(1579)JavaEE(1566)C++(1527)專題技術討論區(1515)Windows客戶端使用(1484)HtmlCss(1466)ASP.NET(1428)Unity3D(1354)VCL組件開發及應用(1353)HTML(CSS)(1220)其他技術討論專區(1200)WindowsServer(1192).NET技术(1165)交換及路由技術(1149)語言基礎算法系統設計(1133)WindowsSDKAPI(1124)界面(1088)JavaSE(1075)Qt(1074)VBA(1048)新手樂園(1016)其他開發語言(947)Go(907)HTML5(901)新技術前沿(898)硬件設計(872)區塊鏈技術(860)網絡編程(857)非技術版(846)一般軟件使用(839)網絡協議與配置(835)Eclipse(790)Spark(750)下載資源懸賞專區(743) 熱門瀏覽 【C++】MicrosoftC++、C和匯編程式檔案 ...... uj5u.com2020-09-1000:57:23more 例外宣告 相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。

例外宣告Item1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept理由如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。

示例//不可...... uj5u.com2020-09-1000:57:27more Codeforces1400ECleartheMultiset(貪心+分治) 鏈接:https://codeforces.com/problemset/problem/1400/E來源:Codeforces思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有0的區間進行減一的操作,操作2:將i位置上的元素歸零。

最終問:將這個陣列的全部元素歸零后操作的最少...... uj5u.com2020-09-1000:57:30more UVA11610【ReversePrime】 本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本思考這一題,它的第一個要求是找出所有$7$位反向質數及其質因數的個數。

我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。

但是,重讀題,我們突然發現反向質數都是$7$位,而將它反過來后的數字卻是$6$位數,這就說明...... uj5u.com2020-09-1000:57:36more 統計區間素數數量 1#pragmaGCCoptimize(2)2#include3usingnamespacestd;4boolisprime[1000000010];5vectorprime;6inlineintgetlist(int...... uj5u.com2020-09-1000:57:47more C/C++編程筆記:C++中的const變數詳解,教你正確認識const用法 1、C中的const1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。

測驗代碼如下:運行結果:2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤),默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾)運行結果:...... uj5u.com2020-09-1000:58:04more 【C++犯錯記錄】VS2019MFC添加資源不懂如何修改資源宏ID 1.首先在資源視圖中,添加資源2.點擊新添加的資源,復制自動生成的ID3.在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換宏宣告4.Ctrl+Shift+F全域搜索,點擊查找全部,然后逐個替換5.為什么使用搜索替換而不使用屬性視窗直...... uj5u.com2020-09-1000:59:11more 【C++犯錯記錄】VS2019MFC不懂的批量添加資源 1.打開資源頭檔案Resource.h,在其中預先定義好宏ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可)2.在資源視圖中選中專案資源,按F7編輯資源檔案,按ID型別相對路徑的形式添加資源。

(別忘了先把檔案拷貝到專案中的res檔案...... uj5u.com2020-09-1001:00:19more C/C++編程筆記:關于C++的參考型別,專供新手入門使用 今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。

參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。

我們可以給一個變數創建N個參考,這N+1個變數共享了同一塊記憶體區域。

(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。

雖然參考是一個物件的別名,但...... uj5u.com2020-09-1001:00:22more 【C/C++編程筆記】從頭開始學習C++:初學者完整指南 眾所周知,C++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。

您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。

C++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由...... uj5u.com2020-09-1001:00:41more 最新发布 在C#中,如何為Praxedo業務事件附件管理器創建SOAP集成? 我們使用Praxedo,需要將其與我們的其他解決方案集成。

他們的API需要使用SOAP,而且還需要MTOM和基本身份驗證。

我們已經成功地與多種服務集成,例如他們的客戶經理。

在客戶... uj5u.com2021-10-1615:47:18more Weblogic14c-webservice-description-name在weblogic-webservice 我使用以下注釋將我的無狀態ejb公開為Web服務:@WebService(name="MyServicePort",portName="MyServicePort",serviceName="MyService",)@SOAPBinding(... uj5u.com2021-10-1615:45:15more 如何在docker環境中安裝yarn? 現在,我正在嘗試在docker上為Rubyonrails創建環境。

我閱讀了一些人撰寫并嘗試過的檔案和一些博客。

但是我遇到了錯誤并且無法完成。

好像我必須在docker環境中安裝yarn,... uj5u.com2021-10-1615:40:43more 如何查詢按日期過濾的活動記錄? 如何從我的資料庫中選擇僅在5月份處于活動狀態的所有學生學生?我在活動記錄檔案中找不到它。

我只設法查詢了5月份創建的學生,而不是所有學生都激活了....Student.where(st... uj5u.com2021-10-1615:39:52more 選擇一個Gradle任務,以便每次運行測驗 當我第一次運行測驗(方法)時,我有這個選單 但是如果我從當前選單再次運行這個測驗(第二次或更多次),它將運行我最近運行的任務。

所以我需要幫助,如何配置IntelliJIdea,使IDEA總是... uj5u.com2021-10-1615:29:58more cypress上的invoke()方法如果呼叫兩次就不作業了 我是Cypress的新手,我想用一個已經存在的網頁來實作一些簡單的測驗。

我對結果有點困惑,因為我呼叫了兩次invoke():第一次是檢查初始值(0%),第二次是設定一個新的值并檢查變化,但是... uj5u.com2021-10-1615:28:48more 用jest和testing-library測驗組件內的一個函式 我是testing-library和jest的新手,我想測驗組件內部的一個函式,它能改變一個輸入的值。

這個組件是一個表單,它的另一個組件是一個輸入。

exportconstForm=()=>{ const[n... uj5u.com2021-10-1615:28:44more TypeScript通用型將所有的特定型別改為另一種型別 我試圖想出一種型別,即接受一個物件并將所有型別為number的鍵設定為string。

下面的方法不起作用:... uj5u.com2021-10-1612:36:47more 當庫存數量為0時,Recyclerview專案顯示空位 當我從回應中得到庫存數量為0時,產品不顯示,但產品位置在網格回收器視圖kotlin中顯示空位。

我將整個串列傳入配接器,然后通過庫存數量過濾。

classProductListAdapter( va... uj5u.com2021-10-1612:36:15more Android-從另一個片段內的回收器視圖呼叫片段 我有一個應用程式(Java),原來有5個部分。

所有這些都是片段,它們由底部導航中的5個圖示訪問。

然而,其中一個部分(Lessons)現在被一個不同的片段所取代,該片段包含一個回收器視圖。

在... uj5u.com2021-10-1612:35:50more 友情鏈接 有解無憂



請為這篇文章評分?