2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  二○一二~二○一三學(xué)年第一學(xué)期</p><p><b>  信息科學(xué)與工程學(xué)院</b></p><p>  計(jì)算機(jī)與程序設(shè)計(jì)語言</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  課程名稱:計(jì)算機(jī)與程序設(shè)計(jì)語言</p><p>  班

2、 級: 電氣信息2012級 1206 班</p><p>  學(xué) 號: </p><p>  姓 名: </p><p>  指導(dǎo)教師: </p><

3、;p><b>  二0一二年十二月</b></p><p><b>  目錄:</b></p><p><b>  題目大意</b></p><p><b>  需求分析</b></p><p><b>  總體設(shè)計(jì)</b>&l

4、t;/p><p><b>  程序流程圖</b></p><p>  詳細(xì)設(shè)計(jì)(程序源代碼)</p><p><b>  程序運(yùn)行結(jié)果</b></p><p><b>  課程感悟</b></p><p><b>  參考資料</b>&

5、lt;/p><p><b>  一:文件數(shù)據(jù)的處理</b></p><p>  1.兩個(gè)文件:data1.txt和data2.txt,兩個(gè)文件中都有很多數(shù)字,用空格隔開。如:</p><p>  45 78 85 45 63 21 47 86</p><p>  運(yùn)行程序,計(jì)算這兩個(gè)文件中數(shù)字的交集,并且排好序,存放在jia

6、o.txt中;計(jì)算這兩個(gè)文件中數(shù)字的并集,并且排好序,存放在bing.txt中。</p><p><b>  2.需求分析</b></p><p>  在電腦硬盤內(nèi),有兩個(gè)數(shù)據(jù)文件date1.txt和date2.txt,要把這兩個(gè)文件中的數(shù)據(jù)讀出來,并設(shè)計(jì)程序求出兩組數(shù)據(jù)的交集和并集。求出交集和并集后,用冒泡法進(jìn)行排序,最后要把兩組排序后的數(shù)字分別存儲(chǔ)到文件jiao.

7、txt和bing,txt中。</p><p><b>  3.總體設(shè)計(jì)</b></p><p>  首先,可以采用文件打開的辦法將兩個(gè)文件中的數(shù)據(jù)讀出來,并把它們分別放到整型數(shù)組date1[]和date2[]中。如果讀入失敗,也可以選用手動(dòng)從鍵盤輸入,并利用格式化輸入的方法把這兩組數(shù)據(jù)寫到硬盤的文件中。</p><p>  然后,利用兩個(gè)for

8、循環(huán)控制數(shù)組的個(gè)數(shù),如果date1[]和date2[]中的元素相同,則放到另一個(gè)數(shù)組中,以此類推,求出兩組數(shù)據(jù)的交集和并集,分別放到兩個(gè)數(shù)組jiao[]和bing[]中。</p><p>  第三,采用冒泡法對兩個(gè)數(shù)組jiao[]和bing[]中的元素進(jìn)行從小到大的排序。</p><p>  最后,利用格式化輸出函數(shù)fprintf()把這兩個(gè)數(shù)組中的元素寫到硬盤的jiao.txt文件和bi

9、ng.txt文件中。</p><p>  至此,該問題已經(jīng)得到解決。</p><p><b>  4.程序框圖</b></p><p><b>  5.詳細(xì)設(shè)計(jì)</b></p><p>  附 源代碼與程序分析</p><p>  #include <stdio.h&

10、gt; //編譯預(yù)處理 </p><p>  #include <stdlib.h></p><p>  int main()</p><p><b>  {</b></p><p>  FILE *fp1,*fp2,*fp3,*fp4;//定義四個(gè)指針變量 </p><p>  

11、int date1[15],date2[15],jiao[15],bing[30];//四個(gè)數(shù)組 </p><p>  int i,j,k=0,l=0;</p><p>  fp1=fopen("e:\\date1.txt","r");</p><p>  fp2=fopen("e:\\date2.txt"

