4項(xiàng)目四數(shù)組及其應(yīng)用C語(yǔ)言程序設(shè)計(jì)上機(jī)指導(dǎo)_第1頁(yè)
4項(xiàng)目四數(shù)組及其應(yīng)用C語(yǔ)言程序設(shè)計(jì)上機(jī)指導(dǎo)_第2頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、百度文庫(kù)讓每個(gè)人平等地捉升口我11項(xiàng)目四 數(shù)組及其應(yīng)用【實(shí)驗(yàn)內(nèi)容、步驟】1、檢査所用計(jì)算機(jī)是否已經(jīng)安裝 Visual C+ 2012。2、進(jìn)入 Visual C+ 2012 的工作環(huán)境。3、編程示例,觀察與驗(yàn)證。輸入并運(yùn)行下而的程序,分析運(yùn)行結(jié)果?!救蝿?wù)實(shí)施】實(shí)驗(yàn) 4-1 一維數(shù)組元素的輸入輸出示例源程序 4-1:#include void main()int , a10;for(i=0;i=0;i-)printf(%d,ai);本程序有以下功能:把前 10 個(gè)奇數(shù)賦值給數(shù)組 8,然后按從大到小的順序輸出。我們?cè)谶\(yùn)行環(huán)境中輸入源代碼,并運(yùn)行,會(huì)得到以下結(jié)果:C;Window5system32c

2、md.exe191715131197531請(qǐng)按任意魁續(xù).圖 4-1-1 運(yùn)行結(jié)果圖我們可以得出結(jié)果:19 17 15 13 11 9 7 5 3 1若把第 5 行 for(i=0;i10;i+)改成 for(i=l;i10;i+),我們就會(huì)的岀如下圖所示 的結(jié)果,大家可以仔細(xì)的比較,會(huì)發(fā)現(xiàn)最后會(huì)出現(xiàn)亂 0的值“-0”。因?yàn)樾薷暮蟮某绦騺y 0 中的值為隨機(jī)數(shù)。妙171513119?53-858993460請(qǐng)按任意遴繼續(xù)圖 4-1-2 運(yùn)行結(jié)果圖大家還要注意:第 7、8 行若改成 printf(%d:a),得岀的運(yùn)行結(jié)果會(huì)亂碼,%d 表 示取地址內(nèi)的值,因?yàn)槌绦蛑?a 的地址不能確左,它不是數(shù)組中

3、的元素。結(jié)果如下圖所示。C!V/indowssytem32cmd.exe百度文庫(kù)讓每個(gè)人平等地捉升口我12圖 4-1-3 運(yùn)行結(jié)果圖根據(jù)原有程序,若想實(shí)現(xiàn)奇數(shù)從鍵盤(pán)輸入,程序就應(yīng)改寫(xiě)為:百度文庫(kù)讓每個(gè)人平等地捉升口我22include Cstdio.h- voidxnt i;char a10;for (i = 0;i = 0;i) jxrin十/V%cn ai):圖 4-1-4 源程序圖我們把數(shù)組 a10聲明成 char 類型,在使用函數(shù) getchar()從鍵盤(pán)接收字符存入數(shù)組 中,運(yùn)行結(jié)果如下圖所示。C:Windowssystem32cmd.exe12345678900987654321請(qǐng)

4、按任意鍵繼續(xù) 圖 4-1-5 運(yùn)行結(jié)果圖注意:從鍵盤(pán)輸入的是字符,所以使用函數(shù) printf 輸出時(shí)要使用(:的格式。另外在 for()語(yǔ)句中要省略英中的表達(dá)式只需留空不寫(xiě)該表達(dá)式,如第 5 行 for()語(yǔ)句 的表達(dá)式 3“i+”如果省略,切記分號(hào);”不可省去,程序修改如下:include ? void仍合a 10:for (i = 0;i = 0;i)ai):Li圖 4-1-6 源程序圖大家會(huì)得到同樣的運(yùn)行結(jié)果,如下圖所示。也C;W!n doY/ssy5teTI32cmd. exe1917151311?7531i|fetfOO-圖 4-1-7 運(yùn)行結(jié)果圖百度文郵-讓每個(gè)人平等地

