亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C語(yǔ)言程序設(shè)計(jì)中數(shù)組的有效運(yùn)用

        2020-06-07 01:58:41周亞輝
        電腦知識(shí)與技術(shù) 2020年35期
        關(guān)鍵詞:數(shù)組應(yīng)用

        周亞輝

        摘要:隨著人工智能和計(jì)算機(jī)技術(shù)的不斷發(fā)展,C語(yǔ)言因其獨(dú)特優(yōu)勢(shì)一直被廣泛應(yīng)用。數(shù)組是C語(yǔ)言中常用的數(shù)據(jù)類(lèi)型之一,本文介紹了C語(yǔ)言在程序設(shè)計(jì)中數(shù)組的有效運(yùn)用,首先文章從數(shù)組的排序、插入、刪除和應(yīng)用四個(gè)方面介紹了數(shù)組的各類(lèi)應(yīng)用和編程方法,然后介紹了數(shù)組和指針的關(guān)系,并以處理轉(zhuǎn)置矩陣為例介紹了數(shù)組和指針的聯(lián)合應(yīng)用是如何解決實(shí)際問(wèn)題的。本文所做研究對(duì)C語(yǔ)言的數(shù)組的學(xué)習(xí)和應(yīng)用提供了一定的指導(dǎo)意義。

        關(guān)鍵詞:C語(yǔ)言;數(shù)組;應(yīng)用

        中圖分類(lèi)號(hào):TP311? ? ?文獻(xiàn)標(biāo)識(shí)碼:A

        文章編號(hào):1009-3044(2020)35-0209-02

        開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

        1 引言

        自1972年C語(yǔ)言作為一種獨(dú)立的面向過(guò)程的開(kāi)發(fā)語(yǔ)言問(wèn)世以來(lái),一直作為適應(yīng)于底層開(kāi)發(fā)的通用設(shè)計(jì)語(yǔ)言。因其編譯方式簡(jiǎn)單,低級(jí)存儲(chǔ)器便可處理編譯工作,不需要任何其他編譯環(huán)境,且支持高校程序設(shè)計(jì),多年來(lái)一直被廣大開(kāi)發(fā)者熱衷[1]。其跨平臺(tái)輸出的特點(diǎn),決定了C語(yǔ)言程序可在嵌入式處理器等平臺(tái)中被編譯和使用。與C++和JAVA等面向?qū)ο缶幊痰恼Z(yǔ)言不同,C語(yǔ)言的主要目標(biāo)是實(shí)現(xiàn)簡(jiǎn)易編譯、適應(yīng)低級(jí)存儲(chǔ)器,高編譯效率[2]。

        C語(yǔ)言主要的數(shù)據(jù)類(lèi)型包括:整數(shù)型、字符型、實(shí)型、浮點(diǎn)型、枚舉型、數(shù)組類(lèi)型、結(jié)構(gòu)體類(lèi)型、共用體類(lèi)型、指針類(lèi)型和空類(lèi)型。數(shù)組是一組有序的元素組合序列,為了方便計(jì)算機(jī)進(jìn)行數(shù)據(jù)處理[3],把無(wú)序的元素按照一定的次序有序組織起來(lái)。從數(shù)據(jù)處理角度講,數(shù)組能夠方便解決各類(lèi)復(fù)雜的數(shù)據(jù)處理問(wèn)題。元素是構(gòu)成數(shù)組的基本單位,不同元素通過(guò)順序號(hào)將其順序標(biāo)識(shí)。根據(jù)數(shù)組中元素的類(lèi)型可以分為字符型數(shù)組、數(shù)值型數(shù)組、指針數(shù)組和結(jié)構(gòu)數(shù)組等[4]。

        雖然C語(yǔ)言中數(shù)組類(lèi)型定義比較簡(jiǎn)單,但因其由于范圍廣,在進(jìn)行排序、字符串處理、計(jì)算函數(shù)處理等過(guò)程中,都離不開(kāi)數(shù)組[5]。本文介紹C語(yǔ)言設(shè)計(jì)過(guò)程中,數(shù)組的有效運(yùn)用,對(duì)其在解決實(shí)際問(wèn)題過(guò)程中的方法進(jìn)行總結(jié)。對(duì)于數(shù)組的應(yīng)用,首先要掌握其基本操作,如變量定義、賦值和使用。一般數(shù)組的應(yīng)用可以分為五大類(lèi):排序、插入、刪除、合并、查詢,還可來(lái)存儲(chǔ)大數(shù)據(jù)。

        2 數(shù)組的應(yīng)用

        2.1排序

        排序是程序設(shè)計(jì)中最常見(jiàn)的一種算法,對(duì)于數(shù)組的排序也是C語(yǔ)言編程中的一類(lèi)重要內(nèi)容,排序規(guī)則也是其他應(yīng)用開(kāi)發(fā)的基礎(chǔ)。排序是將無(wú)規(guī)則的數(shù)據(jù)或者字符串等元素,按照固定規(guī)則和順序進(jìn)行大小排列,常見(jiàn)的排序防范有插入法排序、冒泡排序、交換排序法等,其中冒泡排序法是排序的最常用方式。針對(duì)a[0]-a[9]10個(gè)數(shù)字采用冒泡排序法進(jìn)行排序,應(yīng)用案例如下:

        1)數(shù)組元素輸入;a[0]-a[9];

        2)數(shù)組中相鄰元素兩兩比較,數(shù)值大者往前冒泡,數(shù)值小者往后冒泡;

        3)第一輪比較結(jié)束后,用相同方式再進(jìn)行循環(huán)比較。若數(shù)組中元素個(gè)數(shù)有N個(gè),則N-1輪便可將數(shù)組按照從大到小的順序排好。

        若此排序要求,不按照冒泡等排序算法進(jìn)行而用常規(guī)變量解決,需定義10個(gè)變量,且無(wú)法再排序過(guò)程中借助循環(huán)法解決此問(wèn)題。

        2.2插入

        針對(duì)已經(jīng)做好排序工作的數(shù)組,若要在數(shù)組中增加新元素,并且按照原有排序規(guī)則重新組合新數(shù)據(jù),是常見(jiàn)的一類(lèi)數(shù)組操作。數(shù)組插入元素的基本操作步驟如下。

        比較待插入元素X和數(shù)組中末尾元素的大小,若末尾元素大于X,則將X直接插入至數(shù)組末尾,若末尾元素小于X,則一次比較a[0]-a[n-1],直至a[i]>X是,將X插入a[i-1]之后,a[i]之前,同時(shí)將其后的元素逐一后移,增加其序號(hào)值。

        在數(shù)組元素插入過(guò)程中,常見(jiàn)問(wèn)題是會(huì)出現(xiàn)數(shù)組index越界問(wèn)題,發(fā)生此類(lèi)問(wèn)題的主要原因在于數(shù)組在定義之初,未充分考慮元素插入問(wèn)題,插入新元素后其容量比原有數(shù)組定義元素?cái)?shù)量數(shù)值大。還有常見(jiàn)問(wèn)題是,當(dāng)出現(xiàn)比X大的數(shù)組元素時(shí),未進(jìn)行中段操作,致使插入錯(cuò)誤。

        2.3 刪除

        數(shù)組刪除和數(shù)組插入類(lèi)似。數(shù)組刪除分兩種情況,一類(lèi)是未排序數(shù)組的元素刪除,一類(lèi)是已排序數(shù)組的元素刪除。兩類(lèi)數(shù)組元素的刪除邏輯相同,具體步驟如下:

        1)在鍵盤(pán)中輸入數(shù)組中要?jiǎng)h除的元素;

        2)所輸入元素在數(shù)組中是否存在,如果存在則執(zhí)行刪除操作,如果不存在則忽略此元素;

        3)若數(shù)組本身是已排序數(shù)組,則在數(shù)組刪除元素位置進(jìn)行依次遞補(bǔ),數(shù)組元素總數(shù)減1。

        在刪除數(shù)組元素過(guò)程中,元素漏刪現(xiàn)象較多,一旦輸入元素在數(shù)組中連續(xù)出現(xiàn)時(shí),為了保證刪除動(dòng)作正常進(jìn)行,應(yīng)該在程序中一次刪除多個(gè)元素。其程序邏輯圖如圖1所示。

        2.4 合并

        數(shù)組的合并是對(duì)兩個(gè)已經(jīng)實(shí)現(xiàn)排序的數(shù)組重新合并后組成新數(shù)組的過(guò)程,合并完成后的數(shù)組仍然要有序。

        2.5 查詢

        常規(guī)的數(shù)組元素查詢方法一般是根據(jù)輸入元素從數(shù)組中每個(gè)元素逐一查找,直至查詢到元素為止,若數(shù)組中查找不到被查元素,則程序結(jié)束。此種查找方式查詢效率較低,假設(shè)數(shù)組中存在500個(gè)元素且被查元素在數(shù)組末尾,則需要進(jìn)行499次比較才能得到最終結(jié)果。按照概率計(jì)算,數(shù)組元素的搜索至少需要250次方可完成比較。折半法是常用的數(shù)組元素查找方法,其查找效率比正常查找效率高、速度快。例如存在數(shù)組,其元素?cái)?shù)量為9,分別為1,2,3,7,11,16,18,19,22,若輸入3,查找3是否在數(shù)組中,步驟如下:

        1)首先找出數(shù)組中位置居中的數(shù),由于數(shù)組已經(jīng)按照從小到大順序排序。中位數(shù)為11。

        2)比較3和11的大小,若前者小于后者,則在全班段中(即a[1]-a[5]中)尋找與3相同的元素。

        3)根據(jù)以上邏輯繼續(xù)在a[1]-a[5]中尋找,再次取中位數(shù),a[3],恰好a[3]=3,因此,通過(guò)兩步便得到了最終想要的結(jié)果。在查找效率上有了很大提升。若數(shù)組中數(shù)組元素的含量為int(log2n)+1。

        3 數(shù)組與指針

        數(shù)組和指針在C語(yǔ)言中是聯(lián)系最緊密的兩種數(shù)據(jù)類(lèi)型,對(duì)于數(shù)組的處理,往往借助指針的手段實(shí)現(xiàn)。在具體程序設(shè)計(jì)中,數(shù)組和指針的關(guān)系很容易被混淆。具體來(lái)講,指針是用來(lái)存放具體變量之地址的變量。變量中保存了其他變量的地址,根據(jù)對(duì)變量地址的訪問(wèn)間接實(shí)現(xiàn)對(duì)變量的訪問(wèn)。

        3.1指針和一維數(shù)組

        可借助數(shù)組元素的指針實(shí)現(xiàn)指針和一維數(shù)組的關(guān)聯(lián),也就是通過(guò)定義數(shù)組元素的指針,并將其指向一維數(shù)組的第一個(gè)元素。假設(shè)p是已經(jīng)被定義的指向整形數(shù)組的指針,且已被賦值,使其指向數(shù)組元素的第一個(gè)元素,則p+1便指向數(shù)組的第二個(gè)元素。

        3.2指針和多維數(shù)組

        多維數(shù)組和指針的關(guān)系比較復(fù)雜,其使用方法也相對(duì)靈活,這樣在一定程度上增加了編程的復(fù)雜性。本文以二維數(shù)組為例,介紹指針和其關(guān)系。首先定義int b[3][4] = {{0,2,4,6},{1,3,5,7},{7,8,10,11}},由于二維數(shù)組是指由兩個(gè)一維數(shù)組組合而成的,a數(shù)組含有3個(gè)行和4個(gè)列,其三個(gè)行可以分別表示為a[0],a[1],a[2],每個(gè)一維數(shù)組又含有4個(gè)子元素。另外,二維數(shù)組在存儲(chǔ)過(guò)程中是按照行的主順序方法占據(jù)一連串存儲(chǔ)空間的,因此C語(yǔ)言通過(guò)建立二維數(shù)組和指針的關(guān)系,除使用指針指向數(shù)組元素外,還可采用數(shù)組指針和指針數(shù)組兩種方式。

        (1)數(shù)組的指針。數(shù)組的指針可以是一個(gè)指向多維或者一維的指針,定義數(shù)組指針后,可以對(duì)其復(fù)制,并以此在數(shù)組和指針之間建立起關(guān)聯(lián)關(guān)系。例如int(*)p[4]=a,定義了p為數(shù)組指針,并將其賦值為數(shù)組a。

        (2)指針數(shù)組。數(shù)組的元素可以為整數(shù),也可以為浮點(diǎn)型數(shù)據(jù)或字符類(lèi)數(shù)據(jù)。故數(shù)組的元素種類(lèi)可以是多種多樣的,因此數(shù)組的元素類(lèi)型也可以為指針類(lèi)型。例如定義int*p[3] = {b[0],b[1],b[2]},此種形式表示定義了包含有3個(gè)整數(shù)型指針的數(shù)組。

        具體應(yīng)用過(guò)程中,為了不斷優(yōu)化C語(yǔ)言的程序,進(jìn)而提升程序的運(yùn)轉(zhuǎn)效率,在程序中會(huì)充分利用數(shù)組和指針的關(guān)系,借助指針實(shí)現(xiàn)對(duì)數(shù)組元素的間接訪問(wèn)。例如通過(guò)C語(yǔ)言編程的方式實(shí)現(xiàn)對(duì)4*4矩陣的轉(zhuǎn)置操作等。在C語(yǔ)言中可借助二維數(shù)組實(shí)現(xiàn)對(duì)矩陣的存儲(chǔ),并可采用相關(guān)算法實(shí)現(xiàn)矩陣的轉(zhuǎn)置。使用指針實(shí)現(xiàn)對(duì)數(shù)組元素的引用首先需要將數(shù)組和指針之間建立起關(guān)聯(lián)關(guān)系。具體程序?qū)崿F(xiàn)如下所示:

        #include

        void main(){

        void move(int(*q)[3];//對(duì)move函數(shù)進(jìn)行定義,并聲明其參數(shù)類(lèi)型為數(shù)組指針

        int i,a[3][3] = {1,2,3,4,5,6,7,8,9};

        int (*p)[3] = a;//定義數(shù)組類(lèi)型的指針

        move (p);

        for(int i=0;i<3;i++)//將轉(zhuǎn)至矩陣輸出

        printf(“%d %d %d\n”,a[i][0],a[i][1],a[i][2]);

        }

        void move (int (*q)[3])

        {

        int j,k,n;

        for(j=0;j<3;j++){

        for(k=0;k<3;k++){

        n = *(*(q+j)+k);

        *(*(q+j)+k) = *(*q+k)+j);

        *(*q+k)+j) = n;

        }

        }

        }

        綜上所述,move函數(shù)主要是通過(guò)變量n實(shí)現(xiàn)矩陣中對(duì)角線元素的兩兩置換,這種置換方式是C語(yǔ)言中經(jīng)常使用的編程方法,如數(shù)組排序中也經(jīng)常被使用。因篇幅限制,move函數(shù)的具?體實(shí)現(xiàn)方式不再贅述。指針和數(shù)組是C語(yǔ)言學(xué)習(xí)過(guò)程的重中之重,也是C語(yǔ)言學(xué)習(xí)過(guò)程中的難點(diǎn)之一,若不能充分理解數(shù)組和指針的相互關(guān)系,便無(wú)法充分借助C語(yǔ)言便利的編程方法解決實(shí)際問(wèn)題,C語(yǔ)言的實(shí)際效能便大打折扣。

        4 結(jié)論

        隨著人工智能和計(jì)算機(jī)技術(shù)的飛速發(fā)展,各類(lèi)芯片被不斷開(kāi)發(fā)出來(lái),隨之嵌入式應(yīng)用也越來(lái)越被廣泛應(yīng)用,C語(yǔ)言作為開(kāi)發(fā)的最基礎(chǔ)類(lèi)語(yǔ)言,引起具有開(kāi)發(fā)簡(jiǎn)便、編譯速度快、入門(mén)快且對(duì)編譯器的存儲(chǔ)能力要求不高等問(wèn)題,也越來(lái)越被受到重視。

        數(shù)組作為C語(yǔ)言中應(yīng)用最為廣泛的數(shù)據(jù)類(lèi)型之一,和鏈表、指針等關(guān)系緊密,因其具有數(shù)據(jù)規(guī)律性存儲(chǔ)的特點(diǎn),其在編程中時(shí)長(zhǎng)被用到。本文總結(jié)了C語(yǔ)言數(shù)組的各類(lèi)數(shù)據(jù)處理方式和C語(yǔ)言中數(shù)組和指針的關(guān)系,介紹了數(shù)組和指針的關(guān)系,為C語(yǔ)言學(xué)習(xí)過(guò)程中數(shù)組的應(yīng)用提供了借鑒和指導(dǎo)意義。

        參考文獻(xiàn):

        [1] 沈逸飛,任春龍,胡云飛,等.淺析C語(yǔ)言、Java、Python的數(shù)組合并方法[J].電腦知識(shí)與技術(shù),2020,16(3):78-82.

        [2] 馬振嬰. C語(yǔ)言程序設(shè)計(jì)課程指針的教學(xué)設(shè)計(jì)[J].科教導(dǎo)刊, 2019 (7):111-112.

        [3] 常歡,羅奇鳴,李薛劍,等.Alias Analysis Algorithm for C Programs Based on a Stack Memory Model[J].小型微型計(jì)算機(jī)系統(tǒng),2019, 40(2):353-358.

        [4] 張樂(lè), 楊立. 基于問(wèn)題引導(dǎo)法的C語(yǔ)言一維數(shù)組插入算法教學(xué)過(guò)程分析[J]. 現(xiàn)代計(jì)算機(jī)(專(zhuān)業(yè)版), 2018, 621(21):64-67+71.

        [5] 李凌.C語(yǔ)言的教學(xué)設(shè)計(jì)——基于布盧姆教育目標(biāo)分類(lèi)理論視角[J].柳州職業(yè)技術(shù)學(xué)院學(xué)報(bào),2018,18(4):76-80.

        【通聯(lián)編輯:李雅琪】

        猜你喜歡
        數(shù)組應(yīng)用
        JAVA稀疏矩陣算法
        JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
        辨析指針數(shù)組與數(shù)組指針
        Excel數(shù)組公式在林業(yè)多條件求和中的應(yīng)用
        多媒體技術(shù)在小學(xué)語(yǔ)文教學(xué)中的應(yīng)用研究
        考試周刊(2016年76期)2016-10-09 08:45:44
        分析膜技術(shù)及其在電廠水處理中的應(yīng)用
        科技視界(2016年20期)2016-09-29 14:22:00
        GM(1,1)白化微分優(yōu)化方程預(yù)測(cè)模型建模過(guò)程應(yīng)用分析
        科技視界(2016年20期)2016-09-29 12:03:12
        煤礦井下坑道鉆機(jī)人機(jī)工程學(xué)應(yīng)用分析
        科技視界(2016年20期)2016-09-29 11:47:01
        氣體分離提純應(yīng)用變壓吸附技術(shù)的分析
        科技視界(2016年20期)2016-09-29 11:02:20
        會(huì)計(jì)與統(tǒng)計(jì)的比較研究
        人体内射精一区二区三区| 99re6在线视频精品免费下载| 欧美精品videosex极品| 九九久久精品国产| 国产日韩AV无码免费一区二区 | 精品国产a∨无码一区二区三区| yy111111少妇影院| 亚洲无毛成人在线视频| 伊人精品久久久久中文字幕| 国产看黄网站又黄又爽又色| 亚洲无码激情视频在线观看| 蜜桃传媒免费在线观看| 樱桃视频影院在线播放| 亚洲日韩乱码中文无码蜜桃臀| 一区二区特别黄色大片| 在线观看 国产一区二区三区 | 97中文字幕在线观看| 三级日本午夜在线观看| 亚洲av免费手机在线观看| 亚洲国产精品日韩av专区| 久久一日本道色综合久久大香 | 精品人妻一区三区蜜桃| 无码一区二区三区在线| 久久久久亚洲AV成人网毛片| 精品人妻一区二区三区不卡毛片| 国产精品免费观看调教网| 国产69精品久久久久9999| 色窝综合网| 亚洲自拍偷拍色图综合| 亚洲另类欧美综合久久图片区| 日日摸夜夜添夜夜添一区二区| 人妻av中文字幕精品久久| 人人妻人人澡人人爽人人精品av | 成全高清在线播放电视剧| 国产一区二区欧美丝袜| 91九色播放在线观看| 中国丰满人妻videoshd| 无码国产精品一区二区免费97| 精品蜜臀国产av一区二区| 97久久国产亚洲精品超碰热| 精品性高朝久久久久久久|