12、,"r");</p><p>  if(((fp1 = fopen("e:\\date1.txt","r"))==NULL)||((fp2 = fopen("e:\\date2.txt","r"))==NULL))</p><p><b>  {</b></p&g

13、t;<p>  printf("該文件還沒有被建立,不能打開,請手動(dòng)輸入:\n");// 判斷該文件能否打開,如果不能 ,則手動(dòng)輸入,且輸入的必須是15個(gè)數(shù)字,不然會(huì)是很奇怪的結(jié)果</p><p>  printf("請輸入第一個(gè)文件的數(shù)據(jù):\n"); </p><p>  for(i = 0;i < 15;i++)

14、 //因?yàn)樵撐募]有建立,所以無法打開 </p><p>  scanf("%d",&date1[i]); //需手動(dòng)輸入再建立 </p><p>  printf("請輸入第二個(gè)文件的數(shù)據(jù):\n");</p><p>  for(i = 0;i < 15;i++)<

15、/p><p>  scanf("%d",&date2[i]);</p><p>  fclose(fp1);</p><p>  fclose(fp2);</p><p>  fp1=fopen("e:\\date1.txt","w");</p><p>

16、  fp2=fopen("e:\\date2.txt","w");</p><p>  for(i=0;i<15;i++)</p><p><b>  {</b></p><p>  fprintf(fp1,"%4d",date1[i]);// 手動(dòng)輸入后,格式化輸出到文件 &l

17、t;/p><p>  fprintf(fp2,"%4d",date2[i]);</p><p><b>  }</b></p><p>  fclose(fp1);//養(yǎng)成好習(xí)慣,及時(shí)關(guān)閉打開的文件,節(jié)約內(nèi)存 </p><p>  fclose(fp2);</p><p><

18、b>  }</b></p><p><b>  else</b></p><p><b>  { </b></p><p>  for(i = 0; i < 15; i++)</p><p><b>  {</b></p><p&g

19、t;  fscanf(fp1,"%d",&date1[i]);//如果讀取成功,直接把數(shù)據(jù)讀到數(shù)組中 </p><p>  fscanf(fp2,"%d",&date2[i]);</p><p><b>  }</b></p><p><b>  }</b></

20、p><p>  for(i = 0; i < 15; i++)</p><p><b>  {</b></p><p>  for(j = 0; j < 15 ;j++)</p><p>  { if(date1[i] == date2[j])//比較相同的數(shù),放到j(luò)iao[] 中,這種求交集的方法,可能會(huì)是同一

21、個(gè)數(shù)字出現(xiàn)兩次 </p><p>  { jiao[k] = date1[i];k++;break;}</p><p>  if(j == 15)</p><p>  {bing[l] = date1[i];l++;}//把date1[]與date2[]中的不同數(shù)字賦給并集</p><p><b>  }</b><

22、/p><p><b>  }</b></p><p>  for(i = 0; i < 15; i++)</p><p><b>  {</b></p><p>  bing[l] = date2[i];l++;//把date2[]copy給并集</p><p><b

23、>  }</b></p><p>  for(i = 1; i < k ; i++) //冒泡法對交集排序,k為jiao[]數(shù)組的元素個(gè)數(shù) </p><p>  for(j = 0; j < k - i;j++)</p><p>  if(jiao[j] > jiao [j+1])</p><p><

24、b>  {</b></p><p>  int temp; //定義一個(gè)中間變量 </p><p>  temp = jiao[j]; </p><p>  jiao[j] = jiao[j+1];</p><p>  jiao[j+1] = temp;</p><p>&l

25、t;b>  }</b></p><p>  for(i = 1; i < l ; i++)//冒泡法對并集排序,'l'為bing[]數(shù)組的元素個(gè)數(shù) </p><p>  for(j = 0; j < l - i;j++)</p><p>  if(bing[j] > bing [j+1])</p>&

26、lt;p><b>  {</b></p><p>  int temp; //定義一個(gè)中間變量 </p><p>  temp = bing[j]; </p><p>  bing[j] = bing[j+1];</p><p>  bing[j+1] = temp;</p>

27、<p><b>  }</b></p><p>  fp3 = fopen("e:\\jiao.txt","w");//以“寫”的方式打開文件 </p><p>  fp4 = fopen("e:\\bing.txt","w");</p><p>  pr

28、intf("交集 :\n");</p><p>  for(i = 0; i < k ; i++)</p><p><b>  {</b></p><p>  printf("%5d",jiao[i]); //將交集在屏幕上打印 </p><p>  fprintf

29、(fp3,"%5d",jiao[i]);//將交集格式化輸出到j(luò)iao.txt文件上 </p><p><b>  }</b></p><p>  printf("\n");</p><p>  printf("并集:\n");</p><p>  for(i

30、= 0; i < l ; i++)</p><p><b>  {</b></p><p>  printf("%5d",bing[i]); // 將并集打印到屏幕上 </p><p>  fprintf(fp4,"%5d",bing[i]); //將并集格式化輸出到bing.txt文件上

31、 </p><p>  if(i%10==0)</p><p>  printf("\n");//美化屏幕 </p><p><b>  }</b></p><p>  fclose(fp3);fclose(fp4); //關(guān)閉文件</p><p>  printf(&q

32、uot;\n"); </p><p>  printf("恭喜你,該程序已經(jīng)成功運(yùn)行,請到硬盤查看??!\n");</p><p><b>  } </b></p><p><b>  6.程序的運(yùn)行結(jié)果</b></p><p>  第一種情況:E盤中提前沒有新建文件da

33、te1.txt和date2.txt</p><p>  輸入數(shù)據(jù)后顯示情況如下</p><p>  點(diǎn)擊回車后運(yùn)行結(jié)果如下:</p><p>  如上所示,該程序已經(jīng)運(yùn)行結(jié)束,現(xiàn)在可以在E盤中發(fā)現(xiàn)多了四個(gè)txt文本文件夾:date1.txt date2.txt jiao.txt bing.txt.</p><p>  第二種情況:E盤中

34、已經(jīng)提前建好文本文件,則運(yùn)行時(shí)結(jié)果如下</p><p>  二:統(tǒng)計(jì)字符出現(xiàn)的頻率</p><p>  1. 文件conf.txt中保存了很多字母,如:</p><p>  akdsjfkasdfjaksfjdaksdfjaskldjfaieakjdkfkadsjfiwejfkasdjf</p><p>  運(yùn)行程序,計(jì)算這個(gè)文件中各個(gè)字母出

35、現(xiàn)的頻率,頻率=出現(xiàn)的次數(shù)/總字母數(shù)。將頻率存儲(chǔ)在文件rate.txt中。格式為:</p><p><b>  a:3.2%</b></p><p><b>  k:3.8%</b></p><p><b>  ……</b></p><p><b>  2.需求分析&

36、lt;/b></p><p>  在這個(gè)問題中,一樣用到了文件處理方面的知識(shí),我們要把文件conf.txt中的很多個(gè)字母讀出來,并計(jì)算各個(gè)字母出現(xiàn)的頻率,先把它們各自出現(xiàn)的頻率打印在屏幕上,然后用格式化輸出的方法輸出到E盤的rate.txt文本文件中。注意:區(qū)分大小寫??!</p><p><b>  3.總體設(shè)計(jì)</b></p><p>

37、  第一步,要建立一個(gè)字符數(shù)組char string[1000],存放conf.txt文件中的字符,這個(gè)數(shù)組最好設(shè)大一點(diǎn),因?yàn)椴淮_定有多少個(gè)字符(暫且設(shè)為1000)。</p><p>  第二步,使用兩對數(shù)組char str1[26]和float a[26],char str2[]和float b[]分別存放大小寫各個(gè)字符和各個(gè)字符出現(xiàn)的次數(shù)。</p><p>  第三步,在計(jì)算各個(gè)字符出

38、現(xiàn)次數(shù)的同時(shí)統(tǒng)計(jì)字符的總字?jǐn)?shù)(注意:寫入時(shí),字符的個(gè)數(shù)不能超過定義的個(gè)數(shù)1000)。</p><p>  第四步,計(jì)算頻率,注意數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換。</p><p>  最后一步,輸出:有兩次輸出,一次是在屏幕上,且每兩個(gè)換行一次。另一次輸出是在硬盤文件上,采用格式化輸出的方法將結(jié)果寫到硬盤上。</p><p><b>  4.程序流程圖</b>

39、;</p><p><b>  5.詳細(xì)設(shè)計(jì)</b></p><p>  附:程序代碼和程序注釋</p><p>  #include <stdio.h></p><p>  #include <stdlib.h></p><p>  int main()</p>

40、;<p><b>  {</b></p><p>  int i,j = 0,k;</p><p>  float a[26] = {0},b[26]={0};// 字符與數(shù)字是相通的 ,分別計(jì)數(shù)大小寫的個(gè)數(shù)。 </p><p>  float num = 0;//計(jì)數(shù)(總字母數(shù)) </p><p>  c

41、har str1[26], str2[26];//26個(gè)英文字母</p><p>  char string[1000];//存放 conf.txt中的字符 </p><p><b>  char ch;</b></p><p>  FILE *fp1,*fp2;</p><p>  for(i = 0;i < 2

42、6; i++)//26個(gè)字母 </p><p>  {str1[i] = 'a' +i;</p><p>  str2[i] = 'A' +i;</p><p><b>  }</b></p><p>  if((fp1 = fopen("e:\\conf.txt",&

43、quot;r"))==NULL)//溫馨提示 </p><p><b>  {</b></p><p>  printf("Can't open conf.txt any key exit!");</p><p>  getchar();</p><p><b>  ex

44、it(0); </b></p><p><b>  }</b></p><p>  while(!feof(fp1))</p><p>  fscanf(fp1,"%c",&string[j++]); //把文件中的字符讀到數(shù)組string[]中 </p><p>  fclose

