C語言部落格作業--函數

來源:互聯網
上載者:User

標籤:進入   重新定義   儲存   次數   錯誤   語言   oat   ima   ber   

一、PTA實驗作業題目1:使用函數輸出指定範圍內的完數1. 本題PTA提交列表
2.設計思路
  • 第一步:定義函數int factorsum ( int number)返回int number的因子和,定義整型變數i儲存迴圈次數以及表示各個因子,sum用於因子求和
  • 第二步:如果number==1,則傳回值1
  • 第三步:令i的值為1,滿足i<=number/2的條件時執行接下來的步驟
  • 第四步:如果滿足number%i==0的條件,運算sum=sum+i,求因子數和
    如果滿足i==number/2&&sum==number的條件,返回sum值,
  • 第一步:令i++,如果滿足i<=number/2的條件,則執行第四步
  • 第二步:定義函數void PrintPN ( int m, int n )用於逐行輸出給定範圍[m, n]內每個完數的因子累加形式的分解式,定義整型變數j,k用於存放迴圈次數,count用於確定範圍內是否有因子式存在
  • 第三步:令j=m,如果滿足j<=n的條件,執行以下步驟
  • 第四步:如果滿足factorsum(j)==j為判斷數j是否滿足因子式的條件,再如果j==1,輸出(%d = 1,j) 並換行,令count=1
    否則輸出(%d = 1,j)
  • 第五步:令k=1,滿足k<=j/2的條件,則執行接下來的步驟
  • 第六步:如果滿足k>=2&&j%k==0的條件中再滿足k==j/2的條件則令count=1,輸出(" + %d\n",k)
    否則輸出(" + %d",k)
  • 第七步:令k++,如果滿足k<=j/2的條件執行第六步,否則執行第八步
  • 第八步:令j++,如果滿足j<=n的條件則執行第四步,否則執行第九步
  • 第九步:如果count==0,則輸出No perfect number
3.本題調試過程碰到問題及PTA提交列表情況說明
  • 問題:發現輸出沒有1及其因子式1=1

    調試發現
    當進入PrintPN()時,i=0,number/2=1/2,不滿足i<=number/2的條件,所以1進入不了函數factorsum(),不被當做完數
  • 解決方案:
    把n==1時單獨考慮,當n==1時,返回函數值1,承認1是完數

    題目2:使用函數輸出指定範圍內的Fibonacci數1.本題PTA提交列表
2.設計思路
  • 第一步:定義函數int fib ( int n )用於返回第n項Fibonacci數,定義變數J存放迴圈次數,令number1=1為第一項數,number2=2為第二項數
  • 第二步:如果滿足n==1||n==2的條件,返回函數值1,
    如果滿足n>=3的條件,則令j=3,如果再滿足j<=n的條件則運算sum=number1+number2(sum存放前兩項和)
    number1=number2(number1存放sum前一項的數)
    number2=sum(把sum的值賦予number2,讓number2存放前兩項和的新的一項,再通過迴圈讓sum求新的兩項和)
  • 第三步:j++,如果仍然滿足j<=n的條件,則執行第二步,否則執行第四步
  • 第四步:返回number2的值給函數

  • 第一步:定義函數void PrintFN ( int m, int n ),定義整型變數k存放迴圈次數,o判斷是否有Fibonacci數,h配合t求第h項的Fibonacci數,t代替fib()
  • 第二步:令k=m,如果滿足k<=n的條件,則執行第三步,否則執行第七步
  • 第三步:令h=1,如果滿足h<=30,則執行下一步
  • 第四步:令t=fib(h),如果滿足t==k&&o==0的條件,則令o=1,輸出("%d",k),並使用continue語句重新開始一輪迴圈
    如果滿足t==k&&o==1的條件,輸出(" %d",k),並使用break文法跳出迴圈
  • 第五步:h++,如果滿足h<=30的條件,則執行第四步,否則執行第六步
  • 第六步:k++,如果滿足k<=n的條件,則執行第三步,否則執行第七步
  • 第七步:如果o==0,則輸出No Fibonacci number

    3.本題調試過程碰到問題及PTA提交列表情況說明
  • 問題:最開始打這題代碼的時候,函數定義時定義了一個變數i用於判斷第幾項,結果後來定義了n判斷第幾項,沒有改寫原來變數i的地方,函數判斷不了第一個輸入的數,直接輸出,導致答案部分正確
  • 解決方案:調試中發現,當判斷Fibonacci數時,並沒進去i>3的這個語句,及時改正為n>3,答案正確

    改正後:

