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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  一:文件數(shù)據(jù)的處理………………………………………………………………3</p><p><b>  1、需求分析</b></p><p><b>  2、概要設(shè)計(jì)</b></p><p><b>  3、詳細(xì)設(shè)計(jì)</b></p><p><b> 

2、 4、測(cè)試結(jié)果</b></p><p>  二:翻譯軟件模擬……………………………………………………………………5</p><p><b>  1、需求分析</b></p><p><b>  2、概要設(shè)計(jì)</b></p><p><b>  3、詳細(xì)設(shè)計(jì)</b>&

3、lt;/p><p><b>  4、測(cè)試結(jié)果</b></p><p>  三:課程設(shè)計(jì)總結(jié)……………………………………………………………………7</p><p>  四:參考文獻(xiàn)……………………………………………………………………………8</p><p>  五:附錄……………………………………………………………………………

4、………9</p><p><b>  文件數(shù)據(jù)的處理</b></p><p><b>  需求分析:</b></p><p>  兩個(gè)文件(data1.txt、data2.txt)中有若干數(shù)字,編寫程序求出兩個(gè)文見中數(shù)字的交集和補(bǔ)集分別存放在兩個(gè)文件(jiao.txt、bing.txt)中并且按照順序排列。例如:</

5、p><p>  兩個(gè)文件: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è)計(jì):</b></p>

6、<p><b>  定義指針和數(shù)組;</b></p><p>  讀出文件中的數(shù)據(jù),利用循環(huán)和條件語(yǔ)句找出data1和data2中的相同元素和不同元素并分別賦值給兩個(gè)數(shù)組;</p><p>  將兩個(gè)數(shù)組中的元素排序;</p><p>  將兩個(gè)數(shù)組中的數(shù)據(jù)存放在jiao 和bing兩個(gè)文件夾中</p><p&

7、gt;<b>  詳細(xì)設(shè)計(jì):</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>  求出兩個(gè)文件中相同的數(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é)果處貯存到兩個(gè)txt文件中</

20、p><p><b>  測(cè)試結(jié)果:</b></p><p><b>  翻譯軟件模擬</b></p><p><b>  需求分析:</b></p><p>  編寫程序,利用ciku.txt中的詞匯中英對(duì)照來完成簡(jiǎn)單的英語(yǔ)詞匯翻譯,達(dá)到模擬翻譯軟件的效果。在界面上輸入英文,下面給

21、出中文釋義。</p><p><b>  概要設(shè)計(jì):</b></p><p>  定義文件指針,字符型變量和整型變量;</p><p>  輸入需要翻譯的單詞,并找出單詞在文件中的位置,并輸出等號(hào)后面的中文字符。</p><p><b>  詳細(xì)設(shè)計(jì):</b></p><p>

