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

來源:互聯網
上載者:User

標籤:ber   代碼   資料類型   類型   markdown   位元運算   常量   導致   變數   

一、PTA實驗作業題目1:使用函數輸出水仙花數1. 本題PTA提交列表

2. 設計思路
  • int narcissistic( int number )函數
    • 1.定義整型變數int i,j,m;
      int n,digit=0,N1,N2;
      int num,re_number=0;
    • 2.讓N1,N2賦上number的值 N1=number;N2=number;
    • 3.for迴圈{n=N1%10;
      digit++;
      N1=N1/10;} 用來統計number的位元
    • 4.for迴圈{num=1;
      n=N2%10;
      N2=N2/10;
      內嵌一層for迴圈{num=n*num;}
      計算每一位元次方的和 re_number=num+re_number;
      }
    • 5.判斷重新構成的數re_number與number是否相等,若相等,則返回1,否則返回0。
  • void PrintN( int m, int n )函數
    • 1.定義整型變數M
    • 2.利用for迴圈遞增(M=m+1;M<n;M++),同時引用函數narcissistic( int number )判斷M是否為水仙花數,若是,則輸出M。
3.本題調試過程碰到問題及PTA提交列表情況說明。
  • 問題:忽略了另一個函數的要求是“按從小到大的順序列印出給定區間(m,n)內所有的水仙花數”,對n多進行了一次判斷。

  • 解決方案:將“M<=n”改為“M<n”
題目2:使用函數輸出指定範圍內的Fibonacci數1. 本題PTA提交列表

2. 設計思路
  • int fib( int n )函數
    • 1.定義整型變數i,f1=1,f2=1,f3; //i用來控制迴圈,f1,f2,f3用來計算Fibonacci數
    • 2.for迴圈(i=3;i<=n;i++){f3=f1+f2;
      f1=f2;
      f2=f3;}
    • 3.返回f2.
  • void PrintFN( int m, int n )函數
    • 1.定義整型變數j,i,flag=0,sign=0;
    • 2.定義整型變數time=0;//用來計算題目給定範圍內Fibonacci數的個數;
    • 3.第一重for迴圈(j=1;fib(j)<=10000;j++) {time ++;}
    • 4.第二重for迴圈(i=1;i<=time;i++){
      if(fib(i)>=m&&fib(i)<=n)
      {如果sign==1 那麼輸出空格;
      flag=1; 輸出fib(i)的值;
      sign=1;}
    • 5.如果flag==0 那麼輸出"No Fibonacci number"。
3.本題調試過程碰到問題及PTA提交列表情況說明。
  • 問題:第二個函數漏考慮了Fibonacci數為1的情況,1也是Fibonacci數,但結果卻會輸出“No Fibonacci number”。

  • 解決方案:將代碼重新編寫,第二個函數先算出在題目限制範圍內Fibonacci數的個數,然後根據Fibonacci數個數利用迴圈語句找出[m,n]內的所有Fibonacci數。

題目3:求組合數1. 本題PTA提交列表

2. 設計思路
  • 1.定義整型變數m,n;
  • 2.輸入m,n;
  • 3.輸出結果("result = %.0lf",引用函數fact(n)/(fact(m)*fact(n-m));
  • 4.定義函數double fact(int n)
    • 5.定義浮點型變數product,定義整型變數i;
    • 6.給product賦初值為1;
    • 7.for迴圈(i=2;i<=n;i++) { product *= i;} //算階乘
    • 8.返回product的值。
3.本題調試過程碰到問題及PTA提交列表情況說明。

本題未遇到困難,定義一個Function Compute階乘,主函數引用三次該函數就可以算出結果。

二、同學代碼結對互評1.同學互評照片我和李夢冰同學

2.My Code、互評同學代碼李夢冰同學的代碼

My Code

3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題。
  • My Code:在最後的輸出部分利用goto直接跳出所有迴圈,雖然方便快捷,但我個人覺得有些投機取巧,goto還是盡量少用。
  • 夢冰的代碼:夢冰的第一個自訂函數,對素數的判斷,其實在p%2==0時就能退出迴圈,但夢冰的卻是一直對p做對i的取餘運算;第二個自訂函數的代碼比我的簡單有效,我用了兩個if判斷語句和兩個for迴圈語句,使代碼顯得冗長。
  • 綜上,我較喜歡夢冰的代碼。
三、本周題目集的PTA最後排名。

四、本周學習總結1.你學會了什嗎?1.1 C語言哪些資料類型?
  • 整型,字元型,實型。
1.2 字元型資料需要注意地方?
  • 1)字元型整型變數和字元型變數的定義和值都可以互相交換;
  • 2)互換整型變數和字元型變數的定義和值時,整型資料的取值範圍是有效ASCII碼;
  • 3)英文字母的大小寫是不同的字元型常量。
