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

下載本文檔

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

文檔簡介

1、<p>  課 程 設(shè) 計(jì) 報(bào) 告</p><p>  題目 文件存取練習(xí)</p><p><b>  一、設(shè)計(jì)任務(wù)與目標(biāo)</b></p><p>  設(shè)計(jì)任務(wù)及類似已有的問題和功能:對(duì)文件中的數(shù)據(jù)讀取及存放的熟悉,應(yīng)用于各行各業(yè),如銀行對(duì)用戶的資金數(shù)據(jù)存放與讀取的業(yè)務(wù)就應(yīng)用到該功能。</p><p>  目

2、標(biāo):我進(jìn)行本設(shè)計(jì)需達(dá)到的目標(biāo)是能熟練的運(yùn)用C語言對(duì)各種數(shù)據(jù)進(jìn)行存貯和讀取使用,數(shù)據(jù)的對(duì)比,隨機(jī)數(shù)的生成和運(yùn)用,數(shù)據(jù)的排序</p><p><b>  方案設(shè)計(jì)與論證</b></p><p>  使用函數(shù)rand()隨機(jī)生成1000個(gè)數(shù),利用fopen語句中”w”指令將其寫入指定文件,而下一個(gè)函數(shù)input則利用fopen語句中”r”指令,利用指針指向指定文件,讀入到a

3、數(shù)組,用while語句統(tǒng)計(jì)數(shù)組a中0-9的個(gè)數(shù),并存入b[0]-b[9]數(shù)組中,判斷素?cái)?shù)如果n不能被所有小于等于它的平方根的整數(shù)整除,則n為素?cái)?shù),(論證:假如某個(gè)數(shù)n不是素?cái)?shù),則一定可以分解成x*y形式。由此可得,n不是素?cái)?shù),則一定可以被某個(gè)小于n的數(shù)整除。而對(duì)于n來說,最小公因數(shù)最大只能為n的平方根,因?yàn)榧偃绱嬖谝粋€(gè)大于n平方根的公因數(shù)x,則一定存在另一個(gè)公因數(shù)y=n/x,y<x。從而得上述定理),而最大素?cái)?shù)的開方+1后必定比j

4、=2的循環(huán)變量小,從而得出最大素?cái)?shù),接著利用冒泡排序法,建立一個(gè)“擂臺(tái)”,用“擂臺(tái)”上的數(shù)的前一個(gè)數(shù)與之比較,小的那個(gè)數(shù)放到最后,從而使數(shù)據(jù)按降序排列,利用絕對(duì)值,使相鄰兩數(shù)不斷循環(huán)相減,得出最大差值和最小差值,根據(jù)ASCII值且用fgetc函數(shù)讀入指定文件的字符,并使其輸出。</p><p>  程序框圖或流程圖,程序清單與調(diào)用關(guān)系</p><p><b>  四、全部源程序清

5、單</b></p><p>  #include<stdio.h></p><p>  #include<math.h></p><p>  #include<stdlib.h></p><p>  #include<time.h></p><p><b

6、>  //(1)</b></p><p>  int Rand1000(int d[],int n)// 隨機(jī)生成n個(gè)隨機(jī)數(shù)序列,n=999</p><p><b>  { </b></p><p><b>  int i,j; </b></p><p><b>  FI

7、LE *fp;</b></p><p>  srand((unsigned)time(NULL)); //以時(shí)間作種子</p><p>  for(i=0;i<n;i++) </p><p>  { d[i]=rand();</p><p>  for(j=0;j<i;j++) </p>

8、;<p>  /*if(d[j]==d[i]) </p><p>  { j=0; d[i]=rand(); } *///去掉重復(fù)數(shù)據(jù) </p><p>  printf("%d ",d[i]); </p><p><b>  }</b></p><p>

9、;  printf("\n__________生成完畢__________\n");</p><p>  fp=fopen("file1.dat","w");//打開文本,將數(shù)據(jù)寫入到文本“file1.dat</p><p>  for(i=0;i<n;i++)</p><p><b>  

10、{</b></p><p>  fprintf(fp,"%d ",d[i]);</p><p><b>  }</b></p><p>  fclose(fp);//關(guān)閉文本 </p><p><b>  }</b></p><p> 

