C語言第五次博客作業--函數
阿新 • • 發佈:2017-11-19
src iss x的n次方 接口 十六 學習總結 錯誤 integer 代碼
不管i 為多少sum一直都是0,後來把sum定義為浮點型才算正確,正確代碼如下:
一步步下來發現自己的代碼離正確代碼十萬八千裏,不知道用for循環,沒有重新定義新的變量,沒有賦值,輸出和返回值也錯得一塌糊塗,我不是很明白返回值是什麽意思,為啥要返回?又該如何返回?返回給誰?
一、PTA實驗作業
題目1:6-2 簡單實現x的n次方
1. 本題PTA提交列表
2. 設計思路
(1)定義函數 mypow( double x, int n )
(2)定義整型變量i為循環變量,浮點型變量sum為階乘的積
(3)for i=1 to n 重復下面步驟
(4)計算sum=sum*x
(5)返回sum的值
3.本題調試過程碰到問題及PTA提交列表情況說明
初始代碼是這樣的:提交錯誤為段錯誤
第二天學霸室友告訴說要用for循環和一個求階乘的變量,然後我就添加了一個for循環,但是並沒有正確,因為我的返回值沒有正確,也沒有給sum賦值,錯誤代碼如下:
她看了我的代碼無奈的解釋道,這個題不用輸出,已經定義的變量不用再定義一次,再次改正,還是沒有正確,然後就開始調試,運行及調試過程如下:
不管i 為多少sum一直都是0,後來把sum定義為浮點型才算正確,正確代碼如下:
一步步下來發現自己的代碼離正確代碼十萬八千裏,不知道用for循環,沒有重新定義新的變量,沒有賦值,輸出和返回值也錯得一塌糊塗,我不是很明白返回值是什麽意思,為啥要返回?又該如何返回?返回給誰?
題目2:使用函數判斷完全平方數
1. 本題PTA提交列表
2. 設計思路
(1)函數接口定義int IsSquare( int n )
(2)int i放循環變量,m放輸入的一個整數,M放完全平方數
(3)賦值m=1,M=1
(4)輸入一個整數m,當i<=m時,重復循環
(5)如果m*m==M,返回1,否則,返回0
3.本題調試過程碰到問題及PTA提交列表情況說明
初始代碼:
編譯的時候要輸入兩個以上的數據,但是又只能識別一個數據,要麽是前面的YES,要麽就是後面的No,如上圖所示
PTA提交列表為部分正確,根據提示好像是少考慮了m負數的情況了,但是改著改著改成了編譯錯誤
題目3:400~499 中4出現的次數
1. 本題PTA提交列表
2. 設計思路
(1)int integer放整數,i放循環變量,count放4的次數,single放個位數字,ten放十位數字,hundred放百位數字
(2) 分別求個位十位百位的值, single=x%10; //整數取余得到個位數// ten=x/10%10; //除10再取余得到十位數// hundred=x/100; //除以100得到百位數//
(3)個位為4,十位和百位不為4,十位為4,個位和百位不為4,百位為4,個位和十位不為4,則4出現的次數為1次
(4)個位不為4,十位和百位為4,十位不為4,個位和百位為4,百位不為4,個位和十位為4,則4出現的次數為2次
(5)個位十位百位都為4,則4出現的次數為3次
(6)個位十位百位都不為4,則4出現的次數為0次
(7)返回count
3.本題調試過程碰到問題及PTA提交列表情況說明
第一次沒有仔細檢查符號標點等細節造成編譯錯誤,第二次是答案錯誤,因為沒有考慮count=0的情況,也沒有在每個if的後面加上count,補上之後就正確了,代碼過程如下:
題目4:求組合數
1. 本題PTA提交列表
2. 設計思路
(1)int m,n; double result;
(2)輸入m,n
(3)調用函數求階乘 fact(n); fact(m);fact(n-m);
(4)根據公式計算結果 result=fact(n)/(fact(m)*fact(n-m));
(5)result = 組合數計算結果”輸出
(6)定義求組合數函數
(7) int i為循環變量, double sum實現累乘
(8)當i<n,重復循環,sum=sum*i
(9)返回sum
3.本題調試過程碰到問題及PTA提交列表情況說明
(1)調用函數求階乘的時候只調用了一個,沒有對sum賦值,
(2) 計算result=fact(n)/(fact(m)*fact(n-m))沒有把除號後面括起來,導致結果很大
(3)定義變量的時候想太多,以為很復雜,所以定義了很多個循環變量
(4)result = %.0f和result = %f的區別
二、同學代碼結對互評
1.同學互評照片
2.我的代碼、互評同學代碼截圖
我的代碼:
雅慧的代碼:
3.我和同學代碼不同在哪裏?有哪些各自優勢?你更喜歡哪種代碼風格?
我和雅慧代碼不同在我的多,她的少
我的優勢是變量定義得比她的詳細,她的優勢是代碼少,清晰,她用了for循環,而我沒有
我更喜歡她的風格,但是她的代碼我沒看懂,我的我看懂了
三、截圖本周題目集的PTA最後排名
四、本周學習總結
1.你學會了什麽?
c語言的數據類型有整型,浮點型,字符型。
字符型數據不能亂打空格,因為空格也算一個字符
自增自減運算符的運算對象只能是變量,不能是常量或表達式,n++和n--都相當於n=n+1,但是n++的運算順序是先將n的值作為表達式n++的值,再執行n=n+1,++n的運算順序是先執行n=n+1,在將n的值作為表達式++n的值。n--和--n 同理
2.本周的內容,你還不會什麽?
二進制,十進制和十六進制,補碼反碼原碼,運算符和表達式,l例如a+=a-=a*a總是會算錯
3.循環結構考試總結
1.哪題做錯了,怎麽改?
一個題都沒做對,不知道要怎麽辦了都
2.考試結果滿意麽,怎麽改進?
不滿意,還是學不會啊,誰能教教我怎麽改進
C語言第五次博客作業--函數