C語言I博客作業08


問題 答案
這個作業屬於那個課程 C語言程序設計II
這個作業要求在哪里 C語言I博客作業08
我在這個課程的目標是 熟練掌握C語言
這個作業在哪個具體方面幫助我實現目標 學會並熟練掌握了while循環
參考文獻 Markdown基本語法

一.PTA實驗作業

1. 求整數的位數及各位數字之和

題目內容描述:對於給定的正整數N,求它的位數及其各位數字之和。

輸入格式:
 輸入在一行中給出一個不超過10的9次方的正整數N。

####### 輸出格式:

 在一行中輸出N的位數及其各位數字之和,中間用一個空格隔開。
輸入樣例:
 321
輸出樣例:
 3 6

(1)數據處理

 數據表達:
     用了整形變量R,N,i=0,sum=0
     N是用戶傳入的要求計算的數
     sum、i分別用來保存用戶要求輸出的正整數N的位數和用戶要求輸出的正整數N的各位數字之和
     R用來取余

數據處理:偽代碼

 定義變量N來放用戶傳入的要求計算的數,R用來取余,i用來保存用戶要求輸出的正整數N的位數並且對它初始化為0,sum用來保存用戶要求輸出的正整數N的各位數字之和並且對它初始化為0,
 輸入數N
     while(N>0)    
         取出N的最后一位數賦值給R 
         將去除N最后一位數后的數后賦值給N 
         計算N的位數賦值給i 
         將N的各位數字加起來賦值給sum
      end while 
     輸出題目要求的正整數N的位數和N的各位數字之和
 end 

(2)實驗代碼截圖

(3)造測試數據

輸入數據 輸出數據 說明
10001 5 2 數字中間有連續0
999999999 9 81 最大N
1 1 1 最小N
982 3 19 隨機實驗

(4)PTA提交列表及說明

提交列表說明

 1.編譯錯誤:從編譯器上復制粘貼的時候不知道出了啥問題導致編譯錯誤,第二次復制粘貼就對了。

2. 整除光棍

題目內容描述:這里所謂的“光棍”,並不是指單身汪啦~ 說的是全部由1組成的數字,比如1111111111等。傳說任何一個光棍都能被一個不以5結尾的奇數整除。比如,111111就可以被13整除。 現在,你的程序要讀入一個整數x,這個整數一定是奇數並且不以5結尾。然后,經過計算,輸出兩個數字:第一個數字s,表示x乘以s是一個光棍,第二個數字n是這個光棍的位數。這樣的解當然不是唯一的,題目要求你輸出最小的解。

提示:一個顯然的辦法是逐漸增加光棍的位數,直到可以整除x為止。但難點在於,s可能是個非常大的數 —— 比如,程序輸入31,那么就輸出358422939068115,因為31乘以3584229390681的結果是111111111111111,一共151

輸入格式:
 輸入在一行中給出一個不以5結尾的正奇數x(<1000)。
輸出格式:
 在一行中輸出相應的最小的s和n,其間以1個空格分隔。
輸入樣例:
  31
輸出樣例:
  3584229390681 15

(1)數據處理

 數據表達:用了變量x=0,s=1,n=0,i=0
     x為用戶要求輸入的值
     s用來儲存符合要求的最小光棍
     n用來儲存最小光棍的位數

數據表達:偽代碼

 定義變量x用來放用戶要求輸入的值,s用來儲存符合要求的最小光棍並且對它初始化為1,n用來儲存最小光棍的位數並且對它初始化為0 
 輸入題目要求的x 
     while(1)                 
	     if(s/x>0||i)    Then   輸出s/d        對i加上1后賦值給i                   
         if(s%x==0)      Then   輸出n+1        
         else            
                         對將s除以x的余數賦值給s
		                 對n加上1並賦值給n
     end whlie
 end		     

(2)實驗代碼截圖

(3)造測試數據

輸入數據 輸出數據 說明
999 111222333444555666777889 27 最大x
111 1 3 x是光棍
1 1 1 最小x

(4)PTA提交列表及說明

提交列表說明

 1.部分正確:因循環太多次超過了規定的0.40S時間限制,未做改動。
 2.部分正確:重新整理思路在while中加入一個if和一個if-else語句使循環次數減少

二.代碼互評

同學(彭傑)代碼:

同學(柏朝暉)代碼

自己代碼:

比較

 (1)第一份代碼用了數組而我只用了while語句,結構上該同學的更加整潔美觀,但我的更加簡單。
 (2)第二份的代碼有23行,而我的只有15行所用空間更少。
 (3)第二份用的for循環與if-else語句,而我只用了while循環,我的代碼更簡單,容易懂。

三.學習總結

1.學習進度條

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較迷惑的問題
第四周 7小時 100行 在屏幕上顯示Hello World! 暫無
第五周 8小時 100行 求華氏溫度對應的攝氏溫度 暫無
第六周 30小時 200行 如何用 MinGW-w64 來編譯C程序 暫無
第七周 24小時 300行 運用if語句完成各種數學程序 對於&&的用法不了解
第八周 24小時 300行 學會了for循環語句 暫無
第九周 24小時 300行 學會了如何去自定義一個函數 暫無
第十周 30小時 400行 學會了if-else語句的嵌入 對“(Y%100)這個表達式意味着當Y不能整除4時(Y%100的余數不等於0時)表達式為真”這句話不是很懂
第十一周 24小時 450行 學會了如何去使用switch語句來做編程題 暫無
第十二周 24小時 450行 學會了如何去使用while循環來做編程題 對字符型的輸入不太了解

2. 累積代碼行和博客字數

時間 博客字數 代碼行數
第四周 510 100
第五周 510 200
第六周 1149 400
第七周 2027 700
第八周 3791 1000
第九周 5294 1300
第十周 6900 1700
第十一周 8614 2150
第十二周 10495 2600

3 .學習內容總結和感悟

(1)學習內容總結

(2) 學習體會

這一次雖然PTA題目比上一次多了2題但是我還是很快的做完了,說明在慢慢的進步,雖然數學思維有點跟不上,但是我會繼續努力的。雖然這次博客園更新導致未能在8點前提交讓我心態有點炸了,但是我沒有產生反正已經加不了分了慢慢拖着做的想法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM