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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  C語(yǔ)言課程設(shè)計(jì)報(bào)告</b></p><p><b>  目 錄</b></p><p>  需求分析    …………………………… ?。病?lt;/p><p>  概要設(shè)計(jì)    …………………………   3</p><p>  詳細(xì)設(shè)計(jì)    …………………………  ?。?/p>

2、</p><p>  測(cè)試結(jié)果    …………………………  ?。?lt;/p><p>  課程設(shè)計(jì)總結(jié)  ………………………… ?。保?lt;/p><p>  參考文獻(xiàn)    ………………………… ?。保?lt;/p><p>  附錄      …………………………  11 </p><p><b>  一、需求分析

3、</b></p><p><b>  1、文件數(shù)據(jù)的處理</b></p><p>  (1)輸入的形式和輸入值的范圍:向兩個(gè)命名分別為data1.txt和data2.txt的文件中分別輸入若干隨機(jī)數(shù)字,兩個(gè)數(shù)字之間用空格隔開(kāi),數(shù)字的范圍應(yīng)在-2147483648~2147483647之間。</p><p>  (2)輸出的形式:程序

4、運(yùn)行之后會(huì)在指定的位置創(chuàng)建兩個(gè)命名分別為jiaoji.txt和bingji.txt的文件,在這兩個(gè)文件中分別有符合要求的數(shù)字,每?jī)蓚€(gè)數(shù)字之間用空格隔開(kāi)。</p><p>  (3)程序所能達(dá)到的功能:此程序能分別求出data1.txt和data2.txt兩個(gè)文件中數(shù)字的交集和并集,并把所求出的數(shù)字分別放進(jìn)jiaoji.txt和bingji.txt兩個(gè)文件中。</p><p>  2、統(tǒng)計(jì)字

5、符出現(xiàn)的頻率</p><p> ?。?)輸入的形式和輸入值的范圍:向文件conf.txt中輸入若干的連續(xù)字符,這些字符可以是數(shù)字和大小寫的英文字母,數(shù)字范圍為0~9,字母范圍為a~z和A~Z。</p><p> ?。?)輸出的形式:此程序運(yùn)行后會(huì)在文件rate.txt中輸入各個(gè)字符出現(xiàn)的頻率,其格式形如:K: 2.94%,前面某一字符,接著是此字符出現(xiàn)的頻率,保留兩位小數(shù),每一個(gè)字符各占一

6、行,沒(méi)在文件中出現(xiàn)的字符也輸出,其頻率為0。</p><p> ?。?)程序所能達(dá)到的功能:程序能從文件conf.txt中讀取字符,并計(jì)算各個(gè)字符出現(xiàn)的頻率,把所求的結(jié)果輸入到文件rate.txt中,此程序支持?jǐn)?shù)字和大小寫的字母。</p><p><b>  二、概要設(shè)計(jì)</b></p><p><b>  1、文件數(shù)據(jù)的處理<

7、/b></p><p>  本程序定義了四個(gè)文件指針,分別為*fa、*fb、*fc和*fd它們分別指向data1.txt、data2.txt、jiaoji.txt和bingji.txt,定義了一個(gè)指針型數(shù)組*a和五個(gè)整型變量:i、j、x、y、t。</p><p>  主程序流程:程序先判斷四個(gè)文件是否能打開(kāi),如果不能則在頻幕上輸出“cannot open”,接著分別把文件data1.

8、txt和data2.txt中的數(shù)字讀入到數(shù)組a中,此時(shí)x的值為文件data1.txt中數(shù)字的個(gè)數(shù),y為兩個(gè)文件中數(shù)字的總數(shù),數(shù)組a的前x個(gè)數(shù)為文件data1.txt中的數(shù)字,其余為令一文件的數(shù)字。然后分別判斷兩個(gè)文件中是否含有重復(fù)的數(shù)字,重復(fù)的數(shù)字只保留一個(gè)其余賦0,接著把數(shù)組中的數(shù)字按從小到大排列。然后求數(shù)組中重復(fù)的數(shù)字,并把非零數(shù)輸入到文件jiaoji.txt中,此即為所要求的交集,把數(shù)組中非零的數(shù)字輸入到文件bingji.txt中

