標籤:輸出 簡單 沒有 驗證 逗號運算子 哪些 類型 意思 不同的
一、PTA實驗作業題目1:使用函數判斷完全平方數1. 本題PTA提交列表:
2. 設計思路
1、定義整型變數a,n;n控制迴圈次數
2、a=0,當a小於等於n時,執行迴圈3
3、如果pow(a , 2) == n,返回1,否則繼續迴圈,a++
4、返回0
3.本題調試過程碰到問題及PTA提交列表情況說明。
部分正確:一開始將return 0放在了迴圈裡,導致無法對小於n的每個數的平方進行驗證,使結果直接返回0。放錯位置:,將return 0放在迴圈外後就對了。
題目二: 使用函數輸出指定範圍內的完數1. 本題PTA提交列表:
2. 設計思路
1、定義整型變數i,sum=0
2、如果numberd等於1,sum=1
3、i=1,當i<number時,執行4、5
4、如果number%i==0,sum=sum+i
5、i++
6、return sum
1、定義整形變數i,j,k=0
2、i=m,當i<=n,執行3.4
3、如果factorsum(i)==i,k=1,輸出“i = 1”
4、j=2,當j
3.本題調試過程碰到問題及PTA提交列表情況說明。
部分正確:根據提示
和調試
發現完數1無法通過for(i=1;i<number;i++)迴圈來判斷,於是添加判斷,答案正確
題目三: 求組合數1. 本題PTA提交列表:
2. 設計思路
1、定義Int型變數m,n;double型變數result
2、輸入m.n
3、當m小於等於n時,result=fact(n)/(fact(m)*fact(n-m));,輸出result,取整數部分
1、定義整型變數i,double型變數a=1
2、i=1,當i小於等於n時,a=a*i,i++
3、返回a
3.本題調試過程碰到問題及PTA提交列表情況說明。
部分正確:不是很懂pta的提示,部分正確代碼為,運行結果在c++上是對的。後經同學提示注意到題目說“題目保證結果在double類型範圍內”意思是除了result變數,a變數也應為double型,才能保證其取值範圍,將a類型修改後答案正確。以後要多多注意變數類型的定義!
二、同學代碼結對互評1.同學互評照片
2.My Code、互評同學代碼
我的
毓穎的
3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?
不同點主要集中在第一個函數:
不同點1:注釋
同學的代碼注釋較清晰,可讀性強,在回看代碼時容易理解思路
不同點2:判斷數位位元
同學的代碼先是對數位位元加以分析,而我是通過對題目取值範圍的分析來確定水仙花數的位元可能性,如果數字過大的時候可能這樣做會很繁瑣,同學的做法更好
不同點3:總體思路
我是直接計算各位元的值再通過if語句判斷該數是否為水仙花數,而同學是通過do-while迴圈實現計算每個位元的值並累加其次方,再通過if語句判斷是否為水仙花數。My Code在這題的取值範圍中可能思路相對簡單,容易理解,但是會比較繁瑣,一步一步求次方和。在更大的取值範圍內,我認為同學的做法更為可取,同學代碼適用範圍比較廣。感覺有些許不足是:存放number的值我認為一個就夠了,變數過多容易混亂,可以在第一個do-while後再對number重新賦b值。
三、本周題目集的PTA最後排名。
四、本周學習總結
1.你學會了什嗎?
整型、實型、字元型、構造類型
(1)不僅可以寫成字元常量的形式,也可以用相應的ASSCII碼錶示,即可用整數表示。整數變數和字元型變數的定義和值可以互換
(2)字元具有數值特徵,可以像整數一樣參加運算
(3)逸出字元只代表一個字元
(4)ASCII字元集中所有字元都能用逸出字元表示
(5)字元需要用‘ ‘括起來表示,有無單引號所表示含義不同
(1)++n和n++都相當於n=n+1
--n和n--都相當於n=n-1
(2)作為運算式的值時(重點!!!)
++n的運算順序是:先執行n=n+1,再將n的值作為運算式++n的值
n++的運算順序是:先將n的值作為運算式n++的值,再執行n=n++
(課本326頁的優先順序順序和結合方式有詳細註明)
(1)優先順序不同則按優先順序從高到低計算,如果運算元兩側的運算子優先順序相同,則按結合方向決定計算順序
(2)運算子優先順序從高到低排列:邏輯運算子、算術運算子、關係運算子、邏輯運算子、條件運算式、賦值運算子、逗號運算子
- 1.5 C語言哪些運算式?課堂派哪裡做錯,做錯的請在這裡分析原因?
算術運算式、賦值運算式、關聯運算式、邏輯運算式、條件運算式和逗號運算式
1、單選題分值10.0得分: 0.0
下列程式段輸出結果為 __。
int x=1, y=012;
printf(“%d”,y*x++);
正確:10
我的:20
原因:沒有認真閱讀書本x++和++x所運算的順序是不同的,此時x++的值還是x本身
2.單選題分值10.0得分: 0.0
若a為int類型,且其值為3,則執行完運算式a+= a-= a*a 後,a的值是
正確:-12
我的:-3
原因:在a+=這塊沒有意識到a的值已經由右邊運算改變為-6造成的計算錯誤
3、單選題分值10.0得分: 0.0
設x、y、t均為int型變數,則執行語句:x=y=3; t= ++x || ++y; 後,y的值為__。
正確:3
錯誤:1
原因:將題目看成求t的值,因為++x為1,所以不運行||後的++y,y仍為3
1.6 其他內容?
(1)指定整型資料的輸出寬度:%md,若實際位元小於m,則左端補空格,若大於m,則按實際位元輸出(考試又複習了一遍)
(2)ch-‘a‘+‘A‘把小寫字元轉換成數字
ch-‘0‘把數字字元轉為數字
val+‘0‘把數字轉換為數字字元
(3)‘&‘ ‘||‘ ‘^‘ ‘~‘運算子的運用
(4)類型轉換
1.自動類型轉換
2.強制類型轉換
2.本周的內容,你還不會什嗎?
這周知識容量很大,特別是對於符號運算的知識點特別多,對於符號的優先順序和像‘&‘ ‘||‘ ‘^‘ ‘~‘運算子的運算方式還不是很熟悉,需要翻書查看。碰到像考試中第二題和最後一題的字母符號類型題比較卡殼,平時對於字母符號題的訓練比較少,運用的不是很好,還有就是像考試第四題對於二進位的轉換也不夠熟悉,對題目規律一開始沒有什麼思路,需要加深對二進位轉換的理解吧。
3.迴圈結構考試總結(全部同學都要寫)
1.哪題做錯了,怎麼改?
第二題第四題和第五題
第二題:因為平時字母題比較少,運用的也不熟練,對於字母的輸入輸出比較模糊,而且考試時候對迴圈嵌套的關係也沒完全理解,考完後整理思路重新打了一遍,發現還是一道可以完成的簡單題,迴圈就是一個控制行數,一個控制輸入字母的個數,應該可以做出來。
第四題:平時對二進位的轉換理解也比較模糊,還沒重新做出來,複習一下轉換再好好做一遍吧。
第五題;碰到字元字母題內心是比較害怕的,看題也沒有思路,需要再認真想想。。。
2.考試結果滿意麼,怎麼改進?
不滿意。以後對於字母符號題要多多認真思考感受,還有要再熟悉一下二進位的轉換,對一些例如字元陣這種典型題不要畏難,好好熟悉理解,找出各行關係。
3.其他總結。
對於一些必要的知識如果模糊了要及時複習,不要拖遝存在僥倖心理,像二進位和字母符號題就是,要紮實掌握好每個知識點,不然以後可能會是可怕的知識漏洞。
C語言部落格作業--函數