C語言用數(shù)組處理批量數(shù)據(jù)_第1頁
C語言用數(shù)組處理批量數(shù)據(jù)_第2頁
C語言用數(shù)組處理批量數(shù)據(jù)_第3頁
C語言用數(shù)組處理批量數(shù)據(jù)_第4頁
C語言用數(shù)組處理批量數(shù)據(jù)_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C語言用數(shù)組處理批量數(shù)據(jù)整型、字符型、浮點(diǎn)型數(shù)據(jù),都是簡(jiǎn)單的數(shù)據(jù)類型。對(duì)于簡(jiǎn)單的問題,使用這些簡(jiǎn)單的數(shù)據(jù)類型就可以了。對(duì)于有些需要處理的數(shù)據(jù),只用以上簡(jiǎn)單的數(shù)據(jù)類型是不夠的,難以反映出數(shù)據(jù)的特點(diǎn),也難以有效地進(jìn)行處理。比如,一個(gè)班有30個(gè)學(xué)生,毎個(gè)學(xué)生有一個(gè)成績(jī),要求這30名學(xué)生的平均成績(jī)。實(shí)際上這些數(shù)據(jù)是同一個(gè)班級(jí)、同一門課程的成績(jī),它們具有相同的屬性。人們想出這樣的辦法:既然它們都是同一類性質(zhì)的數(shù)據(jù)(都代表一個(gè)班中學(xué)生的成績(jī))就可以用同一個(gè)名字(如s)來代表它們,而在名字的右下角加一個(gè)數(shù)字來表示這是第幾名學(xué)生的成績(jī),例如,可以用s1,s2,s3,…S30代表學(xué)生1、學(xué)生2、學(xué)生3…學(xué)生30,這30個(gè)學(xué)生的成績(jī)。這個(gè)右下角的數(shù)字稱為下標(biāo)。一批具有同名的同屬性的數(shù)據(jù)就組成一個(gè)數(shù)組(array),s就是數(shù)組名。(1)數(shù)組是一組有序數(shù)據(jù)的集合。數(shù)組中各數(shù)據(jù)的排列是有一定規(guī)律的,下標(biāo)代表數(shù)據(jù)在數(shù)組中的序號(hào)。(2)用一個(gè)數(shù)組名(如s)和下標(biāo)(如15)來唯一地確定數(shù)組中的元素,如s[15]就代表第15個(gè)學(xué)生的成績(jī)。(3)數(shù)組中的每一個(gè)元素都屬于同一個(gè)數(shù)據(jù)類型。不能把不同類型的數(shù)據(jù)(如學(xué)生的成績(jī)和學(xué)生的性別)放在同一個(gè)數(shù)組中。C語言規(guī)定用方括號(hào)中的數(shù)字來表示下標(biāo),如用s[15]表示S15,即第15個(gè)學(xué)生的成績(jī)。將數(shù)組與循環(huán)結(jié)合起來,可以有效地處理大批量的數(shù)據(jù)。1定義數(shù)組和引用一維數(shù)組一維數(shù)組是數(shù)組中最簡(jiǎn)單的,它的元素只需要用數(shù)組名加一個(gè)下標(biāo),就能唯一地確定。比如:學(xué)生成績(jī)數(shù)組s就是一維數(shù)組。有的數(shù)組,其元素要指定兩個(gè)下標(biāo)才能唯一確定,如用S2,3表示“第2班第3名學(xué)生的成績(jī)”,其中第1個(gè)下標(biāo)代表班,第2個(gè)下標(biāo)代表班中的學(xué)生序號(hào)。此時(shí),s就是二維數(shù)組。還可以有三維甚至多維數(shù)組,如用S4,2,3表示4年級(jí)2班第3名學(xué)生的成績(jī),這里s就是三維數(shù)組。它們的概念和用法基本上是相同的。定義一維數(shù)組要使用數(shù)組,必須在程序中先定義該數(shù)組,即通知計(jì)算機(jī):由哪些數(shù)據(jù)組成數(shù)組,數(shù)組有多少元素,屬于哪個(gè)數(shù)據(jù)類型。否則計(jì)算機(jī)不會(huì)自動(dòng)地把一批數(shù)據(jù)作為數(shù)組處理。下面是對(duì)數(shù)組的定義:inta[10];它表示定義了一個(gè)整型數(shù)組,數(shù)組名為a,此數(shù)組包含10個(gè)整型元素。定義一維數(shù)組的一般形式為類型說明符數(shù)組名[常量表達(dá)式];說明:(1)數(shù)組名的命名規(guī)則和變量名相同,遵循標(biāo)識(shí)符命名規(guī)則。(2)在定義數(shù)組時(shí),需要指定數(shù)組中元素的個(gè)數(shù),方括號(hào)中的常量表達(dá)式用來表示元素的個(gè)數(shù),即數(shù)組長(zhǎng)度。例如,指定a[10],表示a數(shù)組有10個(gè)元素。注意,下標(biāo)是從0開始的,這10個(gè)元素是a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。按數(shù)組的定義,不存在數(shù)組元素a【10】(3)常量表達(dá)式中可以包括常量和符號(hào)常量,如“inta[3十5];”是合法的。不能包含變量,如“inta[n];”是不合法的。也就是說,C語言不允許對(duì)數(shù)組的大小作動(dòng)態(tài)定義,即數(shù)組的大小不依賴于程序運(yùn)行過程中變量的值。例如,下面這樣定義數(shù)組是不行的:intn;scanf("%d",&n);//企圖在程序中臨時(shí)輸入數(shù)組的大小inta[n];∥數(shù)組長(zhǎng)度性質(zhì)是常量,一定不是變量,它有地址,數(shù)值是可變的,不能變量表示數(shù)組長(zhǎng)度。數(shù)組整體是變量。用“inta[10];”定義了數(shù)組a后,在內(nèi)存中劃出一片存儲(chǔ)空間,存放了一個(gè)有10個(gè)整型元素的數(shù)組。可以看到,用一個(gè)“inta[10];”,就相當(dāng)于定義了10個(gè)簡(jiǎn)單的整型變量,比較方便。2引用一維數(shù)組元素在定義數(shù)組并對(duì)其中各元素賦值后,就可以引用數(shù)組中的元素。應(yīng)注意:只能引用數(shù)組元素而不能一次整體調(diào)用整個(gè)數(shù)組全部元素的值。引用數(shù)組元素的表示形式為數(shù)組名[下標(biāo)]例如,a[0]就是數(shù)組a中序號(hào)為0的元素,它和一個(gè)簡(jiǎn)單變量的地位和作用相似。“下標(biāo)”可以是整型常量或整型表達(dá)式。例如下面的賦值表達(dá)式包含了對(duì)數(shù)組元素的引用,a[0]=a[5]+a[7]-a[2*3]3一維數(shù)組的初始化在定義數(shù)組的同時(shí)給各數(shù)組元素賦值,稱為數(shù)組的初始化。用“初始化列表”方法實(shí)現(xiàn)數(shù)組的初始化。(1)在定義數(shù)組時(shí)對(duì)全部數(shù)組元素賦予初值。例如:inta[10]={0,,1,2,3,4,5,6,7,8,9};將數(shù)組中各元素的初值順序放在一對(duì)花括號(hào)內(nèi),數(shù)據(jù)間用逗號(hào)分隔。花括號(hào)內(nèi)的數(shù)據(jù)效為“初始化列表”。經(jīng)過上面的定義和初始化之后,a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8,a[9]=9。(2)可以只給數(shù)組中的一部分元素賦值。例如:inta[10]={0,1,2,3,4};定義a數(shù)組有10個(gè)元素,但花括號(hào)內(nèi)只提供5個(gè)初值,這表示只給前面5個(gè)元素賦初值,系統(tǒng)自動(dòng)給后5個(gè)元素賦初值為0。(3)如果想使一個(gè)數(shù)組中全部元素值為0,可以寫成inta[10]=(0,0,0,0,0,0,0,0,0,0);或inta[10]=(0);(4)在對(duì)全部數(shù)組元素賦初值時(shí),由于數(shù)據(jù)的個(gè)數(shù)已經(jīng)確定,因此可以不指定數(shù)組長(zhǎng)度。例如://未賦值的部分元素自動(dòng)設(shè)定為0inta[5]=(1,2,3,4,5)可以寫成inta={1,2,3,4,5}在第2種寫法中,花括號(hào)中有5個(gè)數(shù),雖然沒有在方括號(hào)中指定數(shù)組的長(zhǎng)度,但是系統(tǒng)會(huì)根據(jù)花括號(hào)中數(shù)據(jù)的個(gè)數(shù)確定a數(shù)組有5個(gè)元素。但是,如果數(shù)組長(zhǎng)度與提供初值的個(gè)數(shù)不相同,則方括號(hào)中的數(shù)組長(zhǎng)度不能省略。例如,想定義數(shù)組長(zhǎng)度為10,就不能省略數(shù)組長(zhǎng)度的定義,而必須寫成inta[10]=(1,2,3,4,5};只初始化前5個(gè)元素,后5個(gè)元素為0。說明:如果在定義數(shù)值型數(shù)組時(shí),指定了數(shù)組的長(zhǎng)度并對(duì)之初始化,凡未被"初始列表”指定初始化的數(shù)組元素,系統(tǒng)會(huì)自動(dòng)把它們初始化為0(如果是字符型數(shù)組,則初始為"\0”,如果是指針型數(shù)組,則初始化為NULL,即空指針)。4一維數(shù)組程序?qū)嵗纾阂阎皟身?xiàng)初值為1,1,后面一項(xiàng)是前面兩項(xiàng)之和,依次類推,顯示前40項(xiàng)數(shù)據(jù)。如果用簡(jiǎn)單變量處理的,只定義3個(gè)變量,程序可以順序計(jì)算并輸出各項(xiàng)數(shù)據(jù)值,但不能在內(nèi)存中保存這些數(shù)。假如想直接輸出數(shù)列中的第40個(gè)數(shù)是很困難的。查資料找到下面程序:#include<stdio.h>//斐波那鍥數(shù)列第四十項(xiàng)為多少(前兩項(xiàng)的和是后一項(xiàng))intFabonacci(intn){intf1=1;intf2=1;intf3=1;inti;for(i=3;i<=n;i++)//前兩項(xiàng)的和給第三項(xiàng),然后2給1,3給2{f3=f1+f2;f1=f2;f2=f3;}returnf3;}intmain(){printf("%d\n",Fabonacci(40));getchar();return0;}scanf和getchar的區(qū)別字符數(shù)據(jù)的輸入:scanf()函數(shù)是格式輸入函數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量中。在scanf()語句的格式串中由于沒有非格式字符在“%d%d%d”之間作為輸入時(shí)的間隔,因此在輸入時(shí)要用一個(gè)以上的空格或回車符作為每?jī)蓚€(gè)輸入數(shù)之間的間隔。scanf()在讀取數(shù)字時(shí)會(huì)跳過空格、制表符和換行符。如:1#include<stdio.h>2intmain()3{4inta,b,c;5scanf("%d%d%d",&a,&b,&c);6printf("%d%d%d",a,b,c);}getchar()函數(shù)是鍵盤輸入函數(shù),其功能是從鍵盤上輸入一個(gè)字符。簡(jiǎn)單來說就是getchar()函數(shù)在C程序中的功能是接收一個(gè)字符。scanf()的程序:1#include<stdio.h>2#include<stdlib.h>3intmain(void)4{5inta,b,c;6printf("pleaseinputnuma:\n");7scanf("%d",&a);8printf("pleaseinputnumb:\n");9scanf("%d",&b);10printf("pleaseinputnumc:\n");11scanf("%d",&c);12printf("%d,%d,%d",a,b,c);13}運(yùn)行結(jié)果pleaseinputnuma:1pleaseinputnumb:2pleaseinputnumc:3123pressanykeytocontinuechar的程序:1#include<stdio.h>2#include<stdlib.h>3intmain(void)4{5chara,b,c;6printf("pleaseinputnuma:\n");7scanf("%c",&a);8printf("pleaseinputnumb:\n");9scanf("%c",&b);10printf("pleaseinputnumc:\n");11scanf("%c",&c);12printf("%c,%c,%c",a,b,c);}程序連續(xù)接收了三個(gè)字符,在C中enter鍵代表一個(gè)換行符,所以當(dāng)輸入完a的值‘q’之后按下enter鍵,換行符立馬被字符b接收了,然后程序再向下走,輸入c的值‘w’。結(jié)果就會(huì)按順序顯示a,b,c的值,我們已經(jīng)知道a='q',b='\n',c='w';所以結(jié)果就會(huì)顯示兩行。getchar()程序:1#include<stdio.h>2#include<stdlib.h>3intmain(void)4{5chara,b,c;6printf("pleaseinputnuma:\n");7scanf("%c",&a);8getchar();9printf("pleaseinputnumb:\n");10scanf("%c",&b);11getchar();12printf("pleaseinputnumc:\n");13scanf("%c",&c);14printf("%c,%c,%c",a,b,c);15}如果用數(shù)組來處理,每一個(gè)數(shù)組元素代表數(shù)列中的一個(gè)數(shù),依次求出各數(shù)并存放在相應(yīng)的數(shù)組元素中即可。數(shù)組是變量,有空間存儲(chǔ)地址,可以存放數(shù)組元素,要顯示20項(xiàng)數(shù)值,直接提取20項(xiàng)數(shù)據(jù)。編寫程序:#include<stdio.h>intmain()inti;intf[20]={1,1};//對(duì)最前面兩個(gè)元素[0]和[1]賦初值1,1。for(i=2;i<20;i++)f[i]=f[i﹣2]+f[i﹣1];//先后求出f[2]~[19]的值for(i=0;i<20;i++)if(i%5==0)printf("\n");printf("%12d",f[i]);//控制每輸出5個(gè)數(shù)后換行//輸出一個(gè)數(shù)printf("\n");return0;該程序只計(jì)算20個(gè)數(shù),定義數(shù)組長(zhǎng)度為20,對(duì)最前面兩個(gè)元素f[0]和f[1]均指定初值為1,根據(jù)數(shù)列的特點(diǎn),由前面兩個(gè)元素的值可計(jì)算出第3個(gè)元素的值,即f[2]=f[0]+f[1];在循環(huán)中可以用以下語句依次計(jì)算出f[2]~f[19]的值。f[i]=f[i-2]+f[i-1];if語句用來控制換行,每行輸出5個(gè)數(shù)據(jù)。5定義和引用二維數(shù)組有的問題需要用二維數(shù)組來處理。例如,有3個(gè)小分隊(duì),每隊(duì)有6名隊(duì)員,要把這些隊(duì)員的工資用數(shù)組保存起來以備查。這就需要用到二維數(shù)組。如果建立一個(gè)數(shù)組pay,它應(yīng)當(dāng)是二維的,第一維用來表示第幾分隊(duì),第二維用來表示第幾個(gè)隊(duì)員。例如用pay2;3表示2分隊(duì)第3名隊(duì)員的工資,它的值是1725。二維數(shù)組常稱為矩陣(matrix)。把二維數(shù)組寫成行(row)和列(column)的排列形可以有助于形象化地理解二維數(shù)組的邏輯結(jié)構(gòu)。5.1怎樣定義二維數(shù)組怎樣定義二維數(shù)組呢?其基本概念與方法和一維數(shù)組相似。如:floatpay[3][6];以上定義了一個(gè)float型的二維數(shù)組,第1維有3個(gè)元素,第2維有6個(gè)元素。每一維的長(zhǎng)度分別用一對(duì)方括號(hào)括起來。二維數(shù)組定義的一般形式為類型說明符數(shù)組名[常量表達(dá)式常量表達(dá)式];例如:floata[3][4],b[5][10];定義a為3×4(3行4列)的數(shù)組,b為5X10(5行10列)的數(shù)組。注意,不能寫成floata[3,4],b[5,10];//在一對(duì)方括號(hào)內(nèi)寫兩個(gè)下標(biāo),錯(cuò)誤C語言對(duì)二維數(shù)組采用這樣的定義方式,使得二維數(shù)組可被看作一種特殊的一維數(shù)組:它的元素又是一個(gè)一維數(shù)組。例如,可以把a(bǔ)看作一個(gè)一維數(shù)組,它有3個(gè)元素:a[0].a[1],a[2]每個(gè)元素又是一個(gè)包含4個(gè)元素的一維數(shù)組。a[0]…a[0][0]a[o][1]a[0][2]a[0][3]a[1]…a[1][0]a[1][1]a[1][2]a[1][3]a[2]--a[2][0]a[2][1]a[2][2]a[2][3]可以把a(bǔ)[0],a[1],a[2]看作3個(gè)一維數(shù)組的名字。上面定義的二維數(shù)組可以理解為定義了3個(gè)一維數(shù)組,即相當(dāng)于floata[0][4],a[1][4],a[2][4];此處把a(bǔ)[0],a[1],a[2]看作一維數(shù)組名。C語言中,二維數(shù)組中元素排列的順序是按行存放的,即在內(nèi)存中先順序存放第1行的元素,接著再存放第2行的元素。假設(shè)數(shù)組a存放在從2000字節(jié)開始的一段內(nèi)存單元中,一個(gè)元素占4個(gè)字節(jié),前16個(gè)字節(jié)(2000~2015)存放序號(hào)為0的行中的4個(gè)元素,接著的16個(gè)字節(jié)(2016~2031)存放庫號(hào)為1的行中的4個(gè)元素,余類推。注意:用矩陣形式(如3行4列形式)表示二維數(shù)組,是邏輯上的概念,能形象地示出行列關(guān)系。而在內(nèi)存中,各元素是連續(xù)存放的,不是二維的,是線性的。C語言還允許使用多維數(shù)組。有了二維數(shù)組的基礎(chǔ),再掌握多維數(shù)組是不困難的。如,定義三維數(shù)組的方法如下:floata[2][3][4];多維數(shù)組元素在內(nèi)存中的排列順序?yàn)椋旱?維的下標(biāo)變化最慢,最右邊的下標(biāo)變化最快。5.2怎樣引用二維數(shù)組的元素二維數(shù)組元素的表示形式為數(shù)組名[下標(biāo)][下標(biāo)]如:a[2][3]表示a數(shù)組中序號(hào)為2的行中序號(hào)為3的列的元素。下標(biāo)應(yīng)是整型表達(dá)式,如a[2-1][2*2-1]。不要寫成a[2,3]或a[2-1,2*2-1]形式。數(shù)組元素可以出現(xiàn)在表達(dá)式中,也可以被賦值,如:b[1][2]=a[2][3]/2注意:在引用數(shù)組元素時(shí),下標(biāo)值應(yīng)在已定義的數(shù)組大小的范圍內(nèi)。在這個(gè)問題上常出現(xiàn)錯(cuò)誤。例如:inta[3][4];a[3][4]=3;按以上的定義,數(shù)組a可用的“行下標(biāo)”的范圍為0~2,“列下標(biāo)”的范圍為0~3。//定義a為3X

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論