22、;  包含文件,需要用到計(jì)算字符串長(zhǎng)度的函數(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文件,計(jì)算單詞string2的長(zhǎng)度 ,將content.txt文件中的第一個(gè)字母輸入,并將content.txt文件中的字符串賦值給字符串string1,將content.txt文件中之后的字母逐一輸入

25、 ,判斷字符串string2對(duì)應(yīng)與字符串string1的位置,找出起始位置 ,顯示單詞對(duì)應(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、一個(gè)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 、測(cè)試結(jié)果:</b></p><p><b>  課程設(shè)計(jì)總結(jié)</b></p><p>  就我目前接觸的C語(yǔ)言內(nèi)容而言,還都只是入門級(jí)的知識(shí),僅僅這些知識(shí)就能增強(qiáng)我的思維能力、邏輯判斷能力、耐力和毅力。至于以后的深入學(xué)習(xí),難度的加大在阻撓我的同時(shí),定能讓我在思維判斷的

32、能力上大幅度提高,所以這門課在教會(huì)我專業(yè)知識(shí)的基礎(chǔ)上,還鍛煉了我的智力,磨練我的意志,我受益匪淺。</p><p>  C語(yǔ)言是一種計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有匯編語(yǔ)言的特點(diǎn)。它可以作為工作系統(tǒng)設(shè)計(jì)語(yǔ)言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計(jì)語(yǔ)言,編寫不依賴計(jì)算機(jī)硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語(yǔ)言,具體應(yīng)用比如單片機(jī)以及嵌入式系統(tǒng)開發(fā)

33、。</p><p>  C語(yǔ)言有很多優(yōu)點(diǎn),例如:簡(jiǎn)潔緊湊、靈活方便——C語(yǔ)言一共只有32個(gè)關(guān)鍵字,9種控制語(yǔ)句,程序書寫形式自由,區(qū)分大小寫。把高級(jí)語(yǔ)言的基本結(jié)構(gòu)和語(yǔ)句與低級(jí)語(yǔ)言的實(shí)用性結(jié)合起來。 C 語(yǔ)言可以像匯編語(yǔ)言一樣對(duì)位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元;運(yùn)算符豐富——C語(yǔ)言的運(yùn)算符包含的范圍很廣泛,共有34種運(yùn)算符。C語(yǔ)言把括號(hào)、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C語(yǔ)言的運(yùn)

34、算類型極其豐富,表達(dá)式類型多樣化。靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級(jí)語(yǔ)言中難以實(shí)現(xiàn)的運(yùn)算;數(shù)據(jù)類型豐富——C語(yǔ)言的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運(yùn)算。并引入了指針概念,使程序效率更高。另外C語(yǔ)言具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器。且計(jì)算功能、邏輯判斷功能強(qiáng)大;語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大;生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高;適用范圍大,可移植性

35、好。</p><p>  同時(shí),C語(yǔ)言也有缺點(diǎn),不過不多:</p><p>  (1). C語(yǔ)言的缺點(diǎn)主要表現(xiàn)在數(shù)據(jù)的封裝性上,這一點(diǎn)使得C在數(shù)據(jù)的安全性上有很大缺陷,這也是C和C++的一大區(qū)別。   </p><p>  (2). C語(yǔ)言的語(yǔ)法限制不太嚴(yán)格,對(duì)變量的類型約束不嚴(yán)格,影響程序的安全性,對(duì)數(shù)組下標(biāo)越界不作檢查等。從應(yīng)用的角度,C語(yǔ)言比其他高級(jí)語(yǔ)言較難掌

36、握。   </p><p>  (3).C語(yǔ)言指針。指針是C語(yǔ)言的一大特色,可以說是C語(yǔ)言優(yōu)于其它高級(jí)語(yǔ)言的一個(gè)重要原因。就是因?yàn)樗兄羔?,可以直接進(jìn)行靠近硬件的操作,但是C的指針操作也給它帶來了很多不安全的因素。C++在這方面做了很好的改進(jìn),在保留了指針操作的同時(shí)又增強(qiáng)了安全性。Java取消了指針操作,提高了安全性,適合初學(xué)者使用。</p><p><b>  參考文獻(xiàn)<

37、/b></p><p>  《C程序設(shè)計(jì)》—譚浩強(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; //定義四個(gè)文件指針</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ù)打開文件失敗時(shí)會(huì)返回 NULL (就是一個(gè)空指針),當(dāng)打開失敗時(shí)就執(zhí)行下面的語(yǔ)句</p><p><b>  {</b></p><p>  printf("Error: da

41、te1.txt or date2.txt\n"); //輸出 打開錯(cuò)誤</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ù)一個(gè)一個(gè)地送到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>  //這個(gè) else 適合上面的if配對(duì)的

44、,當(dāng)文件成功打開時(shí),就執(zhí)行下面的語(yǔ)句</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中對(duì)應(yīng)的數(shù)(即dat

47、a1[0]與data2[0]比,data1[1]與data2[1]比...)</p><p>  //相等的時(shí)候執(zhí)行下面的語(yǔ)句</p><p>  { jiao[m]=date1[i];</p><p><b>  m++;</b></p><p>  break; //退出循環(huán),這樣下面的語(yǔ)句就不會(huì)被執(zhí)行</p&

48、gt;<p><b>  } </b></p><p>  if(j==10) //當(dāng)j=10時(shí)執(zhí)行下面的語(yǔ)句</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元素比后面的一個(gè)元素的值大時(shí)</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; //把該元素和后面的一個(gè)元素互換</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ù)組的第一個(gè)元素賦值給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個(gè)元素的值與下一個(gè)元素的值不相等時(shí)</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); //計(jì)算單詞string2

67、的長(zhǎng)度 </p><p>  ch=fgetc(fp); //將content.txt文件中的第一個(gè)字母輸入 </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對(duì)應(yīng)與字符串string1的位置,找出起始位置 </p><p>  for(i=m+l+1;string1[i]!=' ';i++) </p><p>  printf("%c",string1[i]); //顯示單詞對(duì)應(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論