




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精品C語言課程設(shè)計(jì)實(shí)習(xí)報(bào)告學(xué)號:20081002235班級序號:01108136姓名:指導(dǎo)老師:時(shí)間:2011 年12 月22日題目(一)題目描述:【要求】本問題中,要求輸入兩個(gè)相對較大的正整數(shù),能夠通過程序計(jì)算出其結(jié)果。【提示】兩個(gè)相對較大的數(shù)肯定是不能夠用LONG INT類型存儲(chǔ)的,因?yàn)長ONG型數(shù)據(jù)的數(shù)據(jù)范圍也并不是很大,于是就需要采用其他的存儲(chǔ)結(jié)構(gòu)。這里推薦用數(shù)組存儲(chǔ)一個(gè)大數(shù),數(shù)組的初始空間可以定義到如200或300個(gè)單元,每個(gè)單元存儲(chǔ)一位數(shù)據(jù),形如下圖:255 96207.。這樣理論上,比如數(shù)組定義為200,就可以存儲(chǔ)200個(gè)數(shù)字的整數(shù),應(yīng)該是滿足足夠大的條件了。而結(jié)果的存儲(chǔ)也需要考
2、慮空間的問題,所以需要一個(gè)更大的數(shù)組。在解決了存儲(chǔ)問題后,我們需要來實(shí)現(xiàn)乘法運(yùn)送的過程,也就是說你必須要把這個(gè)數(shù)組中的每一位數(shù)字單獨(dú)來進(jìn)行乘法運(yùn)算,比如我們可以用一個(gè)數(shù)字和另外一個(gè)數(shù)組中的每一位去相乘,從而得到乘法運(yùn)算中一行的數(shù)字,再將每一行數(shù)字錯(cuò)位相加。這就是乘法運(yùn)算的過程。設(shè)計(jì)思路:乘法計(jì)算的算法,從低位向高位乘,在豎式計(jì)算中,我們是將乘數(shù)第一位與被乘數(shù)的每一位相乘,記錄結(jié)果,之后,用第二位相乘,記錄結(jié)果并且左移一位,以此類推,直到計(jì)算完最后一位,再將各項(xiàng)結(jié)果相加。通過調(diào)用函數(shù)得出最后結(jié)果。流程圖:開始輸入兩個(gè)大數(shù)作為字符串運(yùn)用鏈表(調(diào)用位函數(shù)GetDigits(int *a,char *
3、s))用字符表示(調(diào)用大數(shù)相乘函數(shù)multiply(int *a,int *b,int *c))進(jìn)行大數(shù)相乘運(yùn)算第一位乘數(shù)與被乘數(shù)的結(jié)果保存在鏈表中,之后把存儲(chǔ)結(jié)果的頭部后移一位、也就是從鏈表的第二加起,當(dāng)?shù)诙怀藬?shù)與被乘數(shù)結(jié)果加到第二之后的各個(gè)項(xiàng)內(nèi)。輸出計(jì)算結(jié)果結(jié)束運(yùn)行效果截圖: 附源程序如下:#include #include #include #define N 100int GetDigits(int *a,char *s);int multiply(int *a,int *b,int *c);main() char s1N,s2N; int i,j,aN,bN,cN*2; print
4、f(n 請輸入數(shù)字 a: ); scanf(%s,s1); printf(n 請輸入數(shù)字 b: ); scanf(%s,s2); GetDigits(a,s1); GetDigits(b,s2); multiply(a,b,c); j=N*2-1; while(cj=0) j-; printf(n %s * %s=,s1,s2); for(i=j;i=0;i-) printf(%d,ci);int GetDigits(int *a, char *s) int i; char digit; int len=strlen(s); for(i=0;iN;i+) *(a+i)=0; for(i=0;i
5、len;i+) digit=*(s+i); *(a+len-1-i) = digit - 0; int multiply(int *a,int *b,int *c) int i,j; for(i=0;iN*2;i+) *(c+i)=0; for(i=0;iN;i+) for(j=0;jN;j+) *(c+i+j)+=*(a+i) * *(b+j); for(i=0;iN*2-1;i+) *(c+i+1)+=*(c+i)/10; *(c+i)=*(c+i)%10; 題目(二)題目描述:職工信息包括職工號、姓名、性別、年齡、學(xué)歷、工資、住址、電話等(職工號不重復(fù))。試設(shè)計(jì)一職工信息管理系統(tǒng),使之能
6、提供以下功能:系統(tǒng)以菜單方式工作v職工信息錄入功能(職工信息用文件保存)輸入v職工信息瀏覽功能輸出v查詢和排序功能:(至少一種查詢方式)算法vl 按工資查詢l 按學(xué)歷查詢等職工信息刪除、修改功能(任選項(xiàng))v根據(jù)題目要求,要求對職工信息進(jìn)行輸入、輸出等操作;在程序中需要瀏覽職工的信息,應(yīng)提供顯示、查找、瀏覽、插入、修改等操作;另外還應(yīng)提供鍵盤式選擇菜單實(shí)現(xiàn)功能選擇。設(shè)計(jì)思路及程序代碼:根據(jù)上面的需求分析,可以將這個(gè)系統(tǒng)設(shè)計(jì)分為以下模塊:數(shù)據(jù)添加、數(shù)據(jù)查找、數(shù)據(jù)修改、數(shù)據(jù)刪除、數(shù)據(jù)輸出。主函數(shù)主函數(shù)一般設(shè)計(jì)得比較簡潔,只提供輸入,處理和輸出部分的函數(shù)調(diào)用。其中各功能模塊用菜單方式選擇。程序: /*
7、主函數(shù)*/main ()menu();/*menu函數(shù)*/void menu() int n,w1;/*變量n保存選擇菜單數(shù)字,w1判斷輸入的數(shù)字是否在功能菜單對應(yīng)數(shù)字范圍*/ do puts(tt*menu*nn); puts(tttt1.Enter new data); puts(tttt2.Browse all); puts(tttt3.Search );puts(); puts(tttt5.Exit); puts(nntt*n); printf(Choice your number(1-5): bb); scanf(%d,&n); if(n5) /*對選擇的數(shù)字作出判斷,是否在菜單功能
8、數(shù)字范圍內(nèi)*/ w1=1;getchar(); else w1=0; while(w1=1); switch(n)/*根據(jù)輸入的數(shù)字,進(jìn)入到相應(yīng)的操作模塊中*/ case 1:enter();break;/*輸入模塊*/ case 2:browse();break; /*瀏覽模塊*/ case 3:search();break; /*查找模塊,其中包括按不同類別進(jìn)行查找的多個(gè)子模塊*/ case 4:add();break;/*插入模塊*/ case 5:exit(0); /*退出*/ 注:menu函數(shù)能提供菜單方式選擇功能,可以根據(jù)用戶需要進(jìn)入到所想要的操作模塊中,此外把menu函數(shù)獨(dú)立出來
9、,可以方便隨時(shí)對它進(jìn)行調(diào)用,容易返回到系統(tǒng)界面。 用結(jié)構(gòu)體來存放職工信息:/*結(jié)構(gòu)體*/struct workerchar number11;char name20;char sex20;char adress20;char xueli20;char telephone20;char age20;char salary20;worN;/* worN中每個(gè)數(shù)組元素對應(yīng)一個(gè)職工*/其中可以根據(jù)宏定義# define N隨時(shí)對N的值進(jìn)行調(diào)整,擴(kuò)大信息的儲(chǔ)存量。輸入模塊程序:/*輸入模塊*/void enter()/*輸入函數(shù)*/int i,n; printf(How many workers(0-%
10、d):,N-1); scanf(%d,&n);/*輸入記錄的個(gè)數(shù),賦值給n*/ printf(n Enter data nownn); for(i=0;in;i+)/*通過for循環(huán)語句依次輸入個(gè)職工信息數(shù)據(jù)*/ printf(n Input %dth worker record.n,i+1); input(i);/*調(diào)用單個(gè)輸入函數(shù)*/ if(i!=0)save(n);/*調(diào)用保存函數(shù)*/ printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)讓用戶選擇還是瀏覽還是返回*/ 瀏覽模塊按任意鍵顯示下一屏按任意鍵返回主菜單程序:/*瀏覽(全部)模塊*/browse() /*瀏覽(全部模塊)*/ int
11、 i,j,n; n=load(); /*調(diào)用加載函數(shù),并計(jì)算可以記錄的個(gè)數(shù)*/ printf_face(); /*調(diào)出顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/ for(i=0;inn1).number2.xueli3).cancel and back);printf(Which you needed?: bb);scanf(%d,&c);if(c3|c3|c1);switch(c) /* switch語句提供按不同類別進(jìn)行查找功能*/case 1:search1();break; /*按職工號進(jìn)行查找*/ case 2:search2();break; /*按姓名進(jìn)行查找*/ case 3:menu();br
12、eak; /*返回主菜單*/*按職工號查找模塊*/流程圖:按職工號查找模塊用戶作出選擇,輸入一整型數(shù)值 search1()int i,n,k,w1=1,w2,w3,w4; struct worker s; /*定義結(jié)構(gòu)體變量s,用以儲(chǔ)存輸入的number的值,便于進(jìn)行比較*/ n=load(); /*加載將要記錄的個(gè)數(shù)*/ do /*該do- while循環(huán)語句判斷是否繼續(xù)執(zhí)行該函數(shù)*/ do /*該do- while循環(huán)語句判斷是否找到要查找的對象*/ k=-1; printf(nnEnter number that you want to search! number:); scanf(%
13、s,s.number); printf_face();/*調(diào)出顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/ for(i=0;in;i+) /* for循環(huán)語句用來判斷原數(shù)據(jù)信息中是否有與輸入職工號相同的職工號*/ if(strcmp(s.number,wori.number)=0) /*原數(shù)據(jù)信息中找到與輸入職工號相同的職工號*/ k=i; printf_one(k);break; if(k=-1) / *原數(shù)據(jù)信息中沒有找到與輸入職工號相同的職工號*/ printf(nnNo exit!please); printf(nnAre you again?nt1).again 2).No and back bb);
14、scanf(%d,&w1); if(w1=2) menu();/*返回主菜單*/ while(k=-1&w1=1);/*在沒有找到且想再次查找的情況下繼續(xù)進(jìn)行循環(huán)*/ w4=0;w3=0; if(k!=-1) /*在查找到的情況下*/printf(nnWhat do you want to do?nt1).Search another 2).Modify 3).Back menu bb); scanf(%d,&w2); switch(w2) case 1:search1();break;/*繼續(xù)按照職工號查找其他對象*/ case 2:w3=modify_data(k,n);break;/*對
15、查找到的對象進(jìn)行修改*/ case 3:menu();break;/*返回主菜單*/ while(w2=1);menu();/*返回主菜單*/ /*按姓名查找模塊*/流程圖按職工學(xué)歷查找模塊用戶作出選擇,輸入一整型數(shù)值程序:search2()int i,n,k,w1=1,w2,w3,w4; struct worker s; /*定義結(jié)構(gòu)體變量s,用以儲(chǔ)存輸入的xueli的值,便于進(jìn)行比較*/ n=load(); /*加載將要記錄的個(gè)數(shù)*/ do /*該do- while循環(huán)語句判斷是否繼續(xù)執(zhí)行該函數(shù)*/ do /*該do- while循環(huán)語句判斷是否找到要查找的對象*/ k=-1; print
16、f(nnEnter xueli that you want to search! xueli:); scanf(%s, xueli ); printf_face();/*調(diào)出顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/ for(i=0;in;i+) /* for循環(huán)語句用來判斷原數(shù)據(jù)信息中是否有與輸入職工姓名相同的 職工號*/ if(strcmp(s. xueli,wori. xueli)=0) /*原數(shù)據(jù)信息中找到與輸入職工姓名相同的職工*/k=i; printf_one(k);break; if(k=-1) / *原數(shù)據(jù)信息中沒有找到與輸入職工姓名相同的職工號*/ printf(nnNo exit!pleas
17、e); printf(nnAre you again?nt1).again 2).No and back bb); scanf(%d,&w1); if(w1=2) menu();/*返回主菜單*/ while(k=-1&w1=1);/*在沒有找到且想再次查找的情況下繼續(xù)進(jìn)行循環(huán)*/ w4=0;w3=0; if(k!=-1) /*在查找到的情況下*/printf(nnWhat do you want to do?nt1).Search another 2).Modify 3).Back menu bb); scanf(%d,&w2); switch(w2) case 1:search1();br
18、eak;/*繼續(xù)按照職工姓名查找其他對象*/ case 2:w3=modify_data(k,n);break;/*對查找到的對象進(jìn)行修改*/ case 3:menu();break;/*返回主菜單*/ while(w2=1);menu();/*返回主菜單*/插入模塊【程序】/*插入模塊*/add() /*插入模塊*/ int i,n,m,k; FILE*fp; n=load(); /*加載將要記錄的個(gè)數(shù)*/printf(How many worker are you want to add(0-%d)?:,N-1-n); scanf(%d,&m); /*輸入要查如職工信息的個(gè)數(shù)*/k=m+n
19、; for(i=n;ik;i+) /*用for循環(huán)實(shí)現(xiàn)m個(gè)信息的錄入*/ printf(nInput %dth workers record.n,i-n+1 ); input(i); /*調(diào)用整條職工信息輸入函數(shù)*/ if(fp=fopen(worker.txt,ab)=NULL) printf(cannot open filen); for(i=n;ik;i+) /*用for循環(huán)實(shí)現(xiàn)對m個(gè)信息錄入到文件 */if(fwrite(&wori,sizeof(struct worker),1,fp)!=1) printf(file write errorn); fclose(fp); printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)的選擇瀏覽還
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 零星維修服務(wù)協(xié)議
- 湖南省長沙市開福區(qū)2024-2025學(xué)年八年級上學(xué)期期末生物學(xué)試題(含答案)
- 英語學(xué)習(xí)情境創(chuàng)設(shè)與運(yùn)用課程設(shè)計(jì)
- 醫(yī)療健康技術(shù)發(fā)展動(dòng)態(tài)表
- 《世界著名音樂作品欣賞與解析教案》
- 教育資源投入與使用效果對比分析表
- 非謂語動(dòng)詞在各類時(shí)態(tài)中的用法解析:高一英語教學(xué)教案
- 個(gè)人健康管理大數(shù)據(jù)分析與服務(wù)平臺(tái)建設(shè)方案
- 營銷總監(jiān)聘用協(xié)議
- 數(shù)字校園采購協(xié)議
- 《馬克思主義政治經(jīng)濟(jì)學(xué)概論》課程教學(xué)大綱
- 倉庫管理基礎(chǔ)知識培訓(xùn)模板課件
- 孤獨(dú)癥康復(fù)教育人員上崗培訓(xùn)練習(xí)題庫及答案
- 環(huán)境心理學(xué)課件
- 《質(zhì)量保證體系》情況說明
- 親人意外逝世的訃告微信群通知五篇-正式的去世訃告模板
- DB62∕T 4134-2020 高速公路服務(wù)區(qū)設(shè)計(jì)規(guī)范
- 中電朝陽250兆瓦智慧風(fēng)儲(chǔ)一體化風(fēng)電項(xiàng)目環(huán)評報(bào)告書
- 做一個(gè)幸福教師
- 國家自然科學(xué)基金申請標(biāo)書模板
- 車間斷針記錄表
評論
0/150
提交評論