題目3.求組合數1.本題PTA提交列表
  • 2.設計思路
  • 第一步:聲明函數double fact ( int n )
  • 第二步:輸入整型變數m,n ,用於從n個不同元素中取出m個元素的組合數
  • 第三步:定義雙精確度浮點型變數result用於輸出最後結果
  • 第四步:輸入m,n;
  • 第五步:運算result=fact(n)/(fact(m)fact(n-m)),就是求n!/m!(n-m)!
  • 第六步:保留0位小數輸出輸出result
  • 定義函數double fact ( int n )
  • 第一步:定義整型變數i存放迴圈次數與用於求階層
  • 第二步:定義雙精確度浮點型變數sum存放n階層的值
  • 第三步:令i=1
  • 第四步:如果滿足i<=n的條件,那麼運算sum=sum*i,i++,否則執行第六步
  • 第五步:如果仍然滿足i<=n的條件,那麼執行第四步 ,否則執行第六步
  • 第六步:返回函數值sum

    3.本題調試過程碰到問題及PTA提交列表情況說明
  • 問題:答案錯誤,發現
  • 解決方案:回去重新審查代碼,發現
    把sum的類型重新定義為double,答案正確

    二、同學代碼結對互評

  • 志堅同學的代碼:
    My Code:
  • 不同點:1.判斷素數時,志堅用的條件是i<=sqrt(p),我的時i<=p,這裡他對素數的判斷更快速
    2.求分解式時,志堅用了一個嵌套迴圈,i為一個分解數,j為令一個分解數,分別讓i=2 j=2~n,i=3 j=2~n,i=3 j=2~n............i=n j=2~n進行判斷,滿足i+j==n&&prime(i)==1&&prime(j)==1的條件,輸出n=p(i)+q(j)
    我利用了判斷素數函數的傳回值1和0,用了一個迴圈令一個分解數k從2到n,令一個分解數為n-k(不需要再定義一個變數),再直接判斷kprime(k)+(n-k)prime(n-k)==n(是素數時返回1再乘以本身得分解數本身,不是素數乘0為0沒意義)的條件,滿足輸出n=p(k)+q(n-k)
    就省得再用一個迴圈去實現另一個分解數
  • 我認為My Code更有優勢,減少電腦的計算量,給出答案較快
  • 沒有發現志堅同學的代碼有錯誤

三、本周題目集的PTA最後排名
四、本周學習總結1.你學會了什嗎?
  • 1.1C語言裡有整型int 資料長度32位,短整型short int 資料長度16位,長整型long int 資料長度32位,無符號整型unsigned int 資料長度32位,無符號長整型unsigned long int 資料長度32位,
    字元型 char 資料長度8位,單精確度浮點型float 資料長度32位,雙精確度浮點型double 資料長度64位
  • 1.2輸入字元型資料時千萬不要有一種習慣就是打上空格,除非你要用空格做些判斷,否則空格也會被當做字元輸入
  • 1.3自增運算子++運用為n++ 或++n,自減運算子--運用為n--或--n,首碼和尾碼所代表的運算式值不一樣
  • 1.4運算子優先順序學會了看P326-P327的表格
  • 1.5課堂派裡y*x++算錯了,要x++這個運算式的值與y相乘,原先先算x++了,令值加了1再相乘

    2.本周的內容,你還不會什嗎?
  • 二進位位邏輯運算子一點都不熟練,必須看著書慢慢一點一點推敲,碰到題目也不會用,課堂派裡的最後一題也不會做,希望老師能多花點時間在這一塊內容
  • 3.3.迴圈結構考試總結
  • 第五題求單詞長度做錯了,第四題二進位前置的零沒做。改正:第五題裡再寫個演算法判斷空格連續時輸出單詞長度就可以
  • 考試結果不滿意,前20分鐘就做完了前三道題,第四題會做,但是我先做了第五題,發現第五題有難度,硬是花了所有的時間去想這道題,結果忽略了第四道題
  • 改進:考試時會的題目一定要先做,做完會的題目再去做不會的題目,平時要再多花時間在C語言這門課上 ,要勤於動腦,不做一個推延的人

C語言部落格作業--函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.