頻道欄目
首頁 > 考試 > 等級考試 > 三級 > 網絡技術 > 正文

計算機等級考試三級網絡技術上機題(8)

2014-12-22 08:25:19           
收藏   我要投稿
編寫函數jsValue(),它的功能是求Fibonacci數列中大于t的最小的一個數,結果由函數返回,其中Fibonacci數列F(n)的定義為:
  F(0)=0,F(1)=1
  F(n)=F(n-1)+F(n-2)
  最后調用函數writeDat(),把結果輸出到文件OUT80.DAT中。
  例如:當t = 1000時,函數值為1597。
  注意:部分源程序已給出。
  請勿改動主函數main()和寫函數WriteDat()的內容。
  試題程序:
  #include
  void writeDat();
  int jsValue(int t)
  {
  }
  void main()
  {
  int n;
  n=1000;
  printf("n=%d, f=%dn", n, jsValue(n));
  writeDat();
  }
  void writeDat()
  {
  FILE *out;
  int s;
  out = fopen("OUT80.DAT", "w");
  s = jsValue(1000); printf("%d",s);
  fprintf(out, "%dn", s);
  fclose(out);
  }
【答案】
  int jsValue(int t)
  {
  int f1=0,f2=1,fn; /*定義變量存儲Fibonacci數,初始化數列的前兩項*/
  fn=f1+f2; /*計算下一個Fibonacci數*/
  while(fn<=t)>
  {
  f1=f2;
  f2=fn;
  fn=f1+f2;
  }
  return fn; /*返回Fibonacci數列中大于t的最小的一個數*/
  }
  【解析】解答本題的關鍵是要充分理解題意,只有理解了題意本身的數學過程,才能把數學過程轉化為程序邏輯。根據已知數列,我們不難發現:在 Fibonacci數列中,從第三項開始,每一項都可以拆分為前兩項之和。本題要求找到該數列中"大于t的最小的一個數"。這里可以借助一個while循環來依次求數列中的數,直到出現某一項的值大于t,那么這一項就是"大于t的最小的一個數"。
上一篇:計算機等級考試三級網絡技術上機題(10)
下一篇:計算機等級考試三級網絡技術上機題(13)
相關文章
圖文推薦
文章
推薦
熱門新聞

關于我們 | 聯系我們 | 廣告服務 | 投資合作 | 版權申明 | 在線幫助 | 網站地圖 | 作品發布 | Vip技術培訓 | 舉報中心

版權所有: 紅黑聯盟--致力于做實用的IT技術學習網站

重庆快乐十分开奖记录