5、捉升口我33實(shí)驗(yàn) 4-2 二維數(shù)組元素的輸入輸岀示例源程序 4-2:# include # define N 3# define M 3void main()int i,aNM,sum=O;for(i=0;iN;i+) for(j=0;jM;j+) scanf(%d,&aij);sum=sum+aij;printf(%d,zsum);該程序有以下功能:輸入一個(gè) 3*3 矩陣的數(shù)據(jù),輸出矩陣元素之和。 觀察與驗(yàn)證:首先我們觀察源程序會(huì)發(fā)現(xiàn)幾個(gè)問(wèn)題:(1)程序中有變量 j 沒(méi)有聲明無(wú)法使用,無(wú)法通過(guò)編譯。(2)應(yīng)將沒(méi)有聲明的變量根據(jù)程序聲明成 int 型。我們應(yīng)將源程序修改如下圖所示:in

6、clude stdio hdefine N 3#deme M 3Evoid js&ijiQint ij jj aN Mssum = 0;for (i = 0;i N;i卄)for (j = 0;j 恥j+)篤血aii j);sum二stun十a(chǎn)i j:9sum):圖 4-2-1 修改后的程序圖圖 4-2-2 運(yùn)行結(jié)果圖很多同學(xué)在編譯時(shí)經(jīng)常出錯(cuò),比如第 9 行scanfC%d,&aij);會(huì)寫(xiě)成百度文庫(kù)讓每個(gè)人平竽地捉升口我44scanfC%dzaij);,漏掉了符號(hào)&,此時(shí)程序運(yùn)行錯(cuò)誤,因?yàn)槌绦驘o(wú)法把數(shù)據(jù)寫(xiě)到 aij地址。scanf 讀取整數(shù)型參數(shù) 2 是寫(xiě)入緩存的地址

7、而不是變量本體。實(shí)驗(yàn) 43 字符數(shù)組應(yīng)用示例源程序 4-3:#include #include void main()char sl80,s240;int i = 0zj = 0;pintf(”n Please input string 1:); scanf(%szsl);printf(Mn Please in put string 2:);scanf(%szs2);while(sli!= 0)i+;while(s2i !=sli+ = s2j+;Sli = 2;pnntf(n New string:%sHzsl);該程序具有如下功能:任意輸入兩個(gè)字符串,并存放在 si 和 s2 兩個(gè)數(shù)組中.

8、然后將 si、s2兩個(gè)字符串串聯(lián),形成一個(gè)新字符串,放在 si 數(shù)組中并輸出。觀察與驗(yàn)證:SSC:Wincbw5syuem32cmd.e 乂 ePlease input string l:50Please input string 2:10New stping:50請(qǐng)按任意健繼續(xù)圖 4-3-1 運(yùn)行結(jié)果圖觀察運(yùn)行結(jié)果,我們可以知道串結(jié)朿符、0的作用。小提示:在 C 語(yǔ)言中沒(méi)有專門(mén)的字符串變量,通常用一個(gè)字符數(shù)組來(lái)存放一個(gè)字符串。字符串 總是以、0作為串的結(jié)束符。因此當(dāng)把一個(gè)字符串存入一個(gè)數(shù)組時(shí),也把結(jié)朿符、0存入數(shù) 組,并以此作為該字符串是否結(jié)朿的標(biāo)志。有了0標(biāo)志后,就不必再用字符數(shù)組的長(zhǎng)度來(lái)

