版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 一:文件數(shù)據(jù)的處理………………………………………………………………3</p><p><b> 1、需求分析</b></p><p><b> 2、概要設(shè)計</b></p><p><b> 3、詳細(xì)設(shè)計</b></p><p><b>
2、 4、測試結(jié)果</b></p><p> 二:翻譯軟件模擬……………………………………………………………………5</p><p><b> 1、需求分析</b></p><p><b> 2、概要設(shè)計</b></p><p><b> 3、詳細(xì)設(shè)計</b>&
3、lt;/p><p><b> 4、測試結(jié)果</b></p><p> 三:課程設(shè)計總結(jié)……………………………………………………………………7</p><p> 四:參考文獻(xiàn)……………………………………………………………………………8</p><p> 五:附錄……………………………………………………………………………
4、………9</p><p><b> 文件數(shù)據(jù)的處理</b></p><p><b> 需求分析:</b></p><p> 兩個文件(data1.txt、data2.txt)中有若干數(shù)字,編寫程序求出兩個文見中數(shù)字的交集和補(bǔ)集分別存放在兩個文件(jiao.txt、bing.txt)中并且按照順序排列。例如:</
5、p><p> 兩個文件:data.1: 1 2 3 4 5 6 7 8 9 10;data2: 2 3 4 5 6 7 8 9 10 11。</p><p> 運(yùn)行結(jié)果為:jiao:2 3 4 5 6 7 8 9 10;bing:1 2 3 4 5 6 7 8 9 10 11。</p><p><b> 概要設(shè)計:</b></p>
6、<p><b> 定義指針和數(shù)組;</b></p><p> 讀出文件中的數(shù)據(jù),利用循環(huán)和條件語句找出data1和data2中的相同元素和不同元素并分別賦值給兩個數(shù)組;</p><p> 將兩個數(shù)組中的元素排序;</p><p> 將兩個數(shù)組中的數(shù)據(jù)存放在jiao 和bing兩個文件夾中</p><p&
7、gt;<b> 詳細(xì)設(shè)計:</b></p><p> 頭文件調(diào)用,包括stdio和stdlib;定義數(shù)據(jù)類型</p><p> #include <stdio.h></p><p> #include <stdlib.h> </p><p><b> main()</b&
8、gt;</p><p><b> {</b></p><p> FILE *fp1,*fp2,*fp3,*fp4; </p><p> int date1[10],date2[10],jiao[10],bing[20],jiao1[10],bing1[20];</p><p> int i,j,m=0,n=0,x
9、=1,y=1;</p><p><b> 數(shù)據(jù)的讀取和輸入</b></p><p> if(((fp1=fopen("data1.txt","r"))==NULL)||((fp2=fopen("data2.txt","r"))=NULL))</p><p>&l
10、t;b> {</b></p><p> printf("open error: date1.txt or date2.txt\n");</p><p> printf("Please enter a chain of number for first time:\n");</p><p> for(i
11、=0;i<10;i++)</p><p> scanf("%d",&date1[i]);</p><p> printf("Please enter a chain of number for second time:\n");</p><p> for(i=0;i<10;i++)</p>
12、<p> 求出兩個文件中相同的數(shù)字等,求出交集和并集</p><p> for(i=0;i<10;i++) </p><p> { </p><p> for(j=0;j<10;j++) </p><p> if(date1[i]==date2[j]) &
13、lt;/p><p> { jiao[m]=date1[i]; </p><p> m++; </p><p> break; </p><p> } </p><p> if(j==10) </p><p>
14、;<b> { </b></p><p> bing[n] = date1[i]</p><p><b> n++; </b></p><p><b> }</b></p><p><b> } </b></p><
15、;p> for(i=0;i<10;i++)</p><p><b> {</b></p><p> bing[n]=date2[i];</p><p><b> n++; </b></p><p><b> }</b></p><p&
16、gt; 將所得到的運(yùn)算結(jié)果結(jié)果排序并去掉并集中的相同的元素:</p><p> for(i=1;i<m;i++)</p><p> for(j=0;j<m-i;j++)</p><p> if(jiao[j] > jiao [j+1])</p><p><b> {</b></p>
17、<p><b> int temp;</b></p><p> temp = jiao[j]; </p><p> jiao[j] = jiao[j+1];</p><p> jiao[j+1] = temp;</p><p><b> }</b></p>
18、<p> for(i=0;i<m-1;i++)</p><p><b> {</b></p><p> while(jiao[i+1]!=jiao[i])</p><p><b> {</b></p><p> jiao1[x]=jiao[i+1];</p>
19、<p><b> x++;</b></p><p><b> break;</b></p><p><b> } </b></p><p><b> } </b></p><p> 最后將所得到的結(jié)果處貯存到兩個txt文件中</
20、p><p><b> 測試結(jié)果:</b></p><p><b> 翻譯軟件模擬</b></p><p><b> 需求分析:</b></p><p> 編寫程序,利用ciku.txt中的詞匯中英對照來完成簡單的英語詞匯翻譯,達(dá)到模擬翻譯軟件的效果。在界面上輸入英文,下面給
21、出中文釋義。</p><p><b> 概要設(shè)計:</b></p><p> 定義文件指針,字符型變量和整型變量;</p><p> 輸入需要翻譯的單詞,并找出單詞在文件中的位置,并輸出等號后面的中文字符。</p><p><b> 詳細(xì)設(shè)計:</b></p><p>
22、; 包含文件,需要用到計算字符串長度的函數(shù),于是包含了stdlib.h:</p><p> #include<stdio.h></p><p> #include<stdlib.h></p><p> #include<string.h></p><p> 定義文件指針,字符型整型變量:</
23、p><p> FILE *fp; </p><p> char ch,string1[200],string2[200]; </p><p> int i,j,k,l,m,p; </p><p> 輸入需要翻譯的單詞:</p><p> printf("please input
24、the English words:");</p><p> scanf("%s",string2); </p><p> 將指針fp指向ciku.txt文件,計算單詞string2的長度 ,將content.txt文件中的第一個字母輸入,并將content.txt文件中的字符串賦值給字符串string1,將content.txt文件中之后的字母逐一輸入
25、 ,判斷字符串string2對應(yīng)與字符串string1的位置,找出起始位置 ,顯示單詞對應(yīng)的意思,遇到空格截止。</p><p> fp=fopen("ciku.txt","r"); </p><p> l=strlen(string2); </p><p> ch=fgetc(fp);
26、 </p><p> while(ch!=EOF)</p><p><b> {</b></p><p> string1[k]=ch; </p><p> k++; </p><p> ch=fgetc(fp); </p><
27、;p><b> } </b></p><p> for(i=0;i<k;i++)</p><p><b> {</b></p><p> for(j=0;j<l;j++)</p><p><b> {</b></p>&l
28、t;p> if(string1[i+j]!=string2[j])</p><p> goto loop2;</p><p><b> m=i; </b></p><p><b> }</b></p><p> break; </p><p&g
29、t;<b> loop2:;</b></p><p> } </p><p> for(i=m+l+1;string1[i]!=' ';i++) </p><p> printf("%c",string1[i]); </p><p> 設(shè)置
30、一個go to循環(huán),方便軟件使用:</p><p> printf("continue? y(1)or n(0)\n"); </p><p> scanf("%d",&p); </p><p><b> if(p==1) </b></p><p> got
31、o loop1; </p><p><b> 4 、測試結(jié)果:</b></p><p><b> 課程設(shè)計總結(jié)</b></p><p> 就我目前接觸的C語言內(nèi)容而言,還都只是入門級的知識,僅僅這些知識就能增強(qiáng)我的思維能力、邏輯判斷能力、耐力和毅力。至于以后的深入學(xué)習(xí),難度的加大在阻撓我的同時,定能讓我在思維判斷的
32、能力上大幅度提高,所以這門課在教會我專業(yè)知識的基礎(chǔ)上,還鍛煉了我的智力,磨練我的意志,我受益匪淺。</p><p> C語言是一種計算機(jī)程序設(shè)計語言。它既具有高級語言的特點,又具有匯編語言的特點。它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)
33、。</p><p> C語言有很多優(yōu)點,例如:簡潔緊湊、靈活方便——C語言一共只有32個關(guān)鍵字,9種控制語句,程序書寫形式自由,區(qū)分大小寫。把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。 C 語言可以像匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計算機(jī)最基本的工作單元;運(yùn)算符豐富——C語言的運(yùn)算符包含的范圍很廣泛,共有34種運(yùn)算符。C語言把括號、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C語言的運(yùn)
34、算類型極其豐富,表達(dá)式類型多樣化。靈活使用各種運(yùn)算符可以實現(xiàn)在其它高級語言中難以實現(xiàn)的運(yùn)算;數(shù)據(jù)類型豐富——C語言的數(shù)據(jù)類型有:整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。并引入了指針概念,使程序效率更高。另外C語言具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動器。且計算功能、邏輯判斷功能強(qiáng)大;語法限制不太嚴(yán)格,程序設(shè)計自由度大;生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高;適用范圍大,可移植性
35、好。</p><p> 同時,C語言也有缺點,不過不多:</p><p> (1). C語言的缺點主要表現(xiàn)在數(shù)據(jù)的封裝性上,這一點使得C在數(shù)據(jù)的安全性上有很大缺陷,這也是C和C++的一大區(qū)別。 </p><p> (2). C語言的語法限制不太嚴(yán)格,對變量的類型約束不嚴(yán)格,影響程序的安全性,對數(shù)組下標(biāo)越界不作檢查等。從應(yīng)用的角度,C語言比其他高級語言較難掌
36、握。 </p><p> (3).C語言指針。指針是C語言的一大特色,可以說是C語言優(yōu)于其它高級語言的一個重要原因。就是因為它有指針,可以直接進(jìn)行靠近硬件的操作,但是C的指針操作也給它帶來了很多不安全的因素。C++在這方面做了很好的改進(jìn),在保留了指針操作的同時又增強(qiáng)了安全性。Java取消了指針操作,提高了安全性,適合初學(xué)者使用。</p><p><b> 參考文獻(xiàn)<
37、/b></p><p> 《C程序設(shè)計》—譚浩強(qiáng)</p><p><b> 附錄</b></p><p> 文件數(shù)據(jù)的處理源程序(注釋)</p><p> #include <stdio.h></p><p> #include <stdlib.h> //包
38、含文件</p><p><b> main()</b></p><p><b> {</b></p><p> FILE *fp1,*fp2,*fp3,*fp4; //定義四個文件指針</p><p> int date1[10],date2[10],jiao[10],bing[20],ji
39、ao1[10],bing1[20];</p><p> int i,j,m=0,n=0,x=1,y=1;</p><p> if(((fp1=fopen("data1.txt","r"))==NULL)||((fp2=fopen("data2.txt","r"))==NULL))</p>&l
40、t;p> //判斷data1.txt 或 data2.txt 能否成功打開,并把data1.txt的文件指針給fp1,date2.txt給fp2.我們知道 fopen() 函數(shù)打開文件失敗時會返回 NULL (就是一個空指針),當(dāng)打開失敗時就執(zhí)行下面的語句</p><p><b> {</b></p><p> printf("Error: da
41、te1.txt or date2.txt\n"); //輸出 打開錯誤</p><p> printf("Please enter a chain of number for first time:\n");</p><p> //打開文件失敗的原因是該文件不存在,所以要輸入數(shù)據(jù)生成文件</p><p> for(i=0;i<
42、;10;i++) </p><p> scanf("%d",&date1[i]); //將輸入的數(shù)一個一個地送到date1數(shù)組中</p><p> printf("Please enter a chain of number for second time:\n");//第二次輸入</p><p> for(i=
43、0;i<10;i++)</p><p> scanf("%d",&date2[i]); //輸入到data2數(shù)組中</p><p><b> }</b></p><p><b> else </b></p><p> //這個 else 適合上面的if配對的
44、,當(dāng)文件成功打開時,就執(zhí)行下面的語句</p><p><b> { </b></p><p> for(i=0;i<10;i++)</p><p><b> {</b></p><p> fscanf(fp1,"%d",&date1[i]);</p&g
45、t;<p> fscanf(fp2,"%d",&date2[i]);</p><p><b> }</b></p><p> //將data1.txt和data2.txt文件中的內(nèi)容以數(shù)的形式讀入到data1 和data2 數(shù)組中</p><p><b> }</b><
46、;/p><p> for(i=0;i<10;i++)</p><p><b> {</b></p><p> for(j=0;j<10;j++)</p><p> if(date1[i]==date2[j]) </p><p> //比較data1和data2中對應(yīng)的數(shù)(即dat
47、a1[0]與data2[0]比,data1[1]與data2[1]比...)</p><p> //相等的時候執(zhí)行下面的語句</p><p> { jiao[m]=date1[i];</p><p><b> m++;</b></p><p> break; //退出循環(huán),這樣下面的語句就不會被執(zhí)行</p&
48、gt;<p><b> } </b></p><p> if(j==10) //當(dāng)j=10時執(zhí)行下面的語句</p><p><b> {</b></p><p> bing[n] = date1[i]; //把data1和data2中不相同的元素(data1)輸入到bing數(shù)組中</p>
49、<p><b> n++; </b></p><p><b> } </b></p><p><b> }</b></p><p> for(i=0;i<10;i++)</p><p><b> {</b></p>
50、<p> bing[n]=date2[i]; //把data2的數(shù)據(jù)復(fù)制到bing數(shù)組中</p><p><b> n++;</b></p><p><b> }</b></p><p> for(i=1;i<m;i++) //確保i在jiao數(shù)組中已經(jīng)使用的元素中(即在前面已經(jīng)被賦值的)<
51、/p><p> for(j=0;j<m-i;j++)</p><p> if(jiao[j] > jiao [j+1]) //當(dāng)jiao數(shù)組的i元素比后面的一個元素的值大時</p><p><b> {</b></p><p> int temp; //定義局部變量temp</p><
52、p> temp = jiao[j]; </p><p> jiao[j] = jiao[j+1];</p><p> jiao[j+1] = temp; //把該元素和后面的一個元素互換</p><p><b> }</b></p><p> for(i=1;i<n;i++) //同上</p&
53、gt;<p> for(j=0;j<n-i;j++)</p><p> if(bing[j]>bing [j+1])</p><p><b> {</b></p><p><b> int temp;</b></p><p> temp=bing[j]; <
54、/p><p> bing[j]=bing[j+1];</p><p> bing[j+1]=temp;</p><p><b> }</b></p><p> jiao1[0]=jiao[0];bing1[0]=bing[0]; //將jiao、bing數(shù)組的第一個元素賦值給jiao1、bing1</p>
55、<p> for(i=0;i<m-1;i++)</p><p><b> {</b></p><p> while(jiao[i+1]!=jiao[i]) //當(dāng)jiao數(shù)組中第i個元素的值與下一個元素的值不相等時</p><p><b> {</b></p><p>
56、 jiao1[x]=jiao[i+1]; </p><p><b> x++;</b></p><p><b> break;</b></p><p><b> } </b></p><p><b> } </b></p><p
57、> for(i=0;i<n-1;i++) //同上</p><p><b> {</b></p><p> while(bing[i+1]!=bing[i])</p><p><b> {</b></p><p> bing1[y]=bing[i+1];</p>
58、<p><b> y++;</b></p><p><b> break;</b></p><p><b> } </b></p><p><b> }</b></p><p> fp3=fopen("jiao.txt&quo
59、t;,"w"); //打開文件</p><p> fp4=fopen("bing.txt","w"); //打開文件</p><p> printf("交集:\n");</p><p> for(i=0;i<x;i++)</p><p><b&g
60、t; {</b></p><p> printf("%5d",jiao1[i]); //輸出jiao1的內(nèi)容到屏幕</p><p> fprintf(fp3,"%5d",jiao1[i]); //輸出jiao1的內(nèi)容到屏幕到文件</p><p><b> }</b></p>
61、<p> printf("\n");</p><p> printf("并集:\n");</p><p> for(i=0;i<y;i++) //同上</p><p><b> {</b></p><p> printf("%5d"
62、,bing1[i]);</p><p> fprintf(fp4,"%5d",bing1[i]);</p><p><b> }</b></p><p> fclose(fp3);fclose(fp4); //關(guān)閉文件</p><p> getchar(); //等待(防止還沒來得及看到結(jié)果窗
63、口就關(guān)閉了)</p><p><b> }</b></p><p> 翻譯軟件模擬源程序(注釋)</p><p> #include<stdio.h></p><p> #include<stdlib.h></p><p> #include<string.
64、h></p><p><b> main()</b></p><p><b> {</b></p><p> FILE *fp; //定義文件指針 </p><p> char ch,string1[200],string2[200]; //定義字符型變量 </
65、p><p> int i,j,k,l,m,p; //定義整型變量 </p><p> loop1:; //設(shè)置循環(huán) </p><p> k=0; //賦初值 </p><p> printf("please input the English words:");</p&g
66、t;<p> scanf("%s",string2); //輸入需要翻譯的單詞 </p><p> fp=fopen("ciku.txt","r"); //將指針fp指向ciku.txt文件 </p><p> l=strlen(string2); //計算單詞string2
67、的長度 </p><p> ch=fgetc(fp); //將content.txt文件中的第一個字母輸入 </p><p> while(ch!=EOF)</p><p><b> {</b></p><p> string1[k]=ch; //將content.txt文件中的字符
68、串賦值給字符串string1 </p><p> k++; //表示字符串string1的序數(shù) </p><p> ch=fgetc(fp); //將content.txt文件中之后的字母逐一輸入 </p><p><b> } </b></p><p> for(i=
69、0;i<k;i++)</p><p><b> {</b></p><p> for(j=0;j<l;j++)</p><p><b> {</b></p><p> if(string1[i+j]!=string2[j])</p><p> goto
70、loop2;</p><p><b> m=i; </b></p><p><b> }</b></p><p> break; </p><p><b> loop2:;</b></p><p> } //判斷
71、字符串string2對應(yīng)與字符串string1的位置,找出起始位置 </p><p> for(i=m+l+1;string1[i]!=' ';i++) </p><p> printf("%c",string1[i]); //顯示單詞對應(yīng)的意思,遇到空格截止 </p><p> printf(&
72、quot;\n\n"); </p><p> printf("continue? y(1)or n(0)\n"); </p><p> scanf("%d",&p); //輸入需要表示判斷的整數(shù) </p><p><b> if(p==1) </b></p&g
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計實踐報告--時鐘
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言課程設(shè)計報告
- c語言語言課程設(shè)計報告
- c語言年歷課程設(shè)計報告
- C語言課程設(shè)計報告.doc
- c語言課程設(shè)計報告模版
- c語言課程設(shè)計報告---游戲設(shè)計
- c課程設(shè)計報告-- c語言程序設(shè)計
- 【課程設(shè)計】c語言課程設(shè)計
- c語言背單詞課程設(shè)計報告
- c語言課程設(shè)計報告--背單詞
- c語言磁盤調(diào)度課程設(shè)計報告
- c語言課程設(shè)計報告----簡易繪圖
- c語言背單詞課程設(shè)計報告
- c語言課程設(shè)計報告-游戲2048
- c語言日歷顯示課程設(shè)計報告
- c語言課程設(shè)計報告(算術(shù)練習(xí))
評論
0/150
提交評論