11、 //(2)讀數(shù)據(jù)文件</p><p>  int input(char filename[30],int a[])</p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  int i,k=0;</p><p>  

12、printf("\n__________讀取上述數(shù)據(jù)且放入數(shù)組a中__________\n");</p><p>  if((fp=fopen(filename,"r"))==NULL)</p><p><b>  {</b></p><p>  printf("Read File Error&

13、quot;); return 0;</p><p><b>  }</b></p><p>  while(!feof(fp))</p><p><b>  {</b></p><p>  fscanf(fp,"%d",&a[k]); k=k+1; </p

14、><p><b>  }</b></p><p>  printf("\n 讀取數(shù)據(jù)結(jié)束總計(jì)=%d\n",k); </p><p>  return k-1;</p><p><b>  }//參數(shù)</b></p><p><b>  //(3)&l

15、t;/b></p><p>  digitcount(int a[],int n,int b[10]) //統(tǒng)計(jì)數(shù)字個(gè)數(shù)</p><p><b>  {</b></p><p><b>  int i,k;</b></p><p>  printf("\n__________開始統(tǒng)計(jì)

16、每位數(shù)字出現(xiàn)的次數(shù),0-9__________\n");</p><p>  for(i=0;i<10;i++) b[i]=0;</p><p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p><b>  k=a[i];</b>&

17、lt;/p><p>  while(k!=0)</p><p><b>  {</b></p><p>  b[k%10]++;</p><p><b>  k=k/10;</b></p><p><b>  }</b></p><p&g

18、t;<b>  }</b></p><p>  for(i=0;i<10;i++) </p><p>  printf("%d ",b[i]);</p><p>  printf("\n__________結(jié)束統(tǒng)計(jì)每位數(shù)字出現(xiàn)的次數(shù)__________\n") ;</p>

19、<p><b>  }</b></p><p><b>  //(4)</b></p><p>  int maxprime(int *p,int n)//確定最大的素?cái)?shù)</p><p><b>  {</b></p><p>  int i,k,j;</p&g

20、t;<p>  for(i=0;i<n;i++)</p><p><b>  {</b></p><p><b>  k=p[i];</b></p><p>  for(j=2;j<=sqrt(k)+1;j++)//讓整數(shù)n被從2到n的平方根之間的數(shù)一一整除 </p>&

21、lt;p>  if(k%j==0) break;//若n能被其中某一個(gè)數(shù)整除,則不是素?cái)?shù),跳出循環(huán)返回0</p><p>  if(j>sqrt(k)+1) return i; //p[i]是最大素?cái)?shù)</p><p><b>  }</b></p><p>  return 0; //不包含素?cái)?shù)</p><

22、p><b>  }</b></p><p>  sort(int d[],int total)//為數(shù)據(jù)排序</p><p><b>  {</b></p><p>  int i,k,temp;</p><p>  printf("\n__________開始排序_________

23、_\n"); </p><p>  for(i=1;i<total;i++)</p><p><b>  {</b></p><p>  for(k=i-1,temp=d[i];k>=0;k--)</p><p><b>  {</b></p><p&g

24、t;  if(d[k]<temp) d[k+1]=d[k];</p><p><b>  else </b></p><p><b>  { </b></p><p>  d[k+1]=temp; break;</p><p><b>  }</b></p>

25、<p><b>  }</b></p><p>  if(k<0) d[0]=temp;</p><p><b>  }</b></p><p>  for(i=0;i<total;i++) printf("%d ",d[i]);</p><p>

26、  printf("\n__________排序完畢__________\n"); </p><p><b>  }</b></p><p>  //兩數(shù)之差最大、最小</p><p>  maxandmin(int *p,int n)//maxandmin=最大和最小</p><p>&l

27、t;b>  {</b></p><p>  int max=p[0]-p[1],min=p[0]-p[1],dif;//dif=difference</p><p><b>  int i,k;</b></p><p>  for(i=0;i<n-1;i++)</p><p><b> 

28、 {</b></p><p>  dif=fabs(p[i]-p[i+1]);</p><p>  if(dif>max) max=dif;</p><p>  if(dif<min) min=dif;</p><p><b>  }</b></p><p>  for

29、(i=0;i<n-1;i++)</p><p><b>  {</b></p><p>  if(max==fabs(p[i]-p[i+1])) </p><p>  printf("Max dif: d[%d]-d[%d]=%d\n",i,i+1,(int)fabs(p[i]-p[i+1]));</p>

30、<p>  if(min==fabs(p[i]-p[i+1]))</p><p>  printf("Min dif: d[%d]-d[%d]=%d\n",i,i+1,(int)fabs(p[i]-p[i+1]));</p><p><b>  }</b></p><p><b>  }</b&g