9、 判斷字符串的長(zhǎng)度了。0就是字符串結(jié)朿標(biāo)志。比如說(shuō),把一個(gè)字符串賦值給數(shù)組:u8std= ;實(shí)際上數(shù)組 strl 在內(nèi)存中的實(shí)際存放情況為: 0這后而的、0是由 C 編譯系統(tǒng)自動(dòng)加上的。所以在用字符串賦初值時(shí)一般無(wú)須指定數(shù)組百度文庫(kù)讓每個(gè)人平等地捉升口我55的長(zhǎng)度,而由系統(tǒng)自行處理。把字符數(shù)組 strl 中的字符串拷貝到字符數(shù)組 st2 中。串結(jié)束標(biāo)志、0也一同拷貝。但是也有一些例外情況發(fā)生。比如,當(dāng)數(shù)組長(zhǎng)度不夠。假設(shè)我們指左了數(shù)組長(zhǎng)度, 如:u8 strl13= 、由于字符組 strl 的長(zhǎng)度為 13,所以后而的信息會(huì)丟失,即、0丟失。另外,如果在給數(shù)組賦值時(shí),把每

10、個(gè)字符單獨(dú)用引號(hào)括起來(lái)。也會(huì)丟失0。如:u8 stri= C7x7j7r7.72717i7c7.7o7r7g3 ;如果希望數(shù)組以、0結(jié)朿,則要么寫(xiě)成:u8 strl= 、要么寫(xiě)成(人工添加、0):u8 stri= c7x7J7r7/2717i7c7.7o7r7g703 ;要么寫(xiě)成(故意給數(shù)組預(yù)留一個(gè)空位):u8 strl14= lc7x7j7r7.l2,17i7c7.,;o,/lrl/,g,;注意:當(dāng)輸入的字符串有空格時(shí),例如:本實(shí)驗(yàn)因?yàn)閟 遇到空白字符(空格、制表符、n)就結(jié)束了。運(yùn)行結(jié)果如下圖所示。圖 4-3-2 運(yùn)行結(jié)果圖【任務(wù)考核】完成下列程序,運(yùn)行程序后實(shí)現(xiàn)以下功能:從鍵盤(pán)輸入 10

11、 個(gè)數(shù),按從小到大進(jìn)行排序 輸出。源程序 4-4:# in elude # include # define N 10 void main()int arrayN;int i;void sortArry (1) for(i=0;i10;i+) scanf(%dz/, &arrayi); printf(nz/);sortArry(array);for(i=0;i10;i+)百度文庫(kù)讓每個(gè)人平等地捉升口我66ptintfC%5d,z,arrayi);void sortArry (2)intfor(i=0;i_;i+)for(j=0;j (4);j+)t=aj;aj=aj+l; aj+l=t

12、;【典型例題】例 4-1 若要求左義具有 10 個(gè) int 型元素的一維數(shù)組 a,則以下總義語(yǔ)句中錯(cuò)誤的是 ()。A. #define N 10 B#define n 5int aN;int a2*n;Cint a5+5;Dint n=10,an;答案:D分析: 本題考査點(diǎn)在“一維數(shù)組的立義形式中數(shù)組長(zhǎng)度必須為常量” o D 選項(xiàng)中 n 是 變量,不是常量表達(dá)式,故錯(cuò)渓。例 4-2 以下程序運(yùn)行后的輸岀結(jié)果是()。main()int i,n= 0,0,0,0,0;for(i=l;i=4;i+)n i=ni-l*2+l;pintf(%d:ni);填 空填 空填 空填空百度文郵-讓每個(gè)人平零地捉升

13、口我77答案:13715分析:本題首先上義并初始化數(shù)組 n,數(shù)組包含 5 個(gè)元素,初值全部為 0,然后進(jìn)入 for 循環(huán)。在第一輪循環(huán)中,i 的值為 1, nl=n0*2+l,即 nl為 0*2+1,結(jié)果為 1。 printf 函數(shù)輸出nl的值為 1。程序進(jìn)入第二輪循環(huán),i 的值為 2, n2=nl*2+l,即 n2的值為 1 *2+1,結(jié)果為 3。printf 函數(shù)輸出 n2的值為 3。同樣程序再進(jìn)行第三輪、 第四輪循環(huán),分別輸出 7 和15 后跳出循環(huán)。例 4-3 以下程序運(yùn)行后的輸岀結(jié)果是()。main()int i,sum,avg,a8= 7,3,9,11/4,13,1,8;sum=0