9、,此即為所要求的并集,程序到此結(jié)束。</p><p>  本程序主要用到了文件的格式化讀/寫函數(shù):fscanf( )、fprintf()函數(shù),還用到了for循環(huán)語(yǔ)句和if語(yǔ)句。</p><p>  2、統(tǒng)計(jì)字符出現(xiàn)的頻率</p><p>  此程序主要定義了兩個(gè)文件型指針*fa和*fb分別指向conf.txt和rate.txt兩個(gè)文件,定義了一個(gè)字符型數(shù)組a和四個(gè)整

10、型變量len、i、j、num。</p><p>  主程序流程:本程序在一開(kāi)始同樣先判斷能否打開(kāi)conf.txt和rate.txt這兩個(gè)文件,如果不能打開(kāi),則在屏幕上輸出“cannot open”。然后用fgets()函數(shù)把文件中的字符讀入到數(shù)組a中,并用strlen()函數(shù)計(jì)算字符串長(zhǎng)度并賦給len,接著計(jì)算每個(gè)字符出</p><p>  現(xiàn)的次數(shù),最后把計(jì)算好的頻率用fprintf()

11、函數(shù)輸入到文件rate.txt中。</p><p>  此程序主要用到了字符串讀取函數(shù)fgets()和文件的格式化寫入函數(shù)fprintf()函數(shù),此外還用到了for循環(huán)語(yǔ)句和if語(yǔ)句。</p><p><b>  三、詳細(xì)設(shè)計(jì)</b></p><p><b>  1、文件數(shù)據(jù)的處理</b></p><p

12、><b>  本程序算法步驟:</b></p><p>  用四個(gè)if語(yǔ)句判斷能否打開(kāi)所用到的文件,如果不能打開(kāi)都輸出“cannot open”。</p><p>  分別用兩個(gè)for循環(huán)把文件data1.txt和data2.txt中的數(shù)字讀入到數(shù)組a中,其中把第一個(gè)文件中的數(shù)字的個(gè)數(shù)賦給x,把兩個(gè)文件中的數(shù)字的總個(gè)數(shù)賦給y,數(shù)組a總共有數(shù)字y個(gè)。讀取數(shù)字過(guò)程中

13、用到了判斷文件是否結(jié)束的函數(shù)feof()。</p><p>  用兩層for循環(huán)來(lái)去除重復(fù)的數(shù)字,for循環(huán)中的第一個(gè)if語(yǔ)句用來(lái)求第一個(gè)文件中重復(fù)的數(shù)字,并把其中一個(gè)保留下來(lái),其余的賦零,第二個(gè)if語(yǔ)句來(lái)判斷第二個(gè)文件中重復(fù)的數(shù)字,其余同第一個(gè)。</p><p>  接下來(lái)的兩層for循環(huán)的作用為把數(shù)組a中的數(shù)字按從大到小的順序排列出來(lái)。</p><p>  再用

14、兩層for循環(huán),循環(huán)中的第一個(gè)if語(yǔ)句計(jì)算數(shù)組a中的重復(fù)數(shù)字,并用fprintf()函數(shù)把重復(fù)的但不為零的數(shù)字寫入到文件jiaoji.txt中,此即為所要求的交集,第二個(gè)if語(yǔ)句把上一個(gè)算出的重復(fù)數(shù)字中的一個(gè)賦零,為下一步的求并集做準(zhǔn)備。</p><p>  用一個(gè)for循環(huán)語(yǔ)句把排序好的數(shù)組a中的非零數(shù)寫入到文件bingji.txt中此即為所求的并集。</p><p>  源程序及其詳細(xì)

