c語言課程設(shè)計實踐報告_第1頁
已閱讀1頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論