45、(fp1);</p><p>  for(i = 0;(ch = string[i])!='\0';i++)</p><p><b>  {</b></p><p>  for(k = 0; k < 26; k++)</p><p>  if(ch == str1[k]) //判斷該字符是哪個(gè)

46、,并 </p><p>  { a[k]++;break; } // 把相應(yīng)的整型數(shù)組計(jì)數(shù) </p><p>  for(k=0;k<26;k++)</p><p>  if(ch==str2[k])</p><p>  {b[k]++;break;}</p><p>  num ++;//字符總數(shù) </

47、p><p><b>  }</b></p><p>  fp2 = fopen("e:\\rate.txt","w");</p><p>  printf("統(tǒng)計(jì)結(jié)果如下:\n");</p><p>  for(i = 0; i < 26&&a

48、[i]!=0; i++)</p><p>  { //打印每個(gè)字符出現(xiàn)的頻率,沒出現(xiàn)的不顯示,且每行顯示兩個(gè) </p><p>  printf("%c\t%f%%\t",str1[i],100*a[i]/num);//計(jì)算頻率 </p><p>  fprintf(fp2, "%c\t%f%%\n",str1[i],100*

49、a[i]/num);//格式化輸出</p><p>  if(i%2!=0) //每行輸出兩個(gè) </p><p>  printf("\n");</p><p><b>  } </b></p><p>  printf("\n");</p><p>