15、注釋:</p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<conio.h></p><p><b>  main()</b></p><p>  {FILE *

16、fa,*fb,*fc,*fd;</p><p><b>  定義四個(gè)文件型指針</b></p><p>  int *a,i,j,x,y,t;</p><p>  if((fa=fopen("c:\\data1.txt","rt"))==NULL)</p><p>  {print

17、f("cannot open");exit(0);}</p><p>  if((fb=fopen("c:\\data2.txt","rt"))==NULL)</p><p>  {printf("cannot open");exit(0);}</p><p>  if((fc=fope

18、n("c:\\jiaoji.txt","wt"))==NULL)</p><p>  {printf("cannot open");exit(0);}</p><p>  if((fd=fopen("c:\\bingji.txt","wt"))==NULL)</p><p

19、>  {printf("cannot open");exit(0);}</p><p>  以上四個(gè)if語(yǔ)句為判斷能否打開(kāi)各個(gè)文件,如不能則輸出“cannot open”且終止程序</p><p>  for(i=0;!feof(fa);i++)</p><p>  {fscanf(fa,"%d",&a[i]);

20、x=i+1;}</p><p>  把文件data1.txt中的數(shù)字讀入到數(shù)組a中直到結(jié)束,并把數(shù)字個(gè)數(shù)賦給x</p><p>  for(i=x;!feof(fb);i++)</p><p>  {fscanf(fb,"%d",&a[i]);y=i+1;}</p><p>  把文件data2.txt中的數(shù)字同樣

21、讀到數(shù)組a中,排在第一個(gè)文件的后面,并把兩個(gè)文件中的所有數(shù)字的個(gè)數(shù)賦給y</p><p>  for(i=0;i<y;i++)</p><p>  for(j=i+1;j<y;j++)</p><p>  {if(i<x&&j<x&&a[i]==a[j]) a[i]=0;</p><p>

22、;  查出數(shù)組a中前x個(gè)數(shù)字里重復(fù)的數(shù)字,并把其中一個(gè)賦值為零</p><p>  if(i>=x&&a[i]==a[j]) a[i]=0;}</p><p>  把余下的數(shù)字做同樣的操作</p><p>  for(i=0;i<y-1;i++)</p><p>  for(j=0;j<y-i-1;j++)&

23、lt;/p><p>  if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}</p><p>  對(duì)數(shù)組a中的所有數(shù)字按從大到小的順序進(jìn)行排序</p><p>  for(i=0;i<y;i++),</p><p>  for(j=i+1;j<y;j++)</p><p

24、>  {if(a[i]==a[j]&&a[i]!=0) fprintf(fc,"%d ",a[i]);</p><p>  取a中重復(fù)的非零數(shù)字并把它們寫入到文件jiaoji.txt中,即為所求交集</p><p>  if(a[i]==a[j]) a[i]=0;}</p><p>  取相同的數(shù)字中的一個(gè)賦零</p

25、><p>  for(i=0;i<y;i++)</p><p>  if(a[i]!=0) fprintf(fd,"%d ",a[i]);</p><p>  把a(bǔ)中非零數(shù)字寫入到文件bingji.txt中,即為所求并集</p><p><b>  }</b></p><p&g

26、t;  2、統(tǒng)計(jì)字符出現(xiàn)的頻率</p><p><b>  本程序算法步驟:</b></p><p> ?。?)用兩個(gè)if語(yǔ)句判斷能否打開(kāi)所用的兩個(gè)文件,如果不能則輸出“cannot open”,并終止程序。</p><p> ?。?)用fgets()把文件conf.txt中的字符串讀入到數(shù)組a中,并用strlen()函數(shù)求出字符串的長(zhǎng)度賦給l

27、en。</p><p> ?。?)用for循環(huán)語(yǔ)句求出各個(gè)字符出現(xiàn)的次數(shù),并賦給num,最后把每個(gè)字符對(duì)應(yīng)的num除以len,轉(zhuǎn)化成百分比形式寫入到文件rate.txt中,即為所求頻率。</p><p>  源程序及其詳細(xì)注釋: </p><p>  #include<stdio.h></p><p>  #include<

28、;stdlib.h></p><p><b>  main()</b></p><p>  {FILE *fa,*fb;</p><p><b>  定義兩個(gè)文件型指針</b></p><p>  char a[100];</p><p>  int len,i,j,n

29、um;</p><p>  定義一個(gè)字符型數(shù)組a,及四個(gè)整型變量</p><p>  if((fa=fopen("c:\\conf.txt","rt"))==NULL)</p><p>  {printf("cannot open");exit(0);}</p><p>  if((

30、fb=fopen("c:\\rate.txt","wt"))==NULL)</p><p>  {printf("cannot open");exit(0);}</p><p>  兩個(gè)if語(yǔ)句來(lái)判斷文件是否能打開(kāi),如果不能,則輸出“cannot open”,并終止程序</p><p>  fgets(a,

31、100,fa);</p><p>  把文件中的字符串讀入到數(shù)組a中</p><p>  len=strlen(a);</p><p><b>  求字符串的長(zhǎng)度</b></p><p>  for(i=48;i<=122;i++)</p><p><b>  {num=0;<

32、;/b></p><p>  每循環(huán)一次num都賦初值為0</p><p>  if(i>57&&i<65) continue;</p><p>  if(i>90&&i<97) continue;</p><p>  如果遇到非數(shù)字和字母對(duì)應(yīng)的ASCII碼值直接進(jìn)入下一次循環(huán)&l

33、t;/p><p>  for(j=0;j<len;j++)</p><p>  if(a[j]==i) num=num+1;</p><p>  求指定字符出現(xiàn)的次數(shù),并賦給num</p><p>  fprintf(fb,"%c:%5.2f%%\n",i,100*(float)num/len);}</p>

34、<p>  把計(jì)算好的頻率寫入到文件rate.txt中,即為所求</p><p><b>  }</b></p><p><b>  四、測(cè)試結(jié)果</b></p><p><b>  1、文件數(shù)據(jù)的處理</b></p><p>  在文件data1.txt中輸入:9