14、;for(i=0;i8;i+)sum +=ai;avg=sum/8; printf(sum=%d avg=%dn,zzsumzavg);答案:sum=56 avg=7分析:本題的作用是對(duì)數(shù)組的各個(gè)元素進(jìn)行求和,然后算岀英平均數(shù)。注意:在求和之 前必須對(duì) sum 賦初值為 0。 如果程序中沒(méi)有 sum=0;語(yǔ)句, 那么程序運(yùn)行后將得不到正確 的結(jié)果。例 4-4 以下數(shù)組中定義錯(cuò)誤的是()。A. intx3= 0 ;B. intx23=l,2,3,4,5,6;C. Int x3= 1,2,3 , 4,5,6 ; D. int x23= 1,2,3,4,5,6; 答案:B分析:本題考査點(diǎn)在二維數(shù)組的

15、立義和初始化。B 選項(xiàng)在初始化時(shí),賦值號(hào)右邊最外層 的花括弧內(nèi)多了一對(duì)花括弧,造成了 3 行,而建義的只是 2 行。例 4-5 有以下程序:main()(int i,t3= 9,8,7,6,5,4,3,24);for(i=0;iv3;i+)printf(”d”zt2-ii);程序運(yùn)行后的輸出結(jié)果是()。A. 753 B. 357 C. 369 D. 751答案:B分析:本題考查點(diǎn)在二維數(shù)組的泄義、引用和初始化。程序首先泄義并初始化了一個(gè)二 維數(shù)組 t。t 數(shù)組在泄義時(shí)只指左了列數(shù) 3,系統(tǒng)根據(jù)初值的個(gè)數(shù) 9,自動(dòng)計(jì)算出行數(shù)為 3。 程序接著使用 for循環(huán)輸出某些特左元素:i 的值為 0 時(shí),

16、輸出 t20的值,即為第 2 行 第 0 列的元素,值為 3:i 的值為 1 時(shí),輸出 tll的值,即為第 1 行第 1 列的元素,值百度文庫(kù)讓每個(gè)人平等地捉升口我4.有以下程序:88為 5:i 的值為 2 時(shí),輸出 t02的值,即為第 0 行第 2 列的元素,值為 7。例 4-6 有以下程序:main()int x32= 0 ,i;for(i=0;i3;i+) scanf(%d;&xi0); printf(%3d%3d%3dn,;x00zx0l/xl0);若運(yùn)行時(shí)輸入:2 4 6v 回車,則輸岀結(jié)果是()。A. 2 0 0 B. 2 0 4 C2 4 0 D .246答案:B分析:

17、本題考查點(diǎn)在二維數(shù)組的左義、 引用和初始化。 程序利用 scanf 函數(shù)分別給 x00、xl0, x20輸入值為 2、 4、 6。 然后再輸岀 X00、 x0l、 xl0 的值。 其中 X00為 2, xl0為 4, X0l元素沒(méi)被輸入值因此保留初值為 0?!菊n后習(xí)題】一.選擇題(在下列各題的 A、B. C、D 四個(gè)選項(xiàng)中,只有一個(gè)正確,請(qǐng)選出正確答案)以下能正確宦義一維數(shù)組的選項(xiàng)是( A. int num;int b7= 11,13,14,15,16,17,18 J=0zk=0; while(i7&bi%2)k+=bi;j+;printfCdXnk);執(zhí)行后輸岀結(jié)果是()oA. 58