1.3 自增自減運算子?
  • 1)設n是一個整型變數並已賦值,則n++和++n都相當於n=n+1,不同的是++n表示的是n加一後的值,而n++仍表示原來n的值,但這時n已經等於“n+1”的值。n--與--n同理。
  • 2)自增自減運算子的運算對象只能是變數,不能是變數或運算式。
1.4 運算子優先順序?
  • 1)如果運算元兩側運算子的優先順序相同,則按結合性決定計算順序;
  • 2)可以用圓括弧改變運算子的執行次序。
1.5 C語言哪些運算式?課堂派哪裡做錯,做錯的請在這裡分析原因?
  • 1)算術運算式,賦值運算式,關聯運算式,邏輯運算式,條件運算式,逗號運算式。
    • 條件運算式的形式: 運算式1?運算式2:運算式3.
    • 逗號運算式的一般形式: 運算式1,運算式2,...,運算式n
      按照順序計算每個運算式,最後將運算式n的值作為符號運算式的值,將運算式n的類型作為逗號運算式的類型。
  • 2)課堂派第六題,忘記了10和4都是整型常量,儘管x為浮點型,但10/4的結果還是整型,在給x賦值時才變為浮點型。
  • 3)課堂派第九題,自增符號在後面的運算與在前面的運算不一樣,j++的結果應該仍為3。
1.6 其他內容?
  • C語言中整數的八進位、十六進位的表示方式。
  • 資料類型的自動轉換遵循一定規則,在賦值運算時,賦值號兩側資料的類型最好相同,至少右側資料的類型比左側資料的類型層級低,或者右側資料的值在左側變數的取值範圍內,否則會導致運算精度降低,導致結果錯誤。
  • 資料類型的強制轉換,一般形式是(類型名) 運算式,類型轉換都只是為了本次運算的需要,對資料類型的臨時轉換,並沒有改變資料的定義。
2.本周的內容,你還不會什嗎?
  • 對位元運算還不是很瞭解;
  • 對八進位、十六進位的轉換也不太懂。
3.迴圈結構考試總結3.1 哪題做錯了,怎麼改?
  • 1.7-3 二進位的前置的零
    • 忘記十進位轉二進位怎麼計算,後來糾結在算出的結果是位元的逆序。
    • 請教同學,研究後發現就算結果是二進位的逆序數,但位元是相同的而且位元除了0,第一位一定是1,那麼以此為條件可以算出位元的位元,然後與32相減,得出前置的零的個數。
  • 2.7-5 單詞長度
    • 當輸入空語句和多個空格時不能正確輸出,但目前還未解決。
3.2 考試結果滿意麼,怎麼改進?
不滿意,對嵌套迴圈的是用還是不太熟練,而且這次考試的狀態不太好,看到題目時腦子一片空白,注意力不集中,或許是平常做題花的時間太長,以後做題時會更加專註,在讀題解題方面也需要加強。
3.3 其他總結。
  • 十進位轉二進位就是把十進位數不斷除二取餘直到除以二等於1時停止;
  • 大部分嵌套迴圈語句的內迴圈條件依靠外迴圈的條件。【然而總是忘記】

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.