35、 67 89 72 9 2 3 5 1 4 5 2,在文件data2.txt中輸入:9 2 98 34 54 23 35 72 87 34 9 43 3,結(jié)果在文件jiaoji.txt中得到數(shù)字:2 3 9 72,在文件bingji.txt中得到數(shù)字:1 2 3 4 5 9 23 34 35 43 54 67 72 87 89 98。測(cè)試成功。</p><p>  2、統(tǒng)計(jì)字符出現(xiàn)的頻率</p>&

36、lt;p>  在文件conf.txt中輸入字符串:iqwufhfeunvuienVRCUJKNUY386t872498,在文件中得到結(jié)果為:0: 0.00% 1: 0.00% 2: 2.94% 3: 2.94% 4: 2.94% 5: 0.00% 6: 2.94% 7: 2.94% 8: 8.82% 9: 2.94% A: 0.00% B: 0.00% C: 2.94% D: 0.00% E: 0.0

37、0% F: 0.00% G: 0.00% H: 0.00% I: 0.00% J: 2.94% K: 2.94% L: 0.00% M: 0.00% N: 2.94%</p><p>  O: 0.00% P: 0.00% Q: 0.00% R: 2.94% S: 0.00% T: 0.00%</p><p>  U: 5.88% V: 2.94% W: 0

38、.00% X: 0.00% Y: 2.94% Z: 0.00%</p><p>  a: 0.00% b: 0.00% c: 0.00% d: 0.00% e: 5.88% f: 5.88%</p><p>  g: 0.00% h: 2.94% i: 5.88% j: 0.00% k: 0.00% l: 0.00%</p><p>  m

39、: 0.00% n: 5.88% o: 0.00% p: 0.00% q: 2.94% r: 0.00%</p><p>  s: 0.00% t: 2.94% u: 8.82% v: 2.94% w: 2.94% x: 0.00%</p><p>  y: 0.00% z: 0.00%。測(cè)試成功。</p><p><b>  五、課

40、程設(shè)計(jì)總結(jié)</b></p><p>  剛拿到題目的時(shí)候我感到一頭霧水,因?yàn)殛P(guān)于文件的打開(kāi)、讀出和寫入我一點(diǎn)都不懂,在迷茫中我又拿起了課本,并認(rèn)真研究課本中關(guān)于文件的那一章及其他的一些資料。隨后我就開(kāi)始動(dòng)手編寫相關(guān)程序,一個(gè)程序編完后我非常興奮,但當(dāng)?shù)谝淮芜\(yùn)行的時(shí)候我猶如受到當(dāng)頭一棒,因?yàn)槌绦虻腻e(cuò)誤太多了。在重拾信心之后,我開(kāi)始認(rèn)真的檢查程序中的每一個(gè)語(yǔ)句,邊檢查邊運(yùn)行,慢慢的我終于把所有的錯(cuò)誤都找到

41、并一一改正過(guò)來(lái),在這之中我獲益良多。就這樣通過(guò)查資料和一點(diǎn)一點(diǎn)的調(diào)試,我最終把要求的程序正確的寫了出來(lái)。</p><p>  通過(guò)這次課程設(shè)計(jì)我又學(xué)到了更多的C語(yǔ)言的知識(shí),解決了幾乎以前的所有的盲點(diǎn)和疑點(diǎn)。更重要的是我學(xué)會(huì)了怎樣查資料,至此課程設(shè)計(jì)我查了很多關(guān)于C語(yǔ)言的資料,慢慢的我掌握了查資料的有效方法,我相信這一點(diǎn)對(duì)我今后的學(xué)習(xí)和生活會(huì)有很大幫助。</p><p><b> 

