c语言实验四报告,湖北理工学院14本科C语言实验报告实验四数组
湖北理工學(xué)院14本科C語言實驗報告實驗四 數(shù)組.doc
實驗四 數(shù) 組實驗課程名C語言程序設(shè)計專業(yè)班級 14電氣工程2班 學(xué)號 201440210237 姓名 熊帆 實驗時間 5.12-5.26 實驗地點 K4-208 指導(dǎo)教師 祁文青 一、實驗?zāi)康暮鸵?. 掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法;2. 掌握字符數(shù)組和字符串函數(shù)的使用;3. 掌握與數(shù)組有關(guān)的算法(特別是排序算法)。二、實驗內(nèi)容1. 調(diào)試下列程序,使之具有如下功能輸入10個整數(shù),按每行3個數(shù)輸出這些整數(shù),最后輸出10個整數(shù)的平均值。寫出調(diào)試過程。include stdio.hdefine N 10void main int i,aN,av;fori0;iN;i scanfd,ai;fori0;iN;i printfd,ai; ifi30 printfn;fori0;iN;iavai;printfavfn,av;解答(1) 源代碼 includestdio.hdefine N 10void mainint i,aN;float av0;fori0;iN;iscanfd, printfn;fori0;iN;iprintf3d,ai;ifi130printfn;fori0;iN;iavai;printfn;avav/N;printfn;printfavfn,av;(2)運行結(jié)果 (3) 運行結(jié)果分析原程序中有若干處錯誤,分別為av這個變量應(yīng)該定義為float型,scanf語句中輸入數(shù)組的時候,在它前面應(yīng)該加上地址符 scanfd,d,d,d,d, a ; for i 0; i 4; i sum ai; printfsum d n, sum;該程序中有哪些錯誤如何修改寫出正確運行后的結(jié)果。解答(1) 源代碼includestdio.hvoid mainint i,a5,sum0;fori0;i4;iscanfd,fori0;i4;isumai;printfsumdn,sum;(2) 運行結(jié)果 (3) 運行結(jié)果分析原程序中的scanf語句是錯的,應(yīng)該采用for語句循環(huán)輸入,還要把a換成ai,并在前面加上地址符static int a34 1,2,3,4, 9,8,7,6, -10,10,-5,2; printf Max d, Row d, Colum d n, max, row, colum;解答(1) 源代碼includestdio.hvoid mainint i,j,row,colum,max;static int a34 1,2,3,4, 9,8,7,6, -10,10,-5,2; maxa00;fori0;i3;iforj0;j4;jifmaxaijmaxaij;rowi1; columj1;printfMaxd,Rowd,Columdn,max,row,colum;(2) 運行結(jié)果 (3) 運行結(jié)果分析應(yīng)該對原本不完整的程序作這樣的補充,加上兩個for循環(huán)語句,以實現(xiàn)找出數(shù)組中最大的元素。并用row和column分別儲存行標和列標,但要注意1。4. 數(shù)組中已存互不相同的10個整數(shù),從鍵盤輸入一個整數(shù),輸出與該值相同的數(shù)組元素下標。解答(1) 源代碼 includestdio.hvoid main int i,x,a101,2,3,4,5,6,7,8,9,10; scanfd, fori0;i10;i printf4d,ai; printfn; fori0;i10;i ifxai break; ifi10 printf該元素的下標為dn,i; else printf該數(shù)組中沒有 dn,x;(2) 運行結(jié)果 (3) 運行結(jié)果分析數(shù)組中已存互不相同的10個整數(shù)1,2,3,4,5,6,7,8,9,10。驗證程序的時候分別輸入了7和19,并且正確地輸出了下標或輸出結(jié)果。如上面兩張圖所示。5. 編寫程序,任意輸入10個整數(shù)的數(shù)列,先將整數(shù)按照從大到小的順序進行排序,然后輸入一個整數(shù)插入到數(shù)列中,使數(shù)列保持從大到小的順序。解答(1) 源代碼includestdio.hvoid mainint a11,i,j,x,temp;printf請輸入10個整數(shù)n;fori0;i10;iscanfd,forj0;j9;jfori0;i9-j;iifaiai1排序,交換tempai1;ai1ai;aitemp;fori0;i10;iprintfd ,ai;printfn;printf請再輸入一個整數(shù);scanfd,fori0,j0;i10;iifaixxai1ji;break;elsecontinue;fori0;ij1;iprintfd ,ai;輸出插入點前的數(shù)字tempaj1; aj1x;printfd ,aj1;輸出插入點的數(shù)字aj1temp;fori0;i9-j;i移位交換a10-ia9-i;fori0;i9-j;iprintfd ,aij2;輸出插入點后的數(shù)字printfn;(2)運行結(jié)果 (3)運行結(jié)果分析運行程序時輸入了這樣10個整數(shù)6 11 9 15 68 23 2 32 50 28。經(jīng)過程序中排序部分的作用,將10個整數(shù)按從大到小的順序排序為68 50 32 28 23 15 11 9 6 2。和預(yù)期是一致的,再輸入一個數(shù),以26為例,26位于28和23之間,于是按照程序變插入到28和23之間,最后輸出68 50 32 28 26 23 15 11 9 6 26. 輸入十個互不相同的整數(shù)并存在數(shù)組中,找出最大元素,并刪除。解答(1) 源代碼includestdio.hvoid mainint a10,i,m,t,n;printf輸入十個互不相同的整數(shù)n;fori0;i10;iscanfd,na0;printf刪除其中最大的數(shù)之后n;fori1;i10;iifnainai;mi;tm;forim;i9;iaiai1;a9t;fori0;i9;iprintfd ,ai;printfn;(2)運行結(jié)果 (3) 運行結(jié)果分析在運行程序的時候,輸入了如圖所示的十個不同的整數(shù),經(jīng)過程序的執(zhí)行,刪除其中最大的數(shù)97,再將剩下的9個數(shù)輸出來。7. 以下程序的功能是從鍵盤上輸入若干個學(xué)生的成績,統(tǒng)計計算出平均成績,并輸出低于平均分的學(xué)生成績,用輸入負數(shù)結(jié)束輸入。請?zhí)羁読nclude stdio.hvoid main float x1000, sum0.0, ave, a; int n0, i; printf Enter mark n ; scanff, while a0.0 n1000 sum ; xn ; n; scanff, ave ; printf Output n; printf ave fn, ave; for i0; in; i if printffn, xi;解答(1) 源代碼includestdio.hvoid mainfloat x1000,sum0.0,ave,a;int n0,i;printfEnter mark n ;scanff, whilea0.0n1000 suma; xna;n; scanff, avesum/n;printf Output n;printf ave fn, ave; fori0;in;i if xiave printffn,xi;(2)運行結(jié)果 (3) 運行結(jié)果分析運行程序的時候輸入了如上圖所示的10個分數(shù),根據(jù)while語句中的內(nèi)容,故可以把-1作為輸入結(jié)束的標志。接下來再作相應(yīng)的運算,結(jié)果均與事實相符。8. 綜合編程題打印如下楊輝三角形1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 解答(1) 源代碼includestdio.hvoid mainint a66,i,j;fori0;i6;iforj0;ji;jifi1aij1;elseifjij0aij1;ifj0ijaijai-1j-1ai-1j;printf下面的是楊輝三角形n;fori0;i6;iforj0;ji;jprintf4d,aij;printfn; (2)運行結(jié)果 (3) 運行結(jié)果分析運用二維數(shù)組的定義和for循環(huán)來實現(xiàn)輸出楊輝三角形。9. 調(diào)試下列程序,使之具有如下功能任意輸入兩個字符串如“abc 123”和“china”,并存放在a,b兩個數(shù)組中。然后把較短的字符串放在a數(shù)組,較長的字符串放在b數(shù)組。并輸出。include stdio.hinclude string.h void main char a10,b10; int c,d,k,ch; scanfs, scanfs, printfas,bsn,a,b; cstrlena; dstrlenb; ifcd fork0;kd;k chak;akbk;bkch; printfasn,a; printfbsn,b; 解答(1) 源代碼 include stdio.hinclude string.h void main char a10,b10; int c,d,k,ch; scanfs, scanfs, printfas,bsn,a,b; cstrlena; dstrlenb; ifcd fork0;kc;k chak; akbk; bkch; bk0; printfasn,a; printfbsn,b;(2)運行結(jié)果 (3) 運行結(jié)果分析原程序中,應(yīng)該把for語句中的kd改為kc,再就是在輸出最終結(jié)果之前可令bk0,以避免輸出結(jié)果中出現(xiàn)亂碼的情況。運行程序的時候,輸入a為一個較長的字符串,b較短,然后二者會進行交換,輸出結(jié)果如上圖所示。10. 閱讀下面的程序,然后回答后面的問題include stdio.hinclude string.h void main char s180, s240; int i 0, j 0; printf n Please string1; scanfs, s1; printf n Please string2; scanfs, s2; while s1i 0 i; while s2j 0 s1is2j ; s1i 0; printfn New string s, s1;編輯、運行該程序,然后分別輸入Country 和side。請問程序執(zhí)行的結(jié)果是什么輸出Countryside該程序的功能是什么將第二個字符串連接到第一個字符串的后面從而組成一個新的字符串解答(1) 源代碼include stdio.hinclude string.h void main char s180, s240; int i 0, j 0; printf n Please string1; scanfs, s1; printf n Please string2; scanfs, s2; while s1i 0 i; while s2j 0 s1is2j ; s1i 0; printfn New string s, s1; printfn;(2)運行結(jié)果 (3) 運行結(jié)果分析運行程序的時候先輸入Country,再輸side,經(jīng)過程序的運行,實現(xiàn)了將side連接到Country的后面形成新的單詞Countryside,即實現(xiàn)了將第二個字符串連接到第一個字符串的后面從而組成一個新的字符串的功能。11. 填空完成下面程序,使其功能是對從鍵盤上輸入的兩個字符串進行比較,然后輸出兩個字符串中第一個不相同字符的ASCII碼之差。例如輸入的兩個字符串分別為abcdefg和abceef,則輸出為-1。程序如下 include stdio.h void main char str1100,str2100; int i,s; printfn string 1n;getsstr1; printf“n string 2n”;getsstr2; i 1 ; whilestr1istr2istr1i 2 i; s 3 ; printfdn,s; 解答(1) 源代碼includestdio.h void main char str1100,str2100; int i,s; printfn string 1n;getsstr1; printfn string 2n;getsstr2; i0; whilestr1istr2istr1i0 i; sstr1i-str2i; printfdn,s;(2)運行結(jié)果 (3) 運行結(jié)果分析運行程序時先輸入hey boys,再輸入hey girls,兩個字符串中第一個不相同字符分別為b和g,ASCII碼值相差-5,與事實相符。12. 填空完成下面程序,使其的功能是統(tǒng)計從終端輸入字符中每個大寫字母的個數(shù)。用號作為輸入結(jié)束標志。程序如下 include stdio.h include ctype.h void main int num26,i; char c; for i0;i26;i numi0; while (1) /* 統(tǒng)計從終端輸入的大寫字母個數(shù)*/ if isupperc numc-65 (2) ; for i0;i26;i /* 輸出大寫字母和該字母的個數(shù)*/ if numiprintfcdn,i (3) ,numi; 解答(1) 源代碼includestdio.hincludectype.hvoid main int num26,i; char c; fori0;i26;i numi0; whilecgetchar ifisupperc numc-651; fori0;i26;i ifnumiprintfcdn,i65,numi;(2)運行結(jié)果 (3) 運行結(jié)果分析運行程序的時候輸入的字符串為CYUYANCNA,經(jīng)過程序的運行,統(tǒng)計出的個字母的數(shù)量與事實是相符的。13. 編寫程序,輸入若干個字符串,求出每個字符串的長度,并打印最長一個字符串的內(nèi)容。以“stop”作為輸入的最后一個字符串。解答(1) 源代碼 includestdio.h includestring.h void mainchar a2020;int i0,t0,b,c;printf請輸入字符串吧n;while1scanfs,ai;bstrlenai;printf3d,b;iftbtb;ci; ifai0s ai1t ai2o ai3p ai40break;i;printfn;printf最長的是sn,ac; (2)運行結(jié)果 (3) 運行結(jié)果分析我輸入了一個英語句子,程序統(tǒng)計出來了各個單詞的字母數(shù),并且指出了最長的單詞tomorrow,與事實是一致的。14.編寫程序,輸入字符串s1和s2以及插入位置f,在字符串s1中的指定位置f處插入字符串s2。如輸入BEIJING、123和位置3,則輸出BEI123JING123。解答(1) 源代碼includestdio.hincludestring.hvoid mainchar s120,s220,t120,t220;int i,j,n,f;printf請輸入n;scanfssd,s1,s2,nstrlens1;fori0;if;it1is1i;t1i0;strcatt1,s2;forj0;jn-f;jt2js1i;i;t2j0;strcatt1,t2;strcatt1,s2;printfsn,t1;(2)運行結(jié)果 三、結(jié)論(寫本次實驗的收獲)本次實驗主要涉及數(shù)組與for循環(huán)語句的使用,從中可以體會到對for語句的靈活運用非常高。而且要注意數(shù)組的輸入輸出問題,以及字符串數(shù)組及相關(guān)的函數(shù)的使用。
總結(jié)
以上是生活随笔為你收集整理的c语言实验四报告,湖北理工学院14本科C语言实验报告实验四数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到牛和死去的亲人是什么预兆
- 下一篇: c语言函数的形参有几个,C中子函数最多有