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

來源:互聯網
上載者:User

標籤:組合   調用   原因   理解   總結   根據   程式   迴圈   考試總結   

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


2. 設計思路
  • 1定義函數narcissistic( int number )
  • 2定義局部變數sum=0,n=number,end
  • 3當number為三位元時
  • 4若number/10!=0進入迴圈5
  • 5end=number%10,sum=pow(end,3)+sum,number=number/10
  • 6對最高位不滿足迴圈條件的剩餘number值sum=pow(number,3)+sum
  • 7當number為四位元時
  • 8若number/10!=0進入迴圈9
  • 9end=number%10,sum=pow(end,4)+sum,number=number/10
  • 10對最高位不滿足迴圈條件的剩餘number值sum=pow(number,4)+sum
  • 11如果sum=n,返回1,否則0

  • 1定義函數void PrintN( int m, int n )
  • 2定義局部變數i
  • 3i=m+1;i<n,i++迴圈調用上述函數判斷是否符合水仙花數,是的話輸出
3.本題調試過程碰到問題及PTA提交列表情況說明一開始編輯時忘了number的改變性,導致最後的sum與number沒有可比性,錯誤

改正之後發現輸出的資料中沒有370,調試後發現自己的條件使其沒有進入迴圈


改正後輸出正確,但是放到pta上答案錯誤,自己根據提示調試發現自己的資料輸出有局限性

調整思路後,重新修改編寫後部分正確

後發現自己題意沒有理解好,當number四位元時要四次方,修改增加後正確題目二:6-7 使用函數輸出指定範圍內的完數1. 本題PTA提交列表


2. 設計思路
  • 1定義函數factorsum( int number )
  • 2定義局部變數j.sum=0
  • 3當number=1時返回1
  • 4j=1;j<=number/2;j++迴圈5
  • 5若number%j==0,則sum=sum+j
  • 6返回最終sum的值

  • 1定義函數void PrintPN( int m, int n )
  • 2定義局部變數k,j
  • 3k=m;k<=n;k++,迴圈4,5,6
  • 4若k==factorsum(k),輸出“k =”,當k=1時直接再輸出“ 1”
  • 5j=1;j<=k/2;j++,迴圈6
  • 6若k%j==0,輸出“ j”,當j<k/2時輸出“ +”
  • 7每一輪迴圈結束輸出“\n‘‘
  • 8若j==1&&m!=1,則輸出No perfect number
3.本題調試過程碰到問題及PTA提交列表情況說明

發現輸出沒有換行,多輸出了No的不滿足部分

調整後輸出感覺相同

pta部分正確,調試修改後發現自己題意理解不夠,繼續修改

pta顯示格式錯誤

調試發現自己多了空格,改正後正確題目三:7-1 求組合數1. 本題PTA提交列表

2. 設計思路
  • 1定義整型變數m,n,浮點型變數result
  • 2輸入m,n的值
  • 3調用函數 result=fact(n)/(fact(m)*fact(n-m))
  • 4輸出result的值

  • 1定義函數fact(int n)
  • 2定義整型變數i浮點型變數product=1
  • 3i=1;i<=n;i++迴圈4
  • 4 product=product*i;
  • 5返回product的值
3.本題調試過程碰到問題及PTA提交列表情況說明


一開始編寫後提交發現部分正確,對於錯誤點考慮m=n/2的情況不太理解,自己改了一些不必要的地方,最後發現是由於自己對product的定義為整型的問題,當階乘書數太大就不正確二、同學代碼結對互評1.同學互評照片


2.My Code、互評同學代碼林岑的代碼

My Code