42、 參考文獻(xiàn)</b></p><p>  C語(yǔ)言程序設(shè)計(jì)/李麗娟,馬淑萍主編.-2版.-北京:中國(guó)鐵道出版社,2009.</p><p>  大學(xué)計(jì)算機(jī)基礎(chǔ)/施榮華,劉衛(wèi)國(guó)主編.-2版.北京:中國(guó)鐵道出版社,2009.</p><p>  大學(xué)程序設(shè)計(jì)(C)實(shí)踐手冊(cè)/夏耘,吉順如,王光學(xué)主編.-上海:復(fù)旦大學(xué)出版社,2008.</p><

43、;p><b>  附錄</b></p><p><b>  1、文件數(shù)據(jù)的處理</b></p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<conio.h>&

44、lt;/p><p><b>  main()</b></p><p>  {FILE *fa,*fb,*fc,*fd; /*定義文件指針*/</p><p>  int *a,i,j,x,y,t;</p><p>  if((fa=fopen("c:\\data1.txt","r

45、t"))==NULL)</p><p>  {printf("cannot open");exit(0);}</p><p>  if((fb=fopen("c:\\data2.txt","rt"))==NULL)</p><p>  {printf("cannot open"

46、);exit(0);}</p><p>  if((fc=fopen("c:\\jiaoji.txt","wt"))==NULL)</p><p>  {printf("cannot open");exit(0);} </p><p>  if((fd=fopen("c:\\bingji.tx

47、t","wt"))==NULL)</p><p>  {printf("cannot open");exit(0);} /*判斷能否打開(kāi)文件*/</p><p>  for(i=0;!feof(fa);i++)</p><p>  {fscanf(fa,"%d",&a[i]);x=i+

48、1;}</p><p>  for(i=x;!feof(fb);i++)</p><p>  {fscanf(fb,"%d",&a[i]);y=i+1;} /*讀取兩個(gè)文件中的數(shù)字*/</p><p>  for(i=0;i<y;i++)</p><p>  for(j=i+1;j<y;j++)<

49、/p><p>  {if(i<x&&j<x&&a[i]==a[j]) a[i]=0; /*前x個(gè)中重復(fù)的賦零*/</p><p>  if(i>=x&&a[i]==a[j]) a[i]=0;} /*剩下的重復(fù)的賦零*/</p><p>  for(i=0;i<y-1;i++)

50、/*對(duì)數(shù)組a中的數(shù)進(jìn)行排序*/</p><p>  for(j=0;j<y-i-1;j++)</p><p>  if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}</p><p>  for(i=0;i<y;i++),</p><p>  for(j=i+1;j<y;j++)

51、</p><p>  {if(a[i]==a[j]&&a[i]!=0) fprintf(fc,"%d ",a[i]);/*把a(bǔ)中重復(fù)的非零數(shù)值寫入到文件中*/</p><p>  if(a[i]==a[j]) a[i]=0;} /*把以上重復(fù)中的其中一個(gè)賦零*/</p><p>  for(i=0;i<y;i++)

52、 /*把a(bǔ)中非零數(shù)字寫入到文件中*/</p><p>  if(a[i]!=0) fprintf(fd,"%d ",a[i]);</p><p><b>  }</b></p><p>  2、統(tǒng)計(jì)字符出現(xiàn)的頻率</p><p>  #include<stdio.h></p>

53、;<p>  #include<stdlib.h></p><p><b>  main()</b></p><p>  {FILE *fa,*fb; /*定義文件指針*/</p><p>  char a[100];</p><p>  int len,i,j,num;</p>

54、;<p>  if((fa=fopen("c:\\conf.txt","rt"))==NULL)</p><p>  {printf("cannot open");exit(0);}</p><p>  if((fb=fopen("c:\\rate.txt","wt"))==N

55、ULL)</p><p>  {printf("cannot open");exit(0);} /*判斷文件能否打開(kāi)*/</p><p>  fgets(a,100,fa); /*把文件中的字符串讀入到數(shù)組a中*/</p><p>  len=strlen(a); /*計(jì)算字符串長(zhǎng)度*/</p><p>  

56、for(i=48;i<=122;i++) </p><p><b>  {num=0;</b></p><p>  if(i>57&&i<65) continue;</p><p>  if(i>90&&i<97) continue;              /*遇到不符合要

57、求的ASCII碼跳進(jìn)下次循環(huán)*/</p><p>  for(j=0;j<len;j++)</p><p>  if(a[j]==i) num=num+1; ?。?jì)算此字符出現(xiàn)的次數(shù)*/</p><p>  fprintf(fb,"%c:%5.2f%%\n",i,100*(float)num/len);}</p><p

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論