C語言程序設(shè)計-數(shù)-組_第1頁
C語言程序設(shè)計-數(shù)-組_第2頁
C語言程序設(shè)計-數(shù)-組_第3頁
C語言程序設(shè)計-數(shù)-組_第4頁
C語言程序設(shè)計-數(shù)-組_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計數(shù) 組數(shù)組是程序處理大量數(shù)據(jù)的重要手段數(shù)據(jù)類型基本數(shù)據(jù)類型:整 型:int, unsigned int, long實 型:float, double, long double字符型:char構(gòu)造數(shù)據(jù)類型:數(shù) 組:無關(guān)鍵字結(jié) 構(gòu):struct共用體:union數(shù)組的定義W0W1W8W9W定義:數(shù)據(jù)類型 數(shù)組名數(shù)組長度例:int w10;float data100;long class34;char name30;double number, a5, i, b4;數(shù)組的本質(zhì):一組相同類型的變量的順序集合。注意事項命名規(guī)則與基本類型變量相同;float Ms.Smth15;int 34

2、140134;必須指明長度;int number10;double x3*4+5;char name;方括號是數(shù)組的標志;int a(10);long b4;只有一個名字;同類型變量的集合.只能由字母、數(shù)字、下劃線組成;第一個字符不能是數(shù)字;不能使用保留字??梢允浅A炕虺A勘磉_式數(shù)組的初始化例:int a4=1,2,3,4;1234a0a1a2a3a數(shù)組的初始化完整初始化:float x3=1.5, 2, 3.5;int a4=0,1,2,3;部分初始化:float x5=1.5, 2, 3.5;char name30=N,o, ,N,a,m,e;部分初始化只能在前部完整初始化的簡略方式:fl

3、oat x =1.5, 2, 3.5, 4;int a =1,2,3,4,5,6,7,8,9,10;無初始化:float x4;int a3;常見錯誤:int a4=1,2,3,4,5;int sohu3=1,2,3;float data10=;int b6=1,2,3,5,6;int i;float datai=3,2,1;float x;float datax=3,2,1;數(shù)組的使用與基本變量相同的用法:int num4=0,0,0,0;num0=1;num1=5;num2=2;數(shù)組中的變量必須是相同類型的:num1=1;num2=3.14; num2=3;num3=a; num3=97;

4、使用與定義的區(qū)別:int a3; 定義語句a3=3; 賦值語句數(shù)組的邊界:下標的變化范圍從0開始。num0=1;num1=5;num2=2;num3=0;數(shù)組的存貯方式a0a1a2a3a4a5b0b1b2b3b4c0c1abc注意:C語言中,數(shù)組的越界使用是最常見的隱形錯誤,是程序調(diào)試的難點。計算機內(nèi)存是線性空間int a6;int b5;int c2;數(shù)組的使用例1. 數(shù)組基本操作#include main ()int a10,i;a0=1;a1=2;a2=a0+a1;a3=a2*a1;printf(“%d,%d,%d,%d”, a0,a1,a2,a3);例2. 數(shù)組基本操作#include

5、 main ()int a100,i;for (i=0;i100;i+) ai=i;例3:輸入一個大數(shù),計算其位數(shù)并逆向打印#include main()char c;int data100,k,n=0;while (c =getchar()!=n) datan=c-48;n+;printf(“%dn”,n);for(k=n-1;k=0,k-) printf(“%d”,datak);數(shù)組的應(yīng)用if (c0 & c=100) break;較高的程序容錯性是一個優(yōu)秀程序區(qū)別于普通程序的重要標志之一。/ -sort-for (i=0;inum;i+) max=datai;imax=i; for (k

6、=i;kmax) max=datak; imax=k; temp=datai; datai=dataimax; dataimax=temp;for (i=0;inum;i+) printf(%fn,datai);數(shù)組的應(yīng)用例4:選擇法排序確定搜索范圍;遍歷數(shù)據(jù),選出其中的最大值;將最大的數(shù)據(jù)和最前面的數(shù)據(jù)交換;搜索范圍減小一個;重復步驟2和3,直至排序完畢。選出一個最大的交換#includevoid main()float data100,temp,max;int i,k,imax,num;/ -input data -for (i=0;i100;i+) scanf(%f,&datai);if

