1. 程式人生 > >C語言第五次博客作業--函數

C語言第五次博客作業--函數

src iss x的n次方 接口 十六 學習總結 錯誤 integer 代碼

一、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語言第五次博客作業--函數