這個作業屬於那個課程 |
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的難度、行數也在逐漸提高,代表着我需要更加努力!