7、 (datai=-9999.0) break;num=i; / -data number讀入數(shù)據(jù)for (;) change=0;for (k=0;knum-1;k+) if (datakdatak+1) temp=datak;datak=datak+1;datak+1=temp;change=1;if (change=0) break;for (i=0;inum;i+) printf(%fn,datai);數(shù)組的應(yīng)用例5. 冒泡法排序1.掃描數(shù)組,相鄰元素相比較,將較大的調(diào)換到前面。2.重復掃描,直至沒有需要交換的元素。#include void main()float data100,te

8、mp;int i,k,change,num;for (i=0;i100;i+) scanf(%f,&datai);if (datai=-9999.0) break;num=i;相鄰兩數(shù)比較交換變動標志變動標志數(shù)組的應(yīng)用例6.用篩選法求質(zhì)數(shù)#include main () int data100,i,j,step; for (i=0;i100;i+) datai=i+1; for (i=1;i100;i+) if (datai!=0) step=datai; for (j=i+step;j100;j+=step) dataj=0; for (i=0;i100;i+) if (datai!=0)

9、printf(%d,datai); 思路:12345678910111213141516171819202122232425262728293031323334100刪除操作注意:數(shù)組的下標從零開始數(shù)組的應(yīng)用例7.計算循環(huán)小數(shù)for(k=0;k+)q=a1/a2;r=a1%a2;q_arrayk=q;finish=0;for(i=0;ik;i+) if (r=r_arrayi) finish=1;start=i+1;break;if (finish=1) break;r_arrayk=r;a1=r*10;for (i=0;ik+1;i+) if (i=1) printf(.);if (i=st

10、art) printf();printf(%1d,q_arrayi);printf(n);思路:1.記錄每次除法的余數(shù);2.和以前的記錄比較,直至發(fā)現(xiàn)重復為止。#include void main()int a1,a2,q,r,q_array1000,r_array1000;int i,k,start,finish=0;scanf(%d,&a1);scanf(%d,&a2);將新得到的余數(shù)與記錄的所有余數(shù)比較將余數(shù)記錄下來并作為新的被除數(shù)二維數(shù)組的定義定義:數(shù)據(jù)類型 數(shù)組名長度1長度2W00W01W02W10W11W12int w23;計算機的內(nèi)存是線性空間。右邊的下標變化較快。W00W01W

11、02W10W11W12二維數(shù)組的初始化完全初始化:int a23=1,2,3,4,5,6;(分行初始化)int a23=1,2,3,4,5,6;(順序初始化)完全初始化的簡略形式:int a3=1,2,3,4,5,6;int a3=1,2,3,4,5,6;部分初始化:int a33=2,3,1;200000310二維數(shù)組的應(yīng)用例1. 二維數(shù)組的賦值#include main()int i,j,array34;for (i=0;i3;i+)for(j=0;j4;j+)arrayij=i*3+j;01234567891011二維數(shù)組的應(yīng)用矩陣運算123456789147258369ab147258

12、369a182182548214881143250327712250122194abab#include void main() int a 3=1,2,3,4,5,6,7,8,9; int b 3=1,4,7,2,5,8,3,6,9; int c33; int i,j; for (i=0;i3;i+) for(j=0;j3;j+) cij=aij*bij;printf(%d ,cij);printf(n); 矩陣運算與計算機繪圖是二維數(shù)組的典型應(yīng)用圖形處理、數(shù)學計算、數(shù)據(jù)庫等。二維數(shù)組的應(yīng)用 !_ |*=-., |_,- | | / !_ / |*-., /, |.- /# | _/#_ _

13、 _ _ _| _ _ _ _ _ _ _ _ _ _ |_=_-=_ - =_| !_ |_=_ =-_-_ = =_| !_ |=_= - | |*-,_- _ | |*-.,= | |.-|= | !_ |_.-_- | | |_=- - | |*-., | |=_- | / |=_= - | |_,- / |_ - = | _ / _|_=- _ _ _| _| _ / |=_- | /, _ _ _ _ _ _/, =- | |/# _=-_=_=_- =-_ -=_ /# | _ | _/#_ _ _-_ = _ _/#_ _ _ - | _ _ _ =_0_ _ _0 _ _ _