3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題(1)我的思路是利用取餘得個位的方式,先計算位元,再利用已知位元不停把個位的數乘上10的某個次方變成高位逆序,最後考慮末位0的問題(2)林岑的思路也有用到取餘得個位的方式,但是她比較巧妙的利用迴圈, k=k*10+m把原先個位的數跟著迴圈升高位,輸出逆序(3)My Code比較容易想到與入手,容易理解,但是很繁瑣,不適用,林岑的代碼比較簡潔,用法也很巧妙,也避開一些假設討論,在同一個迴圈語句中同時達到自己想要的效果,簡潔明了。(4)我喜歡林岑的代碼風格三、本周題目集的PTA最後排名

四、本周學習總結1.你學會了什嗎?

1.1 C語言哪些資料類型?

整型
  • 有符號:int; short[ int ](範圍 [-32768,32767] );long[ int ]
  • 無符號(自然數):unsigned[ int ];unsigned short [ int ] (範圍 [0.65535] ) ;unsigned long [ int ]
字元型
  • char
  • 可以用整數來表示字元 ch=‘A‘等價於ch=65
實型
  • float(有效數字7~8位)
  • double(有效一般15~16)
  • 數值精度和取值範圍是兩個不同的概念
實型常量
  • 浮點標記法(實數的小數形式)

    必須有小數點
  • 科學計數法(實數的指數形式)

    e前有資料,e後整數

1.2 字元型資料需要注意地方?

  • ‘a‘和‘A‘,0和‘0‘不同
  • 整型變數和字元型變數的定義和值都可以相互交換

1.3 自增自減運算子?

  • ++n的運算順序是:先執行n=n+1,在將n的值做為運算式++n的值
  • n++的運算順序是:先將n的值做為運算式n++的值,在執行n=n+1
  • 自增自減運算子的運算對象只能是變數,不能是常量或運算式。3++或++(i+j)非法

1.4 運算子優先順序?

  • 賦值運算子,條件運算式,與!,單目的算術運算子為右結合
  • 雙目的算術運算子與關係運算子,邏輯運算子與逗號運算子為左結合

1.5 C語言哪些運算式?課堂派哪裡做錯,做錯的請在這裡分析原因?

  • 算術運算式, 賦值運算式,關聯運算式,邏輯運算式,條件運算式,逗號運算式



    自己在算時認為算aa=9,a=a-a=3-9,a=a+a=3-6
    實際應為a
    a=9,a=a-a=3-9,a=a+a=-6-6=-12


自己在答這道題時認為‘1’與1不同,就認為不能確定,但即使是‘1‘,字元常量之間也是有數值差量可以轉化。

1.6 其他內容?

  • 十進位的首位元字不能是0,八進位的首位元字必須是0,十六進位首位必須要有首碼0x或0X
  • 強制類型轉換
    (類型名)運算式;
    int(3.8)得到3
  • 位元運算 (二進位位元運算)
    符號:&,|,^,-,<<,>>
2.本周的內容,你還不會什嗎?
  • 對於自增自減運算子的使用與計算不夠熟練,容易出錯
  • 字元類型的使用,輸出輸入
  • 運算子的優先順序與結合性計算也易出錯
  • 進位之間的轉換計算
  • 對於一些不常用的運算式的理解不夠
3.迴圈結構考試總結

1.哪題做錯了,怎麼改?

  • 第二題字元的使用自己不夠熟練,在定義與字母的轉換增加上不熟練,自己在考試時是利用調試工具瞭解到A的數值65再利用字元與數值的轉換關係得出正確。
    現在知道應該定義char ch=‘A‘,利用ch=ch+1得到後面字母
  • 第四道題二進位的計算,0的個數自己一開始思緒比較亂,編寫的程式複雜也不正確,隨後自己以除二的方式去考慮它的實際有效位元,再利用總的減去求得

2.考試結果滿意麼,怎麼改進?

  • 不滿意
  • 自己應該多接觸不同的題型,鍛煉自己的思維能力
  • 在編寫程式時要思考好再編寫,減少自我混亂
  • 提高自我的查錯能力,盡量自己思考找出運行失誤之處

3.其他總結

  • 在打代碼時要注意空格與換行問題,要格式準確
  • 對於空格問題也可以利用Dev-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.