C語言I博客作業10


一.表格

這個作業屬於哪個課程 C語言程序設計II
這個作業要求在哪里 C語言I博客作業10
我在這個課程的目標是 把C語言學精,熟練掌握編程技術,努力找到簡單代碼的寫法
這個作業在哪個具體方面幫助我實現目標 PTA上做題,devc++慢慢掌握調試,加強對於循環語句for與if-else以及嵌套的理解與應用
參考文獻 百度百科其他同學作業,《C Primer Plus》,教科書,偽代碼的寫法

二.本周作業

1.PTA實驗作業

1.1梅森數

題目內容描述:形如2ⁿ−1的素數稱為梅森數(Mersenne Number)。例如2²​​−1=3、2​³−1=7都是梅森數。1722年,雙目失明的瑞士數學大師歐拉證明了2​³¹−1=2147483647是一個素數,堪稱當時世界上“已知最大素數”的一個記錄。本題要求編寫程序,對任一正整數n(n<20),輸出所有不超過2​ⁿ−1的梅森數。

輸入格式:

輸入在一行中給出正整數n(n<20)。

輸出格式:

按從小到大的順序輸出所有不超過2ⁿ-1的梅森數,每行一個。如果完全沒有,則輸出“None”。

輸入樣例:

6

輸出樣例:

3
7
31
1.1.1數據處理
  • 數據表達n,i,j,sum(變量);運算,賦值(怎么來);int(整型)
  • 數據處理
定義變量n來放正整數,i來放1——n之間所有數,j來放素數因子,sum來放梅森數。

輸入正整數
if(n==1)
判斷是否有梅森數。
沒有便輸出"None"
for(i=2;i<=n;i++)
    i賦值等於2進入循環;循環結束一輪后,若i小於等於n,i便在原來的基礎上+1,再次循環。
    sum=pow(2,i)-1;
    for(j=2;j<=sum/2;j++)
        素數因子不會超過本身的二分之一。
        if(sum%j==0)
        判斷是否為素數。
        不是便跳出循環。

     if(sum%j!=0)
     判斷是否為素數。
     是便輸出梅森數,並換行。

  程序結束。
1.1.2實驗代碼截圖

1.1.3造測試數據
輸入數據 輸出數據 說明
6 題目樣例
1 None 不符合題目給出條件
10 最小二位數
19 輸入給出最大數
1.1.4PTA提交列表及說明

題目說明:這個題目與以前作業求素數類似,我在Devc++上面寫,寫了幾分鍾就出來了。不過老是有錯誤,是我自己沒看題目,在最后加了換行說明,答案便對了。

1.2 同構數

題目內容描述:一個數恰好出現在它的平方數的右端,這個數就稱為同構數。找出1~1000之間的全部同構數。

輸出格式:

在一行中輸出所有滿足條件的同構數,每個數輸出占6列。沒有其它任何附加格式和字符。

輸出樣例:

      1    5    6    25    76    376    625
1.2.1數據處理
  • 數據表達i(變量)這題只需要用if-else嵌套就行,所以只需要設置一個變量;賦值(如何來);int(整型)
  • 數據處理
定義變量i來放1——1000所有正整數

for(i=1;i<=1000;i++)
   保證1到1000所有數進入循環
   if(i*i%10==i)
      判斷一位數是否為同構數
         空6列輸出同構數
   else
      if(i*i%100==i)
         判斷兩位數是否為同構數
           空6列輸出同構數
      else
         if(i*i%1000==i)
            判斷三位數是否為同構數
              空6列輸出同構數
        
  程序結束
1.2.2實驗代碼截圖

1.1.3造測試數據
輸入數據 輸出數據 說明
1 5 25 76 376 625 程序自動輸出
1.1.4PTA提交列表及說明

這個題為這次挑戰題,但仔細閱讀題目便知道,這和上次作業計算分數差不多。我在Dev上寫,每次都答案不對,再仔細看題目,原來還要輸出6列才行。加上了,答案便和題目樣例一模一樣。

2.代碼互評

2.1.1 同學代碼截圖①

2.1.2自己代碼截圖①

  • 我們的不同之處.
  • 這位同學和我思路差不多,只是我用的是if-else嵌套結構,他只用一個if-else然后包括所有條件即可輸出。
  • 他是把平方數定義為n,然后直接輸出,而我直接用一個變量i表示所有條件
  • 我應該有時候運用他這種總和條件的知識,看着很長,但有時候挺好用的。

2.2.1同學代碼截圖②

2.2.2自己代碼截圖②

  • 我們的不同之處.
  • 他的思路和我差不多,不過表達有些偏差。
  • 他用count計梅森數;我是直接當n輸入為1時,輸出None
  • 最后判斷素數方法有點不一樣,他for循環判斷j的最大值沒有除以2后面也用了一次;我是前面用了,后面判斷直接是否等於0。
  • 他的這種思維更加簡單,不過邏輯沒有我緊密

3.學習總結

3.1學習進度條

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較迷惑的問題
十/26/11-29/11 2天 110 對循環語句for,if-else加強理解以及對嵌套掌握更加熟練 還有點不清楚字符怎么用
九/19/11-22/11 3天 100 break語句,continue語句用法和區別 不太清楚字符怎么用
八/12/11-15/11 3天 120 while和do-while循環語句用法和概念 暫時沒有
七/5/11-8/11 3天 140 switch語句用法 如果x為浮點型,y,z為整型為什么x=y/z答案不對
六/28/10-2/11 3天 130 嵌套if-else語句,格式以及如何應用 不太清楚Devc++怎么調試
五/22/10-25/10 3天 100 用法如何定義函數,格式以及如何應用 暫時沒有
四/15/10- 18/10 3天 80 循環結構,流程圖,數學函數 數學公式的表達,為什么整數除以變量有一個要用括號括起來還要乘以1.0
三/9/10-13/10 3天 70 if-else,&&用法,字母%用法,數學函數 PTA每次答案錯誤,都十分難找出來。不得已重打

3.2累計代碼行和博客字數

3.3學習內容總結和感悟

3.3.1學習內容總結

3.3.2學習體會
  • 這周主要進行對上周作業的鞏固,以及分析同學的代碼。
  • 彭老師讓我們寫完代碼后,盡量想想有沒有更簡單代碼,也要盡量考慮時間復雜度,也就是代碼運行的時間。
  • 再過2周就要考試了,我得抓緊時間復習了,不懂的問題,我要虛心請教,不過也要用提問的智慧
  • 我覺得可以在實驗課的時候,彭老師能用實例再次教一下我們調試,,因為真的很多人不會。。


免責聲明!

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



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