14、 =- | |_=_-_=-_ =_|-=_ | , | |_=-_-_ =-_|_ | | _- =- |-_ | (* | |= _= | - |_ |= -_= |= _ | | |_-=_ |=_ |/+| | =_ - |_ = _ -.- | =_ = = |=_- |+| |-_=- _ |=_ = |=_= -_ | = |+| |=_- /+ | -= |_=- /+ |=_ | |=_ |+|+| |= - -_,-,_ |_= |+|+| | -_ |= | | -|+|+| |-_= / | | |=_ |+|+| |-=_ |_-/ |=_=|+|+| | =_= |

15、 | | | |_- |+|+| |_ = |=/ | _ |= - | | |=_= |_=- |/ |=_ = | =_-_| | | | | =_ | -_ | (-) ) - - ( / (o _ o) ( 0 ) / _-._=_.-_ /;#.-.#; _) # (_/ #. .# #. .# / #. .# _ #. .#/ /_ (_) # (_)總結(jié)數(shù)組的各元素必須類型相同;數(shù)組的長度定義必須是常量或常量表達式;數(shù)組在內(nèi)存中是線性存貯;數(shù)組元素具有簡單變量的一切性質(zhì);不允許整體操作;數(shù)組的下標從0開始;系統(tǒng)不對數(shù)組操作進行越界檢查。數(shù)組的本質(zhì):一組相同類型的變量的順序集合。上

16、機作業(yè)1. 通過鍵盤輸入一組數(shù)據(jù),對該組數(shù)據(jù)進行排序。排序完成后,通過鍵盤輸入一個數(shù),請按排序的規(guī)律將它插入到數(shù)組中。2. 通過鍵盤輸入兩個方陣,計算各個方陣的轉(zhuǎn)置陣和所有元素之和,以及兩矩陣的點積、叉積。字符數(shù)組與字符串字符數(shù)組char university20=B, U, A, A;.BUAA012319字符串char university20=BUAA;.BUAA012319040是字符串區(qū)別于字符數(shù)組的標志,如果沒有0,專用于字符串的一些操作則不能使用,但它也是合法的,只是普通的字符數(shù)組而已。字符串的定義:char class20;字符串的定義與初始化注意:如果只定義而未初始化,則字符

17、串和字符數(shù)組形式上是一樣的。 字符串初始化: char class20=BUAA; char class20=BUAA; char class =BUAA;字符串長度計算函數(shù) strlenchar class =391401;i=strlen(class);i=strlen(Beijing University of Aeronautics and Astronautics);注意:0 是字符串的結(jié)束標志,它占用空間,但不是串的一部分。字符串專用函數(shù)字符串拷貝函數(shù) strcpychar university30=Buaa, class =391401;strcpy(university,cla

18、ss);注意:1.函數(shù)自動處理0;2.第一個字符串必須有足夠的空間;3. 不能采用university=class的方式拷貝字符串。字符串專用函數(shù)字符串比較函數(shù) strcmp比較兩個字符串,根據(jù)結(jié)果的不同返回不同的值。返回值:當S1S2時,返回正數(shù);當S1S2時,返回負數(shù);當S1=S2時,返回0。字符串比較依據(jù):ASCII碼表。char string1 =BUAA;char string2 =Buaa391401;比較的方法:從左至右,逐字符比較,直至發(fā)現(xiàn)不同。注意:字符串的長度不作為比較依據(jù)。字符串專用函數(shù)字符串拼接函數(shù) strcatchar university30=Buaa, class =391401;strcat(university,class);結(jié)果:Buaa391401注意:1.函數(shù)自動處理0;2.第一個字符串必須有足夠的空間;3. 不能采用university=university+class; 其它常用函數(shù) (string.h) 大寫變?yōu)樾懞瘮?shù) strlwr 小寫變?yōu)榇髮懞瘮?shù) strupr 字符串查找函數(shù) strstrstring.h不是C語言標準庫,在不同的系統(tǒng)中可以不一樣。字符串的

溫馨提示

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

最新文檔

評論

0/150

提交評論