C語言函數2

來源:互聯網
上載者:User

標籤:ber   複雜   輸入   運算子   count   注意   運算   正確答案   技術分享   

一、PTA實驗作業6-3 使用函數判斷完全平方數:1. 本題PTA提交列表:

2. 設計思路:

3.本題調試過程碰到問題及PTA提交列表情況說明:
  • 1.一開始考慮讓輸入值N去整除一個迴圈變數i,i隨著迴圈次數改變而改變,N每次除兩次i,能得到1的值時便為完全平方數,返回1值,否則當i>N/2迴圈結束,則返回0值;一開始覺得這個做法很可行,但實際上一經運行調試後發現錯誤很多,後來發現是因為沒有考慮1和0的特殊性,但是就算考慮了也仍不對,在同學的建議下用了逆向思路即若i*i==N,return 1;用i值來湊N值;然後現在又用第一次的思路做了一遍,想弄清之前思路到底錯哪兒,卻發現一次就過,這才明白先前沒有弄懂當被調用的函數一旦Return後就不會再執行後面的語句,所以之前考慮了一堆條件,越複雜越容易錯;
  • 2.這張是現在用一開始的思路做的正確答案;
  • 3.可是後來又發現了一個問題,當被調用函數返回一個值後不是應該馬上結束執行嗎,為什麼當我把if(n==0||n==1) return 1;語句放在迴圈外時是對的,而將其放在迴圈裡面時則不正確,似乎是個無效語句???
  • 4.這張圖是把if(n==0||n==1) return 1;語句放在迴圈內,是錯誤的,不知道為什嗎???希望有大神幫忙解答;
6-6 使用函數輸出水仙花數:1. 本題PTA提交列表:

2. 設計思路:

3.本題調試過程碰到問題及PTA提交列表情況說明:
  • 1.這題剛開始提交時PTA提示運行逾時,同學建議最佳化一下演算法,去掉不必要的步驟,於是重新寫了一遍,
  • 2.這張是第一次寫的有些複雜的代碼;
  • 3.這張是第二次最佳化後的代碼,還是顯示運行逾時;
  • 4.於是重新動手寫了一遍代碼,這次思路比之前清晰許多,信心滿滿地提交後,PTA回答了我四個字“部分正確“,這個代碼調了兩天,有點崩潰,後來請教同學,同學提醒我次方數應等於輸入數的位元,可能因為慣性思維,加上沒注意審題,以為水仙花數都等於每位元取餘後的三次方,後來又添加了一步計算整數位元的演算法,答案還是錯的,在同學提示下發現沒給統計整數位元的count值賦初值,給count賦初值後答案才正確;

    6-7 使用函數輸出指定範圍內的完數:1.本題PTA提交列表:

    2. 設計思路:


3.本題調試過程碰到問題及PTA提交列表情況說明:
  • 1.一開始審題時有點懵,不知道因子是什麼,以為只要不等於它本身的數都可以當加數,後來百度才知道因子相當於約數,然後才開始做題;
  • 2.調試時發現因為i要滿足i<=number/2,所以number=1值始終進不了迴圈,於是另外給1值設定了執行步驟;
  • 3.調試時又發現sample2無法實現輸出,即當一個區間內並無完數時的情況沒有考慮,一開始找不到作為無完數的依憑條件,後來就新設定了變數count,用來統計完數個數,當count==0時輸出No perfect number;

    二、同學代碼結對互評:1.同學的代碼;

2.My Code;

3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題。
三、本周題目集的PTA最後排名:

四、本周學習總結:1.你學會了什嗎?1. C語言哪些資料類型?
  • 1.整型變數和常量,浮點型變數和常量,字元型變數和常量;
2. 字元型資料需要注意地方?
  • 1.‘A‘和‘a’是不同的字元型常量;
  • 2.‘A’+1對應字元‘B’;
  • 3.小寫字母轉為大寫字母:ch=ch-‘a‘+‘A‘或者ch=ch-‘b‘+‘B‘等等;大寫字母轉化為小寫字母:ch=ch+‘a‘-‘A‘;
  • 4.小寫字母比大寫字母的ASCLL碼多32;
  • 5.getchar()和putchar()只能處理單個字元的輸入和輸出;
  • 6.空格與斷行符號符都會被%c吸收;
  • 7.‘1’的ASCLL碼是49;‘A’的ASCLL碼是65;

    3. 自增自減運算子?
  • 1.首碼++先+1再賦值,尾碼++先賦值再+1;

    4. 運算子優先順序?
  • 2.單目運算子,條件運算和賦值運算的結合放向從右至左,算數運算(雙目運算子),移位元運算,關係運算,位邏輯運算和邏輯運算結合方向從左至右;

    5. C語言哪些運算式?課堂派哪裡做錯,做錯的請在這裡分析原因?
  • 1.當賦值符左邊的變數和右邊的變數類型不同時,先計算右邊的值,再賦值給左邊,且要轉換成左邊的變數類型;
  • 2.double 3得到3.0;int3.8得到3;
  • 3.首碼++(--)和尾碼++(--)的區別不是很清楚,首碼++先+1再賦值,尾碼++先賦值再+1;
  • 4.當a=3時,a+=a-=a*a的值算錯,原因是沒意識到a是一個變數,在從右往左算的過程中a為9時仍把a當3來計算;
  • 5.不明白8>6>3的值是多少,即對關係運算子的原理不清楚,後來明白單目運算子從左往右結合,先算8>6,得1(關係運算子的結果不是1就是0),很明顯1>3不成立,所以得0;

    6.其他內容?
  • 1.異或:相同為0,不同為1;
  • 2.取反(位非運算):0變為1,1變為0;
  • 3.按位“與”和異或的規則相反,按位“與”是不同為0,相同為1;

2.本周的內容,你還不會什嗎?
  • 1.逸出字元的用法不太清楚;

  • 2.ASCLL碼對應的字元不太清楚;
  • 3.進位間的轉換不是很清楚;

    3.迴圈結構考試總結(全部同學都要寫)
1.哪題做錯了,怎麼改?2.考試結果滿意麼,怎麼改進?3.其他總結。

C語言函數2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.