C語言I博客作業10


這個作業屬於那個課程 C語言程序設計II
這個作業要求在哪里 C語言I作業10
我在這個課程的目標是 熟練運用循環嵌套語句與if-else語句的結合
這個作業在那個具體方面幫助我實現目標 在PTA的練習中逐漸熟練語句用法,和對知識的自我總結上
參考文獻 集美大學林麗老師百度文庫、C語言程序設計

1.PTA實驗作業

1.1 題目名1

輸出三角形字符陣列

本題要求編寫程序,輸出n行由大寫字母A開始構成的三角形字符陣列。

輸入格式:
輸入在一行中給出一個正整數n(1≤n<7)。

輸出格式:
輸出n行由大寫字母A開始構成的三角形字符陣列。格式見輸出樣例,其中每個字母后面都有一個空格。

輸入樣例:
4
輸出樣例:
A B C D 
E F G 
H I 
J 
;

1.1.1數據處理

數據表達:
n代表輸入的數,i,j用於循環累加,都為整型變量;字符op用於輸入字符從字符A開始;
數據處理:


    int n,i,j;  定義n,i,j變量的類型
    char op='A';  定義字符,並賦值
    scanf("%d",&n);   輸入范圍
    for(i=1;i<=n;i++)   進入循環,直到i的值大於n時,停止循環
    {
        for(j=i;j<=n;j++)  進入循環,直到j的值大於n時,停止循環
        {
        printf("%c ",op);   每循環一次就輸出一次op
        op++;    op的累加
        }
        printf("\n");  循環完第二次循環后,輸出換行
    }
    return 0;  結束
}

1.1.2實驗代碼截圖

1.1.3 造測試數據

輸入數據 輸出數據 說明
3 輸入的是3,組成的是三行三列的三角形
5 輸入的是5,組成的為五行五列的三角形
7 輸入7,組成七行七列的三角型,不過字母不夠

1.1.4 PTA提交列表及說明

* 答案錯誤:換行的位置不對,通過調式,找到了錯誤並改正了
* 答案錯誤:循環的范圍不對,通過調試運行,找到了問題,並改正了

1.2題目名2

梅森數

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

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

輸出格式:
按從小到大的順序輸出所有不超過2^​n−1的梅森數,每行一個。如果完全沒有,則輸出“None”。

輸入樣例:
6
輸出樣例:
3
7
31

1.2.1數據處理

*數據表達*:
n,i用來統計循環次數,a代表輸入數,b用來判斷素數,num用來存放數據,它們都為整型變量
*數據處理*:
  int n,a,b=0,i=0,num=0,c=0;  定義變量
  scanf("%d",&a);  輸入a的值
  if(a==1)  如果a等於1
  printf("None"); 輸出None
  for(n=2;n<=a;n++)  進行循環,直到n大於a時為止
  {

    num=pow(2,n)-1;  計算num的值
    for(i=2;i<=num-1;i++)  對被除數進行循環
    {
     if(num%i==0)  如果num除以i沒有余數時
    {

     b=1;   b等於1
     break;  跳出循環
    }
    }
    if(b!=1)  如果b不等於1
    printf("%d\n",num);  輸出num的值
    b=0; 

    }
  return 0;  結束
}

1.2.2實驗代碼截圖

1.2.3 造測試數據

輸入數據 輸出數據 說明
7 在2^7-1內的素數只有3,7,31,127,8191
20 在2^20-1內的素數只有3,7,31,127,131071,524287
50 在2^50-1內的素數只有3,7,31,127,131071,524287,2147483647

1.2.4 PTA提交列表及說明

*編譯錯誤:忘記打分號,看錯誤提示發現並且改正了
*部分正確:沒討論a=1時的情況,看了錯誤信息發現的,然后添上這個情況就對了

1.3 題目名3

同構數

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

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

輸出樣例:
     1     5     6    25    76   376   625

1.3.1數據處理

*數據表達*:
n代表范圍,i用來判斷同構數,sum用來輸出1000以內的同構數,它們都是整型變量
*數據處理*:
int n=1000,i,sum;  定義n,i,sum變量的類型
    for(sum=1;sum<=n;sum++)   進行循環,直到sum大於n為止
    {
        i=sum*sum;   令i等於sum的平方
        if(sum==i%10||sum==i%100||sum==i%1000)  當sum的值滿足i除以10的余數為sum或者i除以100的余數為sum或者除以1000的余數為sum時
            printf("%6d",sum);   輸出sum
        }
        continue;  繼續循環
    }
    return 0;  結束


1.3.2實驗代碼截圖

1.3.3 造測試數據

輸入數據 輸出數據 說明
-------- 1 5 6 25 76 376 625 1000以內的同構數為1,5,6,25,76,376,625

1.3.4 PTA提交列表及說明

* 運行超時:輸出的數據打錯了,本該輸出sum不小心打成了i,問了同學后改正的
* 運行超時:將循環中的sum打成了i,通過devc++試調發現錯誤,並改正的

2.代碼互評

自己代碼


同學代碼:


* 該同學設置的變量與我的不一樣,並且變量比我的要多
* 該同學在使用for循環的同時,還使用了while循環
* 該同學在循環上比我簡單些,但是在內容上比我復雜很多

自己代碼

同學代碼

* 該同學定義的變量與我的不同,他剛開始定義的變量比我的少
* 該同學使用了自定義函數來判斷素數,而我用的常規方法,在for循環中判斷素數
* 該同學的代碼不需要單獨考慮輸入值等於1的情況,而我的需要單獨考慮

3.學習總結

3.1 學習進度條

周/日期 這周所花的時間 代碼行 學到的知識點簡介 目前比較困惑的問題
第六周 4天 20 用 MinGW-w64 來編譯C程序,學習編程計算溫度的轉化
第七周 3天 99 學習用if,else等語句編譯程序
第八周 2天 75 學習使用循環語句,用for來編譯程序
第九周 3天 94 學習各種使用函數eg:fact(i) for循環與while循環的區別
第十周 2天 213 學習使用多種分支結構 對分支結構中for循環有點迷糊不太能理解
第十一周 1天 135 學習使用switch語句
第十二周 1天 96 學習使用while語句
第十三周 1天 83 學習使用循環嵌套,continue語句 循環嵌套的順序
第十四周 1天 115 練習循環嵌套與if-else語句的結合 循環嵌套的順序

3.2 累積代碼行和博客字數

時間 博客字數 代碼行數
第四周 557 28
第六周 1437 20
第七周 1434 99
第八周 2367 75
第九周 2681 94
第十周 2741 113
第十一周 2772 135
第十二周 2874 96
第十三周 4398 77
第十四周 1898 115

3.3 學習內容總結和感悟

3.3.1 學習內容總結

3.3.2 學習體會

本周老師沒有上新課而是講了題目,在老師和同學講解題目的過程中,我漸漸的明白了一些我之前沒看得太懂的代碼,在本周的學習中我感覺循環這個問題有所深入。在PTA的不斷練習中逐漸熟悉,隨着PTA難度的增加,我們都可以發現以前覺得很難的題已經沒那么難了,因為我們時刻都在面臨新的題型,在不斷的充實自己的知識點的同時,提高了我們的解題能力。希望在以后的學習也能這樣得心應手。隨着PTA的難度、行數也在逐漸提高,代表着我需要更加努力!


免責聲明!

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



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