![教案1-C語言實(shí)驗(yàn)報(bào)告_第1頁](http://file4.renrendoc.com/view/4305a7f39bf54521d51f40d7703f96cb/4305a7f39bf54521d51f40d7703f96cb1.gif)
![教案1-C語言實(shí)驗(yàn)報(bào)告_第2頁](http://file4.renrendoc.com/view/4305a7f39bf54521d51f40d7703f96cb/4305a7f39bf54521d51f40d7703f96cb2.gif)
![教案1-C語言實(shí)驗(yàn)報(bào)告_第3頁](http://file4.renrendoc.com/view/4305a7f39bf54521d51f40d7703f96cb/4305a7f39bf54521d51f40d7703f96cb3.gif)
![教案1-C語言實(shí)驗(yàn)報(bào)告_第4頁](http://file4.renrendoc.com/view/4305a7f39bf54521d51f40d7703f96cb/4305a7f39bf54521d51f40d7703f96cb4.gif)
![教案1-C語言實(shí)驗(yàn)報(bào)告_第5頁](http://file4.renrendoc.com/view/4305a7f39bf54521d51f40d7703f96cb/4305a7f39bf54521d51f40d7703f96cb5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
教案1-C語言實(shí)驗(yàn)報(bào)告
第一篇:教案1-C語言實(shí)驗(yàn)報(bào)告機(jī)電學(xué)院機(jī)械專業(yè)—XXC語言程序設(shè)計(jì)(A)(2011-2012-1)實(shí)驗(yàn)報(bào)告1教學(xué)班級:機(jī)械091學(xué)號:09姓名:熊燁華課程教師:胡春安實(shí)驗(yàn)輔導(dǎo)教師:胡春安江西理工大學(xué)1機(jī)電學(xué)院機(jī)械專業(yè)—XX教案1Pxx-yy1:/*Pxx-yy1表示第xx頁第yy1題*/實(shí)驗(yàn)前的源程序:(P16-11)#includeusingnamespacestd;voidmain(){inta,b,c,d;coutcin>>a;coutcin>>b;c=a+(b%7);&&少了分號if(ccoutelse{d=c-7;&&少了分號cout[Error]C:\DocumentsandSettings\Administrator\MyDocuments\C-Free\Temp\未命名1.cpp:9:parseerrorbeforecharacter0311實(shí)驗(yàn)后的源程序:#includeusingnamespacestd;voidmain(){inta,b,c;coutcin>>a;coutcin>>b;c=a+(b%7);if(c>=7)c=c-7;cout江西理工大學(xué)機(jī)電學(xué)院機(jī)械專業(yè)—XX方法二:#includeusingnamespacestd;voidmain(){inta,b,c;coutcin>>a;b=a%7;switch(b){case0:coutcase1:coutcase2:coutcase3:coutcase4:coutcase5:coutcase6:cout}Pxx-yy2:Pxx-yy3:江西理工大學(xué)
第二篇:實(shí)驗(yàn)1-C語言實(shí)驗(yàn)報(bào)告C語言程序設(shè)計(jì)(A)(2011-2012-1)實(shí)驗(yàn)報(bào)告1教學(xué)班級:機(jī)械094學(xué)號:01姓名:譚亮恩課程教師:曹瑛實(shí)驗(yàn)輔導(dǎo)教師:曹瑛江西理工大學(xué)P6-4:/*P6-4表示第6頁第四題*/intmain(){floatr,s;r=15.5;s=2*3.14*r;printf("r=%4.2f,s=%f",r,s);return0;}結(jié)果是:r=15.5s=97.34P32-3-1:/*P32-3-1表示第6頁第四題第一小題*/#includeintmain(){printf("this\tis\tc\bC\tprogram.\rT\n");return0;}結(jié)果是:ThisisCprogram.P32-3-2:/*P32-3-2表示第6頁第四題第二小題*/#includeintmain(){printf("*\abd\bc\t\r\*ABCD\105\x46*");return0;}結(jié)果是:\*ABCDEF*\江西理工大學(xué)
第三篇:C語言實(shí)驗(yàn)報(bào)告C語言第一學(xué)期實(shí)驗(yàn):第1次實(shí)驗(yàn):時(shí)間2010-9-15項(xiàng)目名稱:創(chuàng)建第一個(gè)C語言程序?qū)嶒?yàn)程序:2、在菜單中選擇“文件”“新建”,在“工程”選項(xiàng)卡中選擇“Win32ConsoleApplication”,輸入一個(gè)名稱,點(diǎn)“確定”,新建一個(gè)新的工程。3、再選擇“文件”“新建”命令,在“文件”選項(xiàng)卡中選擇“C++SourceFile”,輸入一個(gè)名稱,點(diǎn)“確定”,新建一個(gè)C++源文件。由于C++全面支持C,因此可以在此輸入C語言的源代碼,進(jìn)行實(shí)驗(yàn)。4、在代碼框中輸入如下代碼:#includevoidmain(){inta,b,sum;a=123;b=456;sum=a+b;printf("sumis%d\n",sum);}5、編譯、連接、運(yùn)行:在“編譯”中選擇“編譯”,沒有錯(cuò)誤和警告以后,在“編譯”中選擇“構(gòu)建”最后在“編譯”中選擇“執(zhí)行”。實(shí)驗(yàn)結(jié)果:sumis579討論:本實(shí)驗(yàn)讓我們了解了如何創(chuàng)建一個(gè)C語言的控制臺應(yīng)用程序,并學(xué)會(huì)了C語言程序的基本構(gòu)架和個(gè)別特殊語句如“main”“printf”等。實(shí)驗(yàn)地點(diǎn):3B-203第2次實(shí)驗(yàn):時(shí)間:2010-10-6項(xiàng)目名稱:順序結(jié)構(gòu)程序設(shè)計(jì)實(shí)驗(yàn)(書89頁4.9題,先把題抄下來)實(shí)驗(yàn)程序:(自己寫代碼)2、編譯、連接、運(yùn)行:在“編譯”中選擇“編譯”,沒有錯(cuò)誤和警告以后,在“編譯”中選擇“構(gòu)建”最后在“編譯”中選擇“執(zhí)行”。實(shí)驗(yàn)結(jié)果:??討論:??實(shí)驗(yàn)地點(diǎn):3B-203第3次實(shí)驗(yàn):時(shí)間:2010-10-27項(xiàng)目名稱:選擇語句switch的使用(書111頁5.6題,先抄題)(自己寫代碼)2、編譯、連接、運(yùn)行:在“編譯”中選擇“編譯”,沒有錯(cuò)誤和警告以后,在“編譯”中選擇“構(gòu)建”最后在“編譯”中選擇“執(zhí)行”。實(shí)驗(yàn)結(jié)果:??討論:??實(shí)驗(yàn)地點(diǎn):3B-203第4次實(shí)驗(yàn):時(shí)間:2010-11-17項(xiàng)目名稱:循環(huán)語句for的使用(書129頁6.1,先抄題)(自己寫代碼)2、編譯、連接、運(yùn)行:在“編譯”中選擇“編譯”,沒有錯(cuò)誤和警告以后,在“編譯”中選擇“構(gòu)建”最后在“編譯”中選擇“執(zhí)行”實(shí)驗(yàn)結(jié)果:??討論:??實(shí)驗(yàn)地點(diǎn):3B-203第5次實(shí)驗(yàn):時(shí)間:2010-12-8項(xiàng)目名稱:數(shù)組的應(yīng)用(書134頁例題7.3,先抄題)2、編譯、連接、運(yùn)行:在“編譯”中選擇“編譯”,沒有錯(cuò)誤和警告以后,在“編譯”中選擇“構(gòu)建”最后在“編譯”中選擇“執(zhí)行”實(shí)驗(yàn)結(jié)果:??討論:??實(shí)驗(yàn)地點(diǎn):3B-203第二學(xué)期實(shí)驗(yàn):第1次實(shí)驗(yàn):時(shí)間2011-2-25項(xiàng)目名稱:編寫函數(shù)(在主函數(shù)中輸入兩個(gè)數(shù),分別調(diào)用四個(gè)自定義函數(shù),實(shí)現(xiàn)兩個(gè)數(shù)的加、減、乘、除并輸出結(jié)果。)intadd(intx,inty);intsub(intx,inty);intmul(intx,inty);floatdiv(intx,inty);intc,a,b;floatd;scanf("%d,%d",&a,&b);c=add(a,b);printf("%d+%d=%d\n",a,b,c);c=sub(a,b);printf("%d-%d=%d\n",a,b,c);c=mul(a,b);printf("%d*%d=%d\n",a,b,c);d=div(a,b);printf("%d/%d=%f\n",a,b,d);}intadd(intx,inty){returnx+y;}intsub(intx,inty){}returnx-y;intmul(intx,inty){}{returnx*y;floatdiv(intx,inty)return(float)x/(float)y;}2、編譯、連接、運(yùn)行:在“編譯”中選擇“編譯”,沒有錯(cuò)誤和警告以后,在“編譯”中選擇“構(gòu)建”最后在“編譯”中選擇“執(zhí)行”。實(shí)驗(yàn)結(jié)果:??討論:??。實(shí)驗(yàn)地點(diǎn):3B-201第2次實(shí)驗(yàn):時(shí)間:2011-3-11項(xiàng)目名稱:指針的應(yīng)用(書278頁10.3,先抄題)2、編譯、連接、運(yùn)行:在“編譯”中選擇“編譯”,沒有錯(cuò)誤和警告以后,在“編譯”中選擇“構(gòu)建”最后在“編譯”中選擇“執(zhí)行”。實(shí)驗(yàn)結(jié)果:??討論:??實(shí)驗(yàn)地點(diǎn):3B-203第3次實(shí)驗(yàn):時(shí)間:2011-4-8項(xiàng)目名稱:順序結(jié)構(gòu)程序設(shè)計(jì)實(shí)驗(yàn)(書318頁11.3題,先把題抄下來)(自己寫代碼)2、編譯、連接、運(yùn)行:在“編譯”中選擇“編譯”,沒有錯(cuò)誤和警告以后,在“編譯”中選擇“構(gòu)建”最后在“編譯”中選擇“執(zhí)行”。實(shí)驗(yàn)結(jié)果:??討論:??實(shí)驗(yàn)地點(diǎn):3B-2039.1#include#defineS(A,B,T)T=A;A=B;B=Tvoidmain(){}9.6#include#definePRprintf#defineNL"\n"inta,b,t;scanf("%d,%d",&a,&b);S(a,b,t);printf("%d,%d\n",a,b);#defineF"%6.2f"#defineF1FNL#defineF2FFNL#defineF3FFFNLvoidmain(){floata,b,c;a=1;b=2;c=3;PR(F1,a);PR(F2,a,b);PR(F3,a,b,c);}作業(yè):#include#includevoidmain(){voidfun1(floata,floatb,floatc);voidfun2(floata,floatb,floatc);voidfun3(floata,floatb,floatc);floata,b,c,disc;scanf("%f%f%f",&a,&b,&c);disc=b*b-4*a*c;if(disc>0)fun1(a,b,c);elseif(disc==0)fun2(a,b,c);elsefun3(a,b,c);}voidfun1(floata,floatb,floatc){floatd=b*b-4*a*c;floatx1,x2;x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf("%f,%f\n",x1,x2);}voidfun2(floata,floatb,floatc){floatd=b*b-4*a*c;floatx1,x2;x1=x2=(-b)/(2*a);printf("%f,%f\n",x1,x2);}voidfun3(floata,floatb,floatc){printf("此函數(shù)無解");}P278#includevoidmain(){voidaa(intx[],intn);inti,a[10];for(i=0;iprintf("交換前:\n");for(i=0;iprintf("交換后:\n");for(i=0;iprintf("%d,",a[i]);printf("\n");}voidaa(intx[],intn){int《指針》C語言實(shí)驗(yàn)報(bào)告C語言實(shí)驗(yàn)報(bào)告《指針》學(xué)號:__________姓名:__________班級:__________日期:__________指導(dǎo)教師:__________成績:__________實(shí)驗(yàn)五指針一、實(shí)驗(yàn)?zāi)康?、掌握指針的概念、會(huì)定義和使用指針變量2、掌握指向數(shù)組的指針變量3、掌握字符串指針的'使用二、實(shí)驗(yàn)內(nèi)容1、輸入3個(gè)字符串,按由小到大的順序輸出。(習(xí)題10.2)2、寫一函數(shù),求一個(gè)字符串的長度。在main函數(shù)中輸入字符串,并輸出其長度。(習(xí)題10.6)3、完善程序,要求使用函數(shù)功能:將一個(gè)數(shù)字字符串轉(zhuǎn)換成一個(gè)整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)換為整數(shù)的函數(shù))。例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。#include#includelongfun(char*p)填寫程序voidmain()chars[6];longn;printf("Enterastring:");gets(s);n=fun(s);printf("%ld",n);三、實(shí)驗(yàn)步驟與過程四、程序調(diào)試記錄
第一篇:二叉排序樹節(jié)點(diǎn)的插入和刪除實(shí)驗(yàn)設(shè)計(jì)報(bào)告(用C語言實(shí)現(xiàn))二叉排序樹節(jié)點(diǎn)的插入和刪除實(shí)驗(yàn)設(shè)計(jì)報(bào)告1程序功能描述:用二叉樹的所學(xué)知識建立二叉排序樹,對已建立的排序二叉樹進(jìn)行遍歷(先序,中序,后序),插入,查找,刪除。2主要數(shù)據(jù)結(jié)構(gòu)描述:二叉排序樹若不為空樹,那么相比于其他的樹,它具有一下特性:1.、左兒子永遠(yuǎn)小于雙親結(jié)點(diǎn);2、右兒子永遠(yuǎn)大于雙親結(jié)點(diǎn)。其中結(jié)點(diǎn)由一個(gè)存放信息的空間和兩個(gè)指針構(gòu)成。3程序結(jié)構(gòu)描述:以C語言為工具,在主函數(shù)外部定義二叉排序樹的遍歷(先序,中序,后序),插入,刪除函數(shù),在主函數(shù)中調(diào)用,其中主函數(shù)中用switch…case…結(jié)構(gòu),有選擇性的進(jìn)行功能的實(shí)現(xiàn)。4算法描述:二叉排序樹插入結(jié)點(diǎn)的算法:1若建立的二叉排序樹中已有與欲插入的數(shù)相同的結(jié)點(diǎn)則無須插入;2以while(p)控制循環(huán)變量,若欲插入的數(shù)比根結(jié)點(diǎn)小的話,執(zhí)行P=P->lchild;若大于p->data;則執(zhí)行P=P->rchild;,直至p為空。此過程中一直用指針F記錄前一步p的位置。3在第2歩確定了的位置的基礎(chǔ)上進(jìn)行插入,若與插入的數(shù)小于F->data,則執(zhí)行F->lchild=S;若大于F->data,則執(zhí)行F->rchild=S;二叉排序樹的建立:通過對插入函數(shù)的調(diào)用即T=InsertBST(T,k);以while(k!=-1)控制循環(huán),遞歸的進(jìn)行插入直至生成二叉排序樹。二叉排序樹的遍歷算法:1、先序遍歷:先輸出根結(jié)點(diǎn)的信息;然后調(diào)用函數(shù)PreOrderTraverse(T->lchild),遞歸的輸出左子樹的信息;最后調(diào)用函數(shù)PreOrderTraverse(T->rchild),遞歸輸出有子樹的信息。2、中序遍歷:先調(diào)用函數(shù)PreOrderTraverse(T->lchild),遞歸的輸出左子樹的信息;然后輸出根結(jié)點(diǎn)的信息;最后調(diào)用函數(shù)PreOrderTraverse(T->rchild),遞歸輸出有子樹的信息。3、后序遍歷:先調(diào)用函數(shù)PreOrderTraverse(T->lchild),遞歸的輸出左子樹的信息;然后調(diào)用函數(shù)PreOrderTraverse(T->rchild),遞歸輸出有子樹的信息,最后輸出根結(jié)點(diǎn)的信息。二叉排序樹的刪除算法:通過*f,*p,*q,*c;四個(gè)指針,先對二叉排序樹查找,用f,q指針跟誰p指針,通過q->data=p->data,掩蓋與刪除的信息;再借助指針c,通過語句f->lchild=c和free(p)或f->rchild=c和free(p),刪除結(jié)點(diǎn)p,此時(shí)結(jié)點(diǎn)的刪除得以實(shí)現(xiàn)。5程序測試方案與測試結(jié)果描述:功能1:二叉樹的遍歷輸入節(jié)點(diǎn)信息:36841-1;先序遍歷31648中序遍歷13468后序遍歷14863截圖如下:功能2:向原有的二叉樹中插入一個(gè)結(jié)點(diǎn)插入2插入后遍歷如下:先序遍歷:312648中序遍歷:123468后序遍歷:214863截圖如下:功能3:刪除一個(gè)結(jié)點(diǎn):刪除4刪除后遍歷結(jié)果如下:先序遍歷:31268中序遍歷:12368后序遍歷:21863截圖如下:功能0:輸入0顯示:退出。截圖如下:
第二篇:實(shí)驗(yàn)報(bào)告:二叉樹實(shí)驗(yàn)報(bào)告二叉樹一實(shí)驗(yàn)?zāi)康?、進(jìn)一步掌握指針變量,動(dòng)態(tài)變量的含義;2、掌握二叉樹的結(jié)構(gòu)特性以及各種存儲(chǔ)結(jié)構(gòu)的特點(diǎn)及適用范圍。3、掌握用指針類型描述、訪問和處理二叉樹的運(yùn)算。4、熟悉各種存儲(chǔ)結(jié)構(gòu)的特征以及如何應(yīng)用樹結(jié)構(gòu)解決具體問題。二實(shí)驗(yàn)原理樹形結(jié)構(gòu)是一種應(yīng)用十分廣泛和重要的非線性數(shù)據(jù)結(jié)構(gòu),是一種以分支關(guān)系定義的層次結(jié)構(gòu)。在這種結(jié)構(gòu)中,每個(gè)數(shù)據(jù)元素至多只有一個(gè)前驅(qū),但可以有多個(gè)后繼;數(shù)據(jù)元素之間的關(guān)系是一對多的層次關(guān)系。樹形結(jié)構(gòu)主要用于描述客觀世界中具有層次結(jié)構(gòu)的數(shù)據(jù)關(guān)系,它在客觀世界中大量存在。遍歷二叉樹的實(shí)質(zhì)是將非線性結(jié)構(gòu)轉(zhuǎn)為線性結(jié)構(gòu)。三使用儀器,材料四實(shí)驗(yàn)步驟【問題描述】建立一個(gè)二叉樹,請分別按前序,中序和后序遍歷該二叉樹?!净疽蟆繌逆I盤接受輸入(按前序順序),以二叉鏈表作為存儲(chǔ)結(jié)構(gòu),建立二叉樹(以前序來建立),并采用遞歸算法對其進(jìn)行前序,中序和后序遍歷,將結(jié)果輸出?!緦?shí)現(xiàn)提示】按前序次序輸入二叉樹中結(jié)點(diǎn)的值(一個(gè)整數(shù)),0表示空樹,葉子結(jié)點(diǎn)的特征是其左右孩子指針為空。五實(shí)驗(yàn)過程原始記錄1基本數(shù)據(jù)結(jié)構(gòu)描述;2函數(shù)間的調(diào)用關(guān)系;3用類C語言描述各個(gè)子函數(shù)的算法;附錄:源程序。六試驗(yàn)結(jié)果分析將實(shí)驗(yàn)結(jié)果分析、實(shí)驗(yàn)中遇到的問題和解決問題的方法以及關(guān)于本實(shí)驗(yàn)項(xiàng)目的心得體會(huì),寫在實(shí)驗(yàn)報(bào)告上。
第三篇:家譜的設(shè)計(jì)與實(shí)現(xiàn)(二叉樹)家譜的設(shè)計(jì)與實(shí)現(xiàn)(樹,查找)家譜的設(shè)計(jì)主要是實(shí)現(xiàn)對家庭成員信息的建立、查找、插入、修改、刪除等功能。可。基本功能如下:(1)家譜中每個(gè)成員的信息包括:姓名、性別。(2)家譜祖先數(shù)據(jù)的錄入(樹的根結(jié)點(diǎn))。(3)家庭成員的添加:即添加某人的兒女(包括姓名和性別),兒女的數(shù)目由控制臺端給出,然后輸入相應(yīng)的兒女姓名和性別(此處所有兒女的姓名不能重名)。(4)家庭成員的修改:可以修改某一成員的姓名。(5)家庭成員的查詢:查詢某一成員在家族中的輩分(第幾代),并能查詢此成員的所有子女及這一輩的所有成員。(6)家庭成員的刪除:刪除此成員時(shí),若其有后代,將刪除其所有后代成員。#include#include#include#include#defineMAX10typedefstructnode{//定義data存儲(chǔ)結(jié)構(gòu)charname[MAX];//姓名charsex;//性別intgeneration;//代目}node;typedefstructft{//創(chuàng)建結(jié)構(gòu)體structnodel;//家譜中直系家屬structft*brother;//用來指向兄弟structft*child;//用來指向孩子}ft;ft*root;//root是結(jié)構(gòu)體ft的指針ft*search(ft*p,charch[])//搜索指針函數(shù){ft*q;if(p==NULL)returnNULL;//沒有家譜,頭指針下為空if(strcmpi(p->,ch)==0)returnp;//家譜不為空,頭指針下有這個(gè)人if(p->brother){q=search(p->brother,ch);//在兄弟中找if(q)returnq;//找到}if(p->child){q=search(p->child,ch);//在孩子中找if(q!=NULL)returnq;}returnNULL;//沒有找到}ft*parent(ft*p,ft*q,int*flag)//通過parent函數(shù)得到雙親結(jié)點(diǎn)。用flag標(biāo)志,-1為左孩子,1為右孩子{if(p==NULL)returnNULL;//沒有家譜,頭指針下為空if(p->child==NULL){flag=0;returnNULL;}else{if(p->brother==q){*flag=1;returnp;}else{if(p->child==q){*flag=-1;returnp;}else{if(p->brother!=NULL){parent(p->brother,q,*&flag);}if(p->child!=NULL){parent(p->child,q,*&flag);}}}}}intgeneration(ft*p,charch[])//獲得搜索到的成員的代目的返回值{ft*q;if(p==NULL)returnNULL;}if(strcmpi(p->,ch)==0)returnp->l.generation;//家譜不為空,頭指針下有這個(gè)人if(p->brother){q=search(p->brother,ch);//在兄弟中找if(q)returnq->l.generation;//找到}if(p->child){q=search(p->child,ch);//在孩子中找if(q!=NULL)returnq->l.generation;}returnNULL;voidsaves(ft*p,charb[],charc,intd)//建立家譜孩子結(jié)點(diǎn)創(chuàng)建結(jié)點(diǎn)并對l賦值保存{for(inti=0;[i]=b[i];p->l.sex=c;p->l.generation=d;}voiddisp(ft*n)//搜索到數(shù)據(jù)的輸出{ft*t=NULL;printf("此人姓名:%s性別%c為第%d代\n",n->,n->l.sex,n->l.generation);printf("\n");printf("此人的子女:");//子女輸出if(n->child==NULL){printf("此人無子女!");}else{if(n->child->brother==NULL){printf("姓名:%s性別:%c\t",n->child->,n->child->l.sex);}else{printf("姓名:%s性別:%c\t",n->child->,n->child->l.sex);t=n->child->brother;while(t!=NULL){printf("姓名:%s性別:%c\t",t->,t->l.sex);t=t->brother;}}}printf("\n");printf("\n");printf("此人的同輩成員:");//同輩輸出if(n->brother==NULL){printf("此人無同輩成員!");}else{if(n->brother->brother==NULL){printf("姓名:%s性別:%c\t",n->brother->,n->brother->l.sex);}else{printf("姓名:%s性別:%c\t",n->brother->,n->brother->l.sex);t=n->brother->brother;while(t!=NULL){printf("姓名:%s性別:%c\t",t->,t->l.sex);t=t->brother;}}}printf("\n");}voidInitTree()//初始化{charb[MAX],c;inta;printf("請輸入始祖的姓名性別:");free(root);//釋放root(ft)空間root=(ft*)malloc(sizeof(ft));//創(chuàng)建一個(gè)ft結(jié)構(gòu)體大小的空間然后強(qiáng)制轉(zhuǎn)換為ft*類型的指針然后賦值給root//這時(shí)root指向一個(gè)structdictree結(jié)構(gòu)體大小的新空間scanf("%s%c",&b,&c);a=1;//輸入姓名,性別root->child=NULL;//清空左右孩子root->brother=NULL;saves(root,b,c,a);//存入結(jié)構(gòu)printf("家譜重構(gòu)成功!\n");}voidManu(){printf("*********************************************\n");}printf("*****請選擇對家譜的操作:*****\n");printf("*****0.退出*****\n");printf("*****1.添加*****\n");printf("*****2.查找*****\n");printf("*****3.修改*****\n");printf("*****4.刪除*****\n");printf("*****5.重構(gòu)*****\n");printf("*********************************************\n");voidAdd()//添加{ft*n,*m,*t=NULL;charb[MAX],c,d[MAX];inti;printf("請輸入要添加子女的上一輩的姓名:\n");//判斷是否有重名scanf("%s",&d);n=search(root,d);inta=generation(root,d);while(n==NULL){printf("此人不在家譜內(nèi),請重新輸入姓名:\n");scanf("%s",&d);n=search(root,d);}//孩子信息添加if(n->child==NULL){printf("孩子姓名與性別輸入:\n");scanf("%s%c",&b,&c);a++;m=search(root,b);if(m!=NULL){printf("出現(xiàn)重名,添加失敗!\n");}else{n->child=(ft*)malloc(sizeof(ft));n->child->brother=NULL;n->child->child=NULL;saves(n->child,b,c,a);printf("添加成功!\n");}}else{n=n->child;while(n->brother!=NULL)n=n->brother;printf("孩子姓名與性別輸入:\n");scanf("%s%c",&b,&c);a++;m=search(root,b);if(m!=NULL)printf("出現(xiàn)重名,添加失敗!\n");else{t=(ft*)malloc(sizeof(ft));saves(t,b,c,a);t->brother=NULL;t->child=NULL;n->brother=t;printf("添加成功!\n");}}}voidSearch()//查詢{ft*n;chard[MAX];}printf("輸入姓名,查找相關(guān)信息:\n");scanf("%s",&d);n=search(root,d);while(n==NULL){printf("此人不存在,請?jiān)俅屋斎?\n");scanf("%s",&d);n=search(root,d);}disp(n);voidChange()//修改{chara[MAX],r[MAX],c;ft*n;printf("請輸入要修改人的姓名:");scanf("%s",&a);n=search(root,a);while(n==NULL){}printf("此人不存在,請重新輸入姓名:\n");scanf("%s",&a);n=search(root,a);printf("此人存在,請輸入新信息:");scanf("%s%c",&r,&c);for(inti=0;[i]=r[i];n->l.sex=c;printf("修改成功!\n");}voidDel()//刪除{ft*n,*m;intflag;chard[MAX],a[MAX];printf("請輸入要?jiǎng)h除人的姓名:");scanf("%s",a);n=search(root,a);while(n==NULL){printf("此人不存在,請重新輸入姓名:\n");scanf("%s",&a);n=search(root,a);}printf("\n");printf("此人已找到!\n");printf("\n");m=parent(root,n,&flag);if(flag>0){m->brother=n->brother;printf("刪除成功!\n");}elseif(flagchild=n->brother;printf("刪除成功!\n");}}intmain(){InitTree();for(;;){system("pause");system("cls");Manu();intchoice;scanf("%d",&choice);switch(choice){case0:exit(0);break;//退出case1:Add();break;//添加case2:Search();break;//查找case3:Change();break;//修改case4:Del();break;//刪除case5:InitTree();break;//初始化}}}return0;
第四篇:數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告-二叉樹的實(shí)現(xiàn)與遍歷《數(shù)據(jù)結(jié)構(gòu)》第六次實(shí)驗(yàn)報(bào)告學(xué)生姓名學(xué)生班級學(xué)生學(xué)號指導(dǎo)老師重慶郵電大學(xué)計(jì)算機(jī)學(xué)院計(jì)算機(jī)專業(yè)實(shí)驗(yàn)中心一、實(shí)驗(yàn)內(nèi)容1)采用二叉樹鏈表作為存儲(chǔ)結(jié)構(gòu),完成二叉樹的建立,先序、中序和后序以及按層次遍歷的操作,求所有葉子及結(jié)點(diǎn)總數(shù)的操作。2)輸出樹的深度,最大元,最小元。二、需求分析遍歷二叉樹首先有三種方法,即先序遍歷,中序遍歷和后序遍歷。遞歸方法比較簡單,首先獲得結(jié)點(diǎn)指針如果指針不為空,且有左子,從左子遞歸到下一層,如果沒有左子,從右子遞歸到下一層,如果指針為空,則結(jié)束一層遞歸調(diào)用。直到遞歸全部結(jié)束。下面重點(diǎn)來講述非遞歸方法:首先介紹先序遍歷:先序遍歷的順序是根左右,也就是說先訪問根結(jié)點(diǎn)然后訪問其左子再然后訪問其右子。具體算法實(shí)現(xiàn)如下:如果結(jié)點(diǎn)的指針不為空,結(jié)點(diǎn)指針入棧,輸出相應(yīng)結(jié)點(diǎn)的數(shù)據(jù),同時(shí)指針指向其左子,如果結(jié)點(diǎn)的指針為空,表示左子樹訪問結(jié)束,棧頂結(jié)點(diǎn)指針出棧,指針指向其右子,對其右子樹進(jìn)行訪問,如此循環(huán),直至結(jié)點(diǎn)指針和棧均為空時(shí),遍歷結(jié)束。再次介紹中序遍歷:中序遍歷的順序是左根右,中序遍歷和先序遍歷思想差不多,只是打印順序稍有變化。具體實(shí)現(xiàn)算法如下:如果結(jié)點(diǎn)指針不為空,結(jié)點(diǎn)入棧,指針指向其左子,如果指針為空,表示左子樹訪問完成,則棧頂結(jié)點(diǎn)指針出棧,并輸出相應(yīng)結(jié)點(diǎn)的數(shù)據(jù),同時(shí)指針指向其右子,對其右子樹進(jìn)行訪問。如此循環(huán)直至結(jié)點(diǎn)指針和棧均為空,遍歷結(jié)束。最后介紹后序遍歷:后序遍歷的順序是左右根,后序遍歷是比較難的一種,首先需要建立兩個(gè)棧,一個(gè)用來存放結(jié)點(diǎn)的指針,另一個(gè)存放標(biāo)志位,也是首先訪問根結(jié)點(diǎn),如果結(jié)點(diǎn)的指針不為空,根結(jié)點(diǎn)入棧,與之對應(yīng)的標(biāo)志位也隨之入標(biāo)志位棧,并賦值0,表示該結(jié)點(diǎn)的右子還沒有訪問,指針指向該結(jié)點(diǎn)的左子,如果結(jié)點(diǎn)指針為空,表示左子訪問完成,父結(jié)點(diǎn)出棧,與之對應(yīng)的標(biāo)志位也隨之出棧,如果相應(yīng)的標(biāo)志位值為0,表示右子樹還沒有訪問,指針指向其右子,父結(jié)點(diǎn)再次入棧,與之對應(yīng)的標(biāo)志位也入棧,但要給標(biāo)志位賦值為1,表示右子訪問過。如果相應(yīng)的標(biāo)志位值為1,表示右子樹已經(jīng)訪問完成,此時(shí)要輸出相應(yīng)結(jié)點(diǎn)的數(shù)據(jù),同時(shí)將結(jié)點(diǎn)指針賦值為空,如此循環(huán)直至結(jié)點(diǎn)指針和棧均為空,遍歷結(jié)束。三、詳細(xì)設(shè)計(jì)源代碼:#include#defineMAX100//表示棧的最大容量#defineFULL99//表示棧滿#defineEMPTY-1//表示??誸ypedefstructTnode//定義結(jié)點(diǎn){chardata;//存儲(chǔ)結(jié)點(diǎn)數(shù)據(jù)structTnode*left;//定義結(jié)點(diǎn)左子指針structTnode*right;//定義右子指針}Tnode,*Pnode;//聲明Tnode類型的變量和指針typedefstructStack//定義棧{Pnodepnode[MAX];//存放數(shù)據(jù)intp;//棧頂指針}Stack,*Pstack;//定義Stack類型的變量和指針voidPush(Pstackpstack,Pnodepnode)//入棧{}PnodePop(Pstackpstack)//出棧{}PnodeTop(Pstackpstack)//看棧頂元素{}intIsempty(Pstackpstack)//棧判空{(diào)}intIsfull(Pstackpstack)//棧滿{}voidInitstack(Pstackpstack)//初始化棧if(pstack->p==FULL)elsereturn0;return1;if(pstack->p==EMPTY)elsereturn0;;return1;returnpstack->pnode[pstack->p];returnpstack->pnode[pstack->p--];pstack->p++;pstack->pnode[pstack->p]=pnode;//賦值{}voidInittnode(Pnoderoot,Pnodeleft,Pnoderight,chardata)//初始化結(jié)點(diǎn){}voidPreorderR(Pnodeproot)//遞歸先序遍歷算法{}voidInorderR(Pnodeproot)//遞歸中序遍歷算法{}voidPostorderR(Pnodeproot)//遞歸后序遍歷算法{}voidPreorderI(Pnodeproot,Pstackpstack)//非遞歸先序遍歷算法{Initstack(pstack);//初始化棧while(proot||!Isempty(pstack))//如果??詹⑶医Y(jié)點(diǎn)指針空,則結(jié)束循環(huán){if(proot){printf("%2c",proot->data);if(proot){}PostorderR(proot->left);PostorderR(proot->right);printf("%2c",proot->data);if(proot){}InorderR(proot->left);printf("%2c",proot->data);InorderR(proot->right);if(proot){}printf("%2c",proot->data);PreorderR(proot->left);PreorderR(proot->right);root->left=left;root->right=right;root->data=data;pstack->p=EMPTY;}}}else{}if(Isfull(pstack))//如果棧滿不能執(zhí)行入棧操作{}Push(pstack,proot);//入棧proot=proot->left;//指針指向左子printf("棧滿,不能執(zhí)行入棧操作??!");return;if(Isempty(pstack))//??諘r(shí)不能出棧{}proot=Pop(pstack);//執(zhí)行出棧操作proot=proot->right;//指針指向右子printf("???,不能執(zhí)行出棧操作??!");return;voidInorderI(Pnodeproot,Pstackpstack)//非遞歸中序遍歷算法{Initstack(pstack);//初始化棧while(proot||!Isempty(pstack))//循環(huán)結(jié)束條件{if(proot){}else{if(Isempty(pstack)){}proot=Pop(pstack);//出棧printf("%2c",proot->data);//打印數(shù)據(jù)printf("??眨荒軋?zhí)行出棧操作??!");return;if(Isfull(pstack)){}Push(pstack,proot);//執(zhí)行入棧操作proot=proot->left;//指針指向左子printf("棧滿,不能執(zhí)行入棧操作??!");return;}}}proot=proot->right;//指針指向右子voidPostorderI(Pnodeproot,Pstackpstack)//非遞歸后續(xù)遍歷算法{}voidmain(){intflags[MAX];//定義標(biāo)志位棧intp=-1;//初始化標(biāo)志位棧intflag;//存放標(biāo)志位Initstack(pstack);//初始化棧while(proot||!Isempty(pstack))//循環(huán)結(jié)束條件{}if(proot){}else{}proot=Pop(pstack);//指針出棧flag=flags[p--];//相應(yīng)標(biāo)志位出棧if(flag==0)//如果標(biāo)志位為0表示右子還未訪問過{}else{}printf("%2c",proot->data);//打印數(shù)據(jù)proot=NULL;//將結(jié)點(diǎn)指針置空flag=1;//將標(biāo)志位置1,右子已訪問flags[++p]=flag;//標(biāo)志位入棧Push(pstack,proot);//結(jié)點(diǎn)入棧if(Isfull(pstack)){}flags[++p]=0;//標(biāo)志位置0,并入棧Push(pstack,proot);//結(jié)點(diǎn)入棧proot=proot->left;//指針指向左子printf("棧滿,不能執(zhí)行入棧操作?。?);return;proot=proot->right;//指針指向右子TnodeA,B,C,D,E,F,G;//聲明結(jié)點(diǎn)變量Stackstack;//聲明棧Inittnode(&A,&B,&C,'A');//初始化結(jié)點(diǎn)Inittnode(&B,NULL,&D,'B');Inittnode(&C,&E,&F,'C');Inittnode(&D,NULL,NULL,'D');Inittnode(&E,NULL,NULL,'E');Inittnode(&F,&G,NULL,'F');Inittnode(&G,NULL,NULL,'G');printf("你定義的樹的結(jié)構(gòu)是:\n");printf("A(B(D)C(EF(G)))\n");printf("=====================下面是遍歷結(jié)果====================\n");printf("=====================遞歸先序遍歷:====================\n");PreorderR(&A);printf("\n");printf("=====================非遞歸先序遍歷:==================\n");PreorderI(&A,&stack);printf("\n");printf("=====================遞歸中序遍歷:====================\n");InorderR(&A);printf("\n");printf("=====================非遞歸中序遍歷:==================\n");InorderI(&A,&stack);printf("\n");PostorderR(&A);printf("\n");PostorderI(&A,&stack);printf("\n");/*一下是調(diào)用相應(yīng)的函數(shù)輸出遍歷結(jié)果*/}printf("=====================遞歸后序遍歷:====================\n");printf("=====================非遞歸后序遍歷:==================\n");五、遇到的問題及解決辦法這部分我主要遇到如下兩個(gè)問題,其內(nèi)容和解決方法如下所列:執(zhí)行程序時(shí)程序停止運(yùn)行,其效果如圖:解決方法:看到程序停止運(yùn)行,推測可能的原因:遇到死循環(huán)、參數(shù)設(shè)置不合理或者結(jié)構(gòu)體沒有造好。首先對結(jié)構(gòu)體進(jìn)行了檢查,各個(gè)成員聲明正常無誤,在對程序進(jìn)行調(diào)試,程序正常跳出循環(huán),因此最可能是自定義函數(shù)的參數(shù)設(shè)置的不合理,因此對調(diào)用的自定義函數(shù)進(jìn)行相應(yīng)的改動(dòng),將參數(shù)由具體類型改為指針類型后,程序正常運(yùn)行。程序不停的輸出同一個(gè)結(jié)點(diǎn)的數(shù)據(jù),其效果入圖:解決方法:分析運(yùn)行結(jié)果可知,第一不停的輸出證明遇到了死循環(huán),第二輸出的是同一個(gè)結(jié)點(diǎn)的數(shù)據(jù),表示指針沒有按預(yù)期進(jìn)行指向,首先對程序進(jìn)行調(diào)試,發(fā)現(xiàn)程序沒有添加循環(huán)結(jié)束條件,添加循環(huán)結(jié)束條件后,只能輸出樹的部分結(jié)點(diǎn)的數(shù)據(jù),對標(biāo)志位進(jìn)行修改后,程序運(yùn)行正常,也能正確輸出遍歷結(jié)果。六、心得體會(huì)通過這次作業(yè)真的受益匪淺,感觸良多:首先,要提高編程能力,必須多動(dòng)手,多實(shí)踐,而不是僅僅局限在書本上,更不能眼高手低。眼高手低,懶得動(dòng)手,這就犯了編程人員的大忌。大一我們開始接觸C語言,這是我們接觸到的第一種編程語言,但是當(dāng)時(shí)徒有對編程的興趣,卻沒有付諸行動(dòng),動(dòng)手少,結(jié)果考試險(xiǎn)過,通過這次作業(yè),我再次看了C語言課本,邊看邊寫代碼,理解快,印象深刻,思維也活躍許多,狀態(tài)也好,真正的意識到,編程能力需要靠實(shí)踐來提升。當(dāng)自己寫出意想的程序后,真的有些成就感。再者,在吳老師的指導(dǎo)和要求下,我們改掉了很多的編程壞習(xí)慣的同時(shí)也養(yǎng)成了良好的編程習(xí)慣,另一方面我們態(tài)度端正了很多,認(rèn)真完成好每一項(xiàng)任務(wù),這樣無形中提高了對自己的要求,同時(shí)也增強(qiáng)了我們的動(dòng)手能力和編程能力。七、附錄運(yùn)行結(jié)果截圖。
第五篇:c語言實(shí)驗(yàn)二實(shí)驗(yàn)報(bào)告一、實(shí)驗(yàn)?zāi)康?、2、3、4、掌握關(guān)系表達(dá)式和邏輯表達(dá)式的使用。掌握選擇結(jié)構(gòu)程序設(shè)計(jì)的一般方法。熟練使用if語句進(jìn)行程序設(shè)計(jì)。掌握使用switch語句實(shí)現(xiàn)多分支選擇結(jié)構(gòu)。二、實(shí)驗(yàn)內(nèi)容有一分段函數(shù)如下:編寫程序,輸入(x實(shí)數(shù))的值,輸出以如下格式:x=??.??,y=??.??(即小數(shù)部分保留2位)程序代碼:#include"stdio.h"intmain(){floatx,y;scanf("%f",&x);if(xy=x*x;if(x>=1&&xy=5*x-1;if(x>=10)y=2*x+4;printf("x=%.2f,y=%.2f\n",x,y);return0;}2、從鍵盤輸入三個(gè)實(shí)數(shù),輸出最大數(shù)和最小數(shù)。樣例輸入:1.233.455.67樣例輸出:5.671.23程序代碼:#include"stdio.h"intmain(){floata,b,c,max,min;scanf("%f%f%f",&a,&b,&c);if(a>b){max=a;min=b;}else{max=b;min=a;}if(a>c)if(b>c){min=c;}else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 茶文化教育在小學(xué)商業(yè)素養(yǎng)培養(yǎng)中的作用
- 董海霞二年級語文《葡萄溝》教學(xué)設(shè)計(jì)新
- DB4415T 48-2025茶角胸葉甲綜合防控技術(shù)規(guī)程
- LED廣告屏幕安裝與維護(hù)合同模板
- 個(gè)人消費(fèi)貸款合同范例
- 二手住宅買賣合同正規(guī)范本
- 二手房分期付款合同書
- 不履行購銷合同糾紛案解析
- 專利權(quán)轉(zhuǎn)讓及合作協(xié)議合同書
- 專項(xiàng)企業(yè)產(chǎn)(股)權(quán)托管合同文本
- DB31-T 1440-2023 臨床研究中心建設(shè)與管理規(guī)范
- 老客戶維護(hù)方案
- 高處作業(yè)安全教育培訓(xùn)講義課件
- dk膠原蛋白培訓(xùn)課件
- 萬科物業(yè)管理公司全套制度(2016版)
- 動(dòng)物檢疫技術(shù)-動(dòng)物檢疫處理(動(dòng)物防疫與檢疫技術(shù))
- 英語經(jīng)典口語1000句
- 進(jìn)模模具設(shè)計(jì)
- 2021年高考化學(xué)真題和模擬題分類匯編專題20工業(yè)流程題含解析
- 2023年北京市高考作文評分標(biāo)準(zhǔn)及優(yōu)秀、滿分作文
- 2023年大唐尿素投標(biāo)文件
評論
0/150
提交評論