18、 B56 C45 D243.有以下程序:main()int b8= 11,12,13,14,15,16,17,18 ,i=0,j=0; while(i+7)if(bi%2)j+=bi; printf(u%dn,zJ);程序運(yùn)行后的輸出結(jié)果是()oA. 42 B45 C56 D60C. int num0.502. 有以下程序:main()B. #define N 50int numN;D. int N=50; intnumN;百度文庫(kù)讓每個(gè)人平等地捉升口我99main()int x= 1,3,5,7,23,6,0 JJ,k;for(i=0;k=i;j-) if(xj+lxUJ)/*從大到小排序*

19、/k=xj;xj=xj+l;xj+l=k;for(i=0;iv3;i+)for(i=4;iv7-i;i+)if(xj+lxj)/* 從小到大排序 */k=xj;xj=xj+l;xj+l=k;for(i=0;i8;i+) printf(%d:xi); printf(n,z);程序運(yùn)行后的輸出結(jié)果是()。A. B. 01234567 C. D.5. 以下能正確宦義二維數(shù)組的是()。A. int a3C. inta3= ;D.6. 以下能正確左義數(shù)組并正確賦初值的語(yǔ)句是(A. int N=5,bNN;C. intc2= 1,2 , 3,4 ;7. 以下不能正確怎義二維數(shù)組的選項(xiàng)是()。A. inta

20、22= 1,;C. inta22= 5 ,7,8;8. 已 int a32= 3, 2, 1;則表達(dá)式 a0l/a00/al0W 值是()。A.B. 1 C. 0 D.錯(cuò)誤表達(dá)式9. 已知:inta3= 1, 2, 3, 4, 5;數(shù)組 8 的元素個(gè)數(shù)是()。A. 5B. 6 C. 8 D.數(shù)組宦義錯(cuò)誤10. 有以下程序:main() int n3= 1,4,7,2,5,8,3,6,9; int i,j,k=2;for(i=0;i3;i+) printfC%d;nk i);執(zhí)行后輸出結(jié)果是()oB. int a3= 2*3); inta23= 1 , 2,;)。B. intal2= 1,;D.

21、 intd32 =1,2 3,4B. inta2= 5,6,7,8;D. inta3= 3 , 4 , 5 百度文郵-讓每個(gè)人平零地捉升口我1010A. 456 B. 258 C. 369 D. 78911. 有以下程序:main() int a3= 1,2,3z4,5,0 ,i;for(i=0;i3;i+)if(iv2) ali=ali-l;else ali = l;printfC%dnz;aOl+all+al 2);執(zhí)行后輸岀結(jié)果是()。A. 7 B. 6 C. 8 D.無(wú)確定值12. 有以下程序:main()int a44= 1,2,3,41z5,6,7,8 , 3,9,10,2 , 1

22、4,2,9,6 ; int izs=0;for(i=0;i4;i+)s+=ail;printf(%dn:s);程序運(yùn)行后的輸出結(jié)果是(A. 11 B. 19 C. 13 D. 2013. 以下程序的輸出結(jié)果是()。main()lint m33= 0,1,乙 0,1,2,0,1,2zizjzt=l;for(i=0;i3;i+)for0=i;j=i;j+)t=t4-mimjj;printf(%dnr,zt);)二、填空題1.以下程序運(yùn)行后的輸出結(jié)果是_main()int b7= (11,13,14,15,16,17,18) ,i=0,j=0;while(i7&bi%2=j+=bi+; printf(,%dn/j);2.以下程序運(yùn)行后的輸岀結(jié)果是 _main()int i, a5= 1;for(i=l;i=4;i+)百度文郵-讓每個(gè)人平零地捉升口我1111ai=ai-l*2+l;printfC%d;al);3.以下程序的功能是讀入 20 個(gè)整數(shù),統(tǒng)汁非負(fù)數(shù)個(gè)數(shù),并計(jì)算非負(fù)數(shù)之和。main() int iza20zsznumber;s=nu mber=0;for(i=0;iv20;i+)scanf(%d:_);for(i=0;iv20;i+) if(aimain(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論