31、t;</p><p>  /*字符數(shù)據(jù)轉(zhuǎn)換*/ </p><p>  void Myinput(char *fn,int *p) </p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  char a[10];<

32、;/p><p>  int k,temp,i=0;</p><p>  fp=fopen(fn,"r");</p><p>  printf("\n__________開始轉(zhuǎn)換字符__________\n");</p><p>  while(!feof(fp))</p><p>&

33、lt;b>  {</b></p><p><b>  k=0;</b></p><p>  temp=fgetc(fp);</p><p>  //ASCII[32:空格 13:回車 10:換行]</p><p>  while( temp==32 ||temp==13 || temp==10)

34、 temp=fgetc(fp);</p><p>  while(temp!=32 && !feof(fp)) //32是空格的ASCII</p><p><b>  {</b></p><p>  a[k]=temp; k++; temp=fgetc(fp);</p><p><b>  

35、}</b></p><p>  a[k]='\0';</p><p>  p[i]=atoi(a);</p><p><b>  i++;</b></p><p><b>  }</b></p><p>  printf("\n總數(shù)目為:

36、 %d\n",i);</p><p>  fclose(fp);</p><p>  for(k=0;k<i-1;k++)</p><p>  printf("%d ",p[k]);</p><p>  printf("\n__________轉(zhuǎn)換完畢__________\n");&l

37、t;/p><p><b>  }</b></p><p>  int main()</p><p><b>  {</b></p><p>  int data[10000],n=999,total_records,b[10],max_prime;</p><p>  char

38、filename[]={"file1.dat"};</p><p>  Rand1000(data,n); </p><p>  total_records=input(filename,data);</p><p>  digitcount(data,total_records,b);//統(tǒng)計(jì)每位數(shù)字出現(xiàn)的次數(shù),0至9</p>&

39、lt;p>  sort(data,total_records);</p><p>  max_prime=maxprime(data,total_records);</p><p>  if(max_prime!=0)</p><p>  printf("\n 最大素?cái)?shù)=data[%d]:%d\n\n",max_prime,data[max

40、_prime]);</p><p>  else printf("\n__________指定數(shù)據(jù)中不包含素?cái)?shù)__________\n\n");</p><p>  printf("相鄰兩數(shù)之差最大和之差最小的兩個(gè)數(shù)\n");</p><p>  maxandmin(data,total_records);//因

41、為隨機(jī)數(shù)是以時(shí)間作種子,最小的差值只能為1</p><p>  Myinput(filename,data);</p><p>  system("pause");</p><p><b>  }</b></p><p>  程序運(yùn)行結(jié)果測試與分析</p><p><b&

42、gt;  結(jié)論與心得</b></p><p>  學(xué)會(huì)了如何使用fopen。</p><p>  在怎么使用fopen語句時(shí),因?yàn)闆]有學(xué)過fopen、fgetc、fclose的語句,所以需要慢慢自學(xué)重新看會(huì)第四版的C語言教學(xué)。</p><p>  對(duì)指針和數(shù)組的應(yīng)用還是不太熟練,經(jīng)常將指針變量弄錯(cuò),對(duì)于將數(shù)據(jù)放入數(shù)組的操作還是不太熟練。</p>

43、;<p>  調(diào)試過程中出現(xiàn)一些邏輯和語法錯(cuò)誤,但是語法錯(cuò)誤容易糾正,而邏輯錯(cuò)誤則比較難糾正。有時(shí)會(huì)漏掉“,”,“;”,“}”等符號(hào)。</p><p><b>  參考資料</b></p><p>  譚浩強(qiáng),C程序設(shè)計(jì)(第三版),第13章;</p><p>  譚浩強(qiáng),C程序設(shè)計(jì)(第四版),第10章;</p>&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論