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

來源:互聯網
上載者:User

標籤:排列   逗號運算子   ble   jpg   列表   範圍   完數   設計   語言   

一、PTA實驗作業題目1:使用函數輸出一個整數的逆序數1. 本題PTA提交列表

2. 設計思路
reverse函數(int number):1.int n,i,number1,number2=0//n控制第一個迴圈,i控制第二個迴圈,number1存放number資料來,number2來存放逆序數2.number1 = number//把數字賦值給number1求number的位元,避免改變number的值 3.for n=1 to number1!=0 執行4.4.n++;number1=number1/10;5.while number%10=0時執行6.7.6.if number==0 break;//考慮輸入0時進入死迴圈7.number=number/10;n--;//若個位為零先丟掉個位8.for i=1 to i<=n執行9.10.119.int unit;10.unit=number/pow(10,(i-1))//逐步丟掉個位 11.number2=unit%10*pow(10,n-i-1) +number2;//累加算出逆序數 12.return number2;
3.本題調試過程碰到問題及PTA提交列表情況說明。
  • 在提交前有遇到計算數字位元不正確的問題 解決辦法:在算位元的迴圈裡輸出了n的值用於找錯,最後發現是結束條件應該為number1!=0;
  • 提交後未滿分提示輸入0時錯誤 解決辦法:在丟個位的步驟七迴圈中寫一個條件判斷number==0時break跳出該語句。
題目2:使用函數輸出指定範圍內的完數1. 本題PTA提交列表

2. 設計思路
factorsum函數(int number):1.int i,sum=0;//i控制迴圈 sum來把每個因子累加 2.if (number==1) return 1//先把特殊情況1列出去3.else 執行4.5.4for i=1 to i<=(number/2) i++//逐個求number因子 5. if ((number/i)==(double)number/i) sum=sum+i;6.return sum;PrintPN函數(int m;int n):1.int i,k,y=0;//i控制第一層迴圈(找到區間內的完數),k控制第二層迴圈  y=0來標記是否有完數產生 2.for i=m to i<=n i++{       3. if (factorsum(i)==i){           4.y=1;//有完數產生就改變y的值            5.printf("%d =",i);           6.if (i==1) {printf(" %d",i);printf("\n");}//1時的特殊情況            7.else{                   8.for k=1 to k<(i/2) k++){//將該完數分解                         9.if (k==1) printf(" %d ",k);                       10.else if (i/k==(double)i/k) printf("+ %d ",k);}                   11.printf("+ %d",i/2);                   12.printf("\n");                       }                }            }        }3.if (y==0) printf("No perfect number") ;
3.本題調試過程碰到問題及PTA提交列表情況說明。
  • 多種錯誤中首先是沒考慮無完數的情況 解決辦法:用開頭定義一個y=0;中間如果產生一個完數就賦值y=1來實現。
題目3:求組合數1. 本題PTA提交列表

2. 設計思路
  • 定義整型變數n,m(n<=n)
  • 輸入n,m
  • 輸出 result的值,result=fact(m)/(fact(n)*fact(m-n))
  • 定義浮點型函數fact(double n)
  • 定義浮點型變數i,result,i控制變數,result用來存放累乘的值
  • 返回result的值。
3.本題調試過程碰到問題及PTA提交列表情況說明。
  • 資料類型不符 解決辦法:同學提醒把函數類型改為double
二、同學代碼結對互評1.同學互評照片。

2.My Code、互評同學代碼

3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題。
  • 不同:
    劉博涵的函數是直接將m,n帶到一個函數中進行組合數的總運算,而我的函數是只進行累乘的運算再在輸出裡面用公式fact(m)/(fact(n)*fact(m-n)輸出結果
  • 優勢:
    劉博涵同學代碼在輸出部分就不需要在進行運算了,而我的還需要進行。
    My Code比較簡潔,函數內進行的運算比較簡單
  • 更喜歡自己的代碼,因為總體看起來簡潔,同時也沒有那麼多迴圈,更易懂。
三、本周題目集的PTA最後排名。

四、本周學習總結1.你學會了什嗎?1.1 C語言哪些資料類型?

整型、字元型、實型

1.2 字元型資料需要注意地方?
  • 輸入輸出均不同
  • 要注意在scanf輸入的語句中空格的加入可能會被字元型資料拾取
  • 單引號‘’的運用

    1.3 自增自減運算子?
  • a=++n 表示n=n+1 a=n
  • a=n++ 表示a=n n=n+1
  • a=--n 表示n=n-1 a=n
  • a=n-- 表示a=n n=n-1

    1.4 運算子優先順序?

    從高到低排列:邏輯運算子、算術運算子、關係運算子、邏輯運算子、條件運算式、賦值運算子、逗號運算子

    1.5 C語言哪些運算式?課堂派哪裡做錯,做錯的請在這裡分析原因?
  • 算術運算式、賦值運算式、關聯運算式、邏輯運算式、條件運算式
  • 第二題下列程式段輸出結果為 __。

 int x=1, y=012; 

printf(“%d”,y*x++);

錯選24 正確10 原因:不知道y=012是八進位的表達 也不知道單獨的x++的值

第四題運算式8>6>3的值是
錯選1 正確0 原因:不知道(8>6)=1 然後(1>3)=o

2.本周的內容,你還不會什嗎?
  • 優先順序還需要再鞏固
  • 進位間的轉換需要再學習
  • 位元運算符不懂
3.迴圈結構考試總結1.哪題做錯了,怎麼改?

第四題錯了 第五題沒做。
負數部分答案錯誤 應該在之前判斷是否為負數,若為負數輸出0。

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.