標籤:ssis 編譯 for 運算式 逆序 arc 計算 運算子 交換
一、PTA實驗作業題目1:6-4 400~499 中4出現的次數1. 本題PTA提交列表
2. 設計思路(此處用流程圖最好)
- 1.定義變數count存放輸入數字中4的個數,迴圈變數i。
- 2.如果x%4==0那麼count++。
- 3.x=x/10,將X的末尾數字去掉好進行下一次迴圈.
- 4.返回count的值。
3.本題調試過程碰到問題及PTA提交列表情況說明。
- 這題看起來挺簡單的,可是調試輸出的值卻很奇怪。
解決辦法:調試時發現程式直接跳過了x=x/10那條語句去執行count++,後來將這兩個語句的前後位置調換一下就正確了。
題目2:6-5 使用函數輸出一個整數的逆序數1. 本題PTA提交列表
2. 設計思路(此處用流程圖最好)
- 1.定義兩個變數n表示取餘後的個位元,sum表示逆序數 。
- 2.給sum賦初值sum=0;並重複以下步驟。
- 3.n=number%10;取出number的個位元, sum=sum*10+n;//計算出逆序數 。
- 4.number=number/10;將number中已經被取餘的個位元捨去,好讓下一次迴圈時取出的個位元與上一次取出的不相同。
- 5.返回sum的值。
3.本題調試過程碰到問題及PTA提交列表情況說明。
1.一開始使用了課本上那道逆序數的思想,可是每次都只能逆序輸出一個數,所以pta上就是顯示當輸入1時正確,是部分正確。
- 用devc調試發現我的函數確實也只迴圈了一次就跳出迴圈了。
- 解決辦法:經過調試有發現是for迴圈中的條件錯了,可是如果繼續用for迴圈我沒辦法確定迴圈條件,所以就改用while迴圈,之後就可以正常進行迴圈。
- 2.改用while迴圈之後確實while可以正常迴圈幾次,但是輸出的還是只有一個數。
解決辦法:經過調試之後知道了return只能返回一個值,所以每次返回的數值都是最後退出迴圈的那個數,後來去百度以後知道可以在return之前用一個變數來存放逆序數,然後經過計算後再將整個逆序數一起用return返回。所以後來新加了一個變數sum,用sum=sum*10+n;來計算逆序數,之後就正確了。
題目3:6-6 使用函數輸出水仙花數1. 本題PTA提交列表
2. 設計思路(此處用流程圖最好)
- 1.對於第一個函數:定義變數i,j為迴圈變數,digit存放將number取餘得到的餘數,count存放number的位元,one存放digit的count次方的值,power存放輸入number的值,sum存放digit的count次方之和,flag。
- 2.賦初值count=0;power=number
- 3.當number>0時,power=power/10;count++,計算出number的位元,重複以下步驟。
- 4.digit=power%10;power=power/10;one=pow(digit,count);sum=sum+one;計算出digit的count次方之和。
- 5.如果得到的sum==number,則flag=1;否則flag=0;
- 6.返回flag的值。
- 7.對於第二個函數:定義一個迴圈變數i
- 8.如果i滿足第一個函數的條件,即if(narcissistic(i)==1)則輸出i的值。
- 9,重複步驟8,直到i不在區間(m,n)內,退出迴圈。
3.本題調試過程碰到問題及PTA提交列表情況說明。
- 1.在寫第二個函數PrintN列印開區間(m, n)內所有的水仙花數時,程式中的return語句一直被devc提示法錯誤,無法編譯運行。
- 解決辦法:剛開始我以為是我的返回變數有問題,可是不管我將return中的變數換成哪一個都無法通過運行,最後我去百度才知道要將return換成printf才可以,換了以後就可以運行了。
- 2.不管輸入的m,n的值為多少,最後程式總是把(m,n)區間內的所有值都不加判斷的全部輸出
- 後來用devc調試發現number的值在我的第一個迴圈裡被除成了0,無法賦值給下一個number,導致下一個迴圈時無法進行正常的條件判斷。
- 解決辦法:之後我用了另一個數power來代替number,剛開始在第二個迴圈前加上power=number但是函數沒有傳回值,後來在第一個迴圈前也加上這句指派陳述式後就輸出正確了。
二、同學代碼結對互評1.同學互評照片。2.My Code、互評同學代碼(此處核心代碼就好,不一定全部代碼,圖上指明是誰的代碼。)3.我和同學代碼不同在哪裡?有哪些各自優勢?你更喜歡哪種代碼風格?如果同學代碼有錯的也請幫忙指出來哪裡出問題。三、本周題目集的PTA最後排名。
四、本周學習總結1.你學會了什嗎?1.1 C語言哪些資料類型?
- 整型int,短整型short[int],長整型long[int],無符號整型unsigned[int],無符號短整型unsigned short [int],無符號長整型unsigned long [int],字元型char,單精確度浮點型float,雙精確度浮點型double。
1.2 字元型資料需要注意地方?
- 1.整型變數和字元型變數的定義和值都可以相互交換。
- 2.‘a‘與‘A‘是不同字元型常量,’0‘與0是不同類型常量。
- 3.逸出字元如 \n ,\,等雖然形式上有多個字元組成但是它只代表一個字元,它的使用方法與其他字元型常量相同。
1.3 自增自減運算子?
- 1.n++,++n,n--,--n都可以讓n加1或者減1
- 2.++n與n++,的運算順序不一樣,++n是先執行n=n+1,然後將n的值作為運算式++n的值。n++是先將n的值作為運算式n++的值,再執行n=n+1。
- 3.自增運算子和自減運算子的對象都只能是變數,不能是常量或者運算式。
1.4 運算子優先順序?
- 1.運算子優先順序不同執行順序不同,優先順序越高越先執行。
- 2.運算子優先順序大致可分為初等運算子,單目運算子,算術運算子,移位元運算符,關係運算子,位邏輯運算子,邏輯運算子,三目運算子。
- 3.運算時要注意運算子的結合方向是從左至右還是從右至左。
1.5 C語言哪些運算式?課堂派哪裡做錯,做錯的請在這裡分析原因?
- 運算式有算術運算式,賦值運算式,關聯運算式,邏輯運算式,條件運算式,逗號運算式。
- 課堂派上有一題(j=3;j++)那個時候預習不仔細,不知道j++與++j不相同所以就以為輸出j的值是4,現在明白了。a+= a-= a*a 這題也是,不知道運算子還有執行順序,後來用devc運行出了答案,可是不知道答案到底是怎麼來的,上課老師講解之後就明白了。
1.6 其他內容?
- 以前將一個負數轉為正數都是用if(number<0) number=-number。現在學會了另一種方式:a=number<0?-m:m。也可以實現負數轉化為正數。
2.本周的內容,你還不會什嗎?
- 1.我一直覺得很奇怪,明明有記得函數裡的值只能返回,並且每次都只能返回一個值,不可以輸出,可是為什麼水仙花數那題第二個列印某區間內所有水仙花數那個函數不可以用return返回而需要printf輸出?
- 2.n++和++n,到底是誰可以將累加的值賦給運算式,一直弄混。
-
- 400~499 中4出現的次數那題中為什麼x=x/10在count++的前面時程式會直接跳過x=x/10,到現在我也不是很懂。
3.迴圈結構考試總結(全部同學都要寫)1.哪題做錯了,怎麼改?
1.輸出交錯序列,這是做過的一道題可是我也沒有寫出來,其中有一條語句是要計算第i項的值,正確語句應該是x=flag*i/demoner,可是我當時就覺得應該用x=flag-i/demoner,之後調試的時候知道了是這條語句有錯誤,可是不知道要怎麼改,因為當時我並不知道這條語句是要計算第i項的值,之後我總結了一下我之前寫這道題目時並沒有完全理解整個程式的結構,哪個語句為什麼要用上也不是很清楚,反正就仿照書上的程式改一下,並沒有真的懂了這道題。輸出三角形字元陣列這道題,就是作業當中菱型數那題相似卻比那題簡單,這個我也知道,但是當時那題我完全沒有思路,後來老師講解的時候也沒怎麼聽懂,所以就一直放著沒有去調,所以考試時那個空格還有每行要輸出多少個數我根本就一點都不清楚。後來回去調試知道了控制每行輸出幾個可以用迴圈條件n-i+1實現,這題的輸出空格只要在%d後面直接加個空格就好。
2.考試結果滿意麼,怎麼改進?
不滿意,這次考的比上次更差,經過這次考試,以後不管是課本上的還是pta上的程式,我一定盡量將它們弄清楚,不可以因為自己在pta上對了,或者覺得課本例題一看就懂就不去深究,自己覺得很難的題目也要試著去調試,不能因為難就不管了,就一直放著。
3.其他總結。
這一次沒有像上次一樣一直糾結於一道題,但是後面的題目,,,,,我依然不會做。以後還是要多做一點題目,但是首先要先把課本上的題目研究透徹。
C語言部落格作業--函數