50、  for(i=0;i<26&&b[i]!=0;i++)</p><p><b>  {</b></p><p>  printf("%c\t%f%%\t",str2[i],100*b[i]/num); </p><p>  fprintf(fp2, "%c\t%f%%\n",str

51、2[i],100*b[i]/num);</p><p>  if(i%2!=0) //每行輸出兩個(gè) </p><p>  printf("\n");</p><p><b>  }</b></p><p>  fclose(fp2);//關(guān)閉文件 </p><p>  p

52、rintf("恭喜你!本程序你已經(jīng)成功運(yùn)行!請到E盤查看!\n");</p><p>  printf("\n");</p><p><b>  }</b></p><p><b>  6.程序的運(yùn)行結(jié)果</b></p><p>  首先,在運(yùn)行程序之前,我們

53、需要在E盤中新建一個(gè)文本文檔conf.txt.并向里面輸入不超過1000的字符,保存。</p><p><b>  示例如下:</b></p><p>  輸入字符:大小寫都有!</p><p><b>  運(yùn)行結(jié)果:</b></p><p><b>  見下頁所示:</b>&

54、lt;/p><p>  還可以改成以%號形式輸出</p><p>  可以看到,輸出屏幕上大小寫字符的頻率都有。此時(shí),打開E盤,會(huì)發(fā)現(xiàn)多了一個(gè)rate.txt文檔,里面輸入的有各個(gè)字符出現(xiàn)的頻率:</p><p>  至此為止,該問題已經(jīng)得到全部解決。</p><p><b>  三:課程設(shè)計(jì)感悟</b></p>

55、<p>  本次課程設(shè)計(jì)到現(xiàn)在為止,已經(jīng)告一段落了。雖然這個(gè)課程設(shè)計(jì)把我搞的頭昏腦漲,但是我想它對我的C語言的提高還是有很大幫助的??粗约旱膭趧?dòng)成果,心里還是有一種愉快的感覺的,畢竟這將近10天的辛苦沒有白費(fèi)。</p><p>  通過這次課程設(shè)計(jì),我對數(shù)組又有了更加深刻的認(rèn)識(shí)。當(dāng)時(shí),為了完成對字符出現(xiàn)的頻率進(jìn)行統(tǒng)計(jì)時(shí),我把書上關(guān)于數(shù)組的知識(shí)又從前到后看了一遍。雖然說不能完全掌握吧,至少比剛開始要

56、好了許多。當(dāng)看著C-Free軟件報(bào)的錯(cuò)誤越來越少時(shí),心中不禁有了一種自豪感,至少我通過自己的努力進(jìn)一步的了解了C語言。還有一點(diǎn)就是通過這次課程設(shè)計(jì),我明白了查詢資料的重要性:知識(shí)是不會(huì)自己跑到你的腦袋中的,只有通過自己的雙手去翻閱,去查詢,才能感到學(xué)習(xí)的快樂,才能領(lǐng)會(huì)學(xué)習(xí)的樂趣。</p><p>  最后,我想說:這次課程設(shè)計(jì)讓我明白了天外有天的道理,本來以為自己懂的差不多了,可是在完成任務(wù)的時(shí)候差距就顯現(xiàn)了出來

57、:但自己還在抓耳撓腮百思不得其解時(shí),別人已經(jīng)輕松搞定。所以,只有腳踏實(shí)地才能得到真正的知識(shí)。</p><p>  當(dāng)然,我的設(shè)計(jì)肯定有不足之處,希望老師加以指點(diǎn)。謝謝!</p><p><b>  四:參考資料</b></p><p>  《C語言程序設(shè)計(jì)》(第二版) 李麗娟,馬淑萍;</p><p>  《C程序設(shè)計(jì)》

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論