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

來源:互聯網
上載者:User

標籤:不能   運行   actor   ret   直接   增加   pow   分享   print   

一、PTA實驗作業題目1:6-5 使用函數輸出一個整數的逆序數1.本題PTA實驗結果

2.設計思路
  • 1.定義a,result放要求的逆序數
  • 2.但number不等於0執行步驟3,4,5
  • 3.a=number%10 /求number取餘10的數/
  • 4.number=number/10
  • 5.result=result*10+a回到步驟2
  • 返回result的值 如果number=0 直接返回0
3.本題調試過程碰到問題及解決辦法

問題:剛開始調試函數的題目時,不知道斷點設在哪,以為放在主函數在調用函數時會自動調到下面的函數。
不斷進行嘗試,後來才知道原來要調試函數斷點要放在函數那邊,才能調試你編寫的函數。

題目2:6-7 使用函數輸出指定範圍內的完數1.本題PTA實驗結果

2.設計思路

第一個函數

  • 1.定義i,sum=0
  • 2.如果輸入的number不等於1時執行迴圈for(i=1;i<=number/2;i++){
    if(number%i==0)
    sum=sum+i;
    }
  • 3.如果sum==number,就返回1,否則返回0
  • 4.如果輸入的number的值為1,返回1

第二個函數

  • 1.定義i,j,flag=0
  • 2.在規定範圍列出所有可能並調用函數判斷
    for(j=m;j<=n;j++){
    if(factorsum(j)==j){ /如果是就開始輸出/
    printf("%d = 1",j);
    flag=1;
    for(i=2;i<=j/2;i++){
    if(j%i==0) /說明i是因數並輸出i/
    printf(" + %d",i);
    }
    printf("\n");
    }
  • 3.如果區間沒有數符合就輸出No Fibonacci number
3.本題調試過程碰到問題及解決辦法

剛開始的代碼第二個函數的迴圈有點問題
for(i=1;i<=j/2;i++){
if(j%i==0)
printf(" + %d",i);
}
i是設從1開始的。這樣總會輸出1.但前面已經輸出一個1了所以會導致部分正確。
經過多次輸出發現了這個問題,經過排查發現並修改。

題目3:7-1 求組合數1.本題PTA實驗結果

2.設計思路

主函數

  • 1.定義n,m,a
  • 2.輸入m,n的值
  • 3.a=fact(n)/(fact(m)*fact(n-m)) /調用函數/
  • 4.輸出值
    被調用的函數
  • 1.定義整形變數i,浮點變數result=1
  • 2.執行迴圈 for(i=1;i<=n;i++)
    result=result*i
  • 3返回result的值到主函數
3.本題調試過程碰到問題及解決辦法
  • 本題能較好完成。
二、同學代碼結對互評1.互評同學名稱歐陽震霆2.同學互評照片

3.My Code、互評同學代碼
int prime( int p ){    int i;    for(i=2;i<=sqrt(p);i++){    if(p%i==0)    break;}    if(i>sqrt(p)&&p!=1)    return 1;    else     return 0; }  void Goldbach( int n ) {    int i,j;    for(i=2;i<=n/2;i++){    if(prime(i)==1&&prime(n-i)==1){    printf("%d=%d+%d",n,i,n-i);     break;    }    }} 歐陽
#include<math.h>int prime( int p ){    int i;    if(p==1) return 0;     for(i=2;i<=sqrt(p);i++){    if(p%i==0)    break;    }    if(i>sqrt(p))    return 1;    return 0;}void Goldbach( int n ){    int u,a,j;    for(u=1;u<=n;u++){        int flag=0;        for(j=1;j<=n;j++){    if(prime(u)&&prime(j))    a=u+j;    if(a==n)    {        printf("%d=%d+%d",n,u,j);        flag=1;        break;    }}    if(flag==1) break;}} 我的
4.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題。
  • 首先可以看出歐陽的代碼相對比較簡潔而我的篇幅顯得比較大。
  • 在下面那個函數中我用了嵌套迴圈以及再設一個flag來判斷條件,思路比較直接,歐陽的則是用了調用函數及運用了
    函數直接解決,需要一定思考。
  • 我更喜歡歐陽的代碼。我的雖然較直接但篇幅太大。歐陽運用函數就可以解決掉問題,看起來較為簡潔。
三、本周題目集的PTA提交列表及最後排名


四、本周學習總結1.你學會了什嗎?1.1 C語言哪些資料類型?
  • 短整形
  • 長整形
  • 字元形
  • 單精確度浮點形
  • 雙精確度浮點形
1.2 字元型資料需要注意地方?
  • 賦值時要加‘ ‘
  • 自增時要c++不能c=c++
1.3 自增自減運算子?
  • a--/a++是尾碼(自減)自增,變數值(減少)增加,運算式值不變
  • --a/++a是首碼(自減)自增,變數值(減少)增加,運算式值增加
1.4 運算子優先順序?
  • 算術運算子>關係運算子>邏輯運算子>條件運算式>賦值運算子>逗號運算子
  • 邏輯運算子,關係運算子,雙目算術運算子是從左向右運算(左結合)
1.5 C語言哪些運算式?課堂派哪裡做錯,做錯的請在這裡分析原因?
  • 賦值運算式,邏輯運算式,條件運算式,關聯運算式
  • 錯題:運算式(j=3,j++)的值。當時不知道j++整個運算式的值為j。
2.本周的內容,你還不會什嗎?
  • 對於在設一個量判斷條件運用不夠靈活如:flag
    -找錯誤的能力還是不夠
3.迴圈結構考試總結1.哪題做錯了,怎麼改?

7-3 二進位的前置的零:我用pow(2,i)的方法來接近輸入的數,運用運算式輸出。但值一大就運行逾時了。後來才知道
值超過了int的範圍,使用double就通過了

7-5 單詞長度:當時沒有去完成該題目。

該代碼最後有一種情況不符合

  • 暫時未解決
2.考試結果滿意麼,怎麼改進?

結果不太滿意。因為看到最後一題有點不太理解就放棄了。後面自己去完成可以得到較好分數。以後會多去嘗試。
然後自己的查錯能力也要提高,就是自己多去思考,多做題。

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.