1.本章學習總結
1.1思維導圖
1.2 本章學習體會及代碼量學習體會
1.2.1學習體會
本章內容較之前的學習的內容要難,在PTA的題目更多,思考量大,對邏輯思維能力的要求也更高,如果平時代碼量小了,到考試的時候真的會很生疏。在做作業的過程中,要注意記住一些解題的方法,這會在以后給自己省下很多時間,不會的就上百度查,然后記住。不然等到最后會發現時間花太多到最后還是做不好。還有,在寫代碼的時候,變量的命名要多留意,要起的有技術含量一點,並應該合理運用注釋。今后要盡量在自己的代碼中用上函數,讓代碼更加清晰。
1.2.2代碼累計
2.PTA總分
2.1截圖
2.2我的總分
335
3.PTA實驗作業
3.1PTA題目一
本題要求統計一個整型序列中出現次數最多的整數及其出現次數。
3.1.1算法分析
定義N與整形數組a
輸入數組a
for i=0 to N do
flag=m;
m=0;
for j=i to 0 do
if a[i]==a[j] then m++;
end if
if m>flag then
次數為m;
出現次數最多的整數num=a[i];
end if
輸出 num time;
3.1.2代碼截圖
3.1.3PTA提交列表及說明
-
Q1 剛開始是將輸入數字作為元素下標,輸入該數字時,相應的元素大小加一。最后比較元素大小。但是這種做法在pta中有個測試點一直過不去。怎么改范圍都不對。問了老師,說是范圍越界,這種方法應該不行。
-
A1 最后換了方法:計算每個數出現的次數,然后比較。最后對了。
3.2PTA題目二
一個矩陣元素的“鞍點”是指該位置上的元素值在該行上最大、在該列上最小。
本題要求編寫程序,求一個給定的n階方陣的鞍點。
3.2.1算法分析
定義 n,hang,lie
定義整形數組a
輸入n;
for i=0 to n-1 do
max=a[i][0]
for j=0 to n-1 do
if a[i][j] 大等於 max then
lie=j;
end if
min=a[0][lie];
for k=0 to n-1 do
if a[k][lie] 小等於 min then
hang=k;
end if
if min等於max then
輸出hang和lie,結束循環
if i>=n then 輸出NONE
end
3.2.2代碼截圖
3.2.3PTA提交列表及說明
-
Q1 第一次編寫的時候,把行的最大值和列的最小值分開求了。
-
A1 改為先求一行中的最大值,再在相應的列中找最小值。
-
Q2 循環的嵌套的兩個條件寫反了,把行和列搞反了。
-
A2 理清思路重新改了過來。
-
Q3 冒泡法的使用混亂。
-
A2 通過上網查詢弄清楚了。
3.3PTA題目三
輸入一個以#結束的字符串,本題要求濾去所有的非十六進制字符(不分大小寫),組成一個新的表示十六進制數字的字符串,然后將其轉換為十進制數后輸出。如果在第一個十六進制字符之前存在字符“-”,則代表該數是負數。
3.3.1算法分析
定義兩個字符數組str,a,定義geshi,flag
定義Decnum
gets(str)
geshu=strlen(str);
for i=0 to geshu-1 do
if str[i]是數字字符 || str[i]是大寫字母字符 || str[i]是小寫字母字符 then
a[j]=str[i];
j++;
end if
if j==0 且 str[i]等於'-' then flag=1;
for i=j-1 to i>=0 do
if a[i]是大寫字母字符 then Decnum=Decnum+(a[i]-55)*pow(16,j-1-i);
else if a[i] 是小寫字母字符 then Decnum=Decnum+(a[i]-87)*pow(16,j-1-i);
else Decnum=Decnum+(a[i]-'0')*pow(16,j-1-i);
if flag==1 then Decnum=(-1)*Decnum;
printf("%d",Decnum);
end
3.3.2代碼截圖
3.3.3PTA提交列表及說明
-
Q1 剛開始想這道題目的時候沒有頭緒,不知道怎么計算字符個數
-
A1 后來經提醒,知道了可以用strlen函數。
-
Q2 在小寫字符的轉化這塊卡了很久,一直不知道怎么會轉化錯誤。
-
A2 百度后了也找不到錯誤元因,后來把它前面的if語句改成else if再放到后面就行了。
4.代碼互評
4.1代碼截圖
- 同學
- 自己
4.2二者的異同
- 1.同學的思路是設定打印一圈為一個循環,循環次數是n/2+1,因為n為奇數個時,中間正好是鏤空,另行補充。我的思路是向左,向下打印和向右,向上打印交錯進行,循環次數剛好是N。
- 2.對方的代碼比我的簡潔很多,條理清晰,可讀性強。而自己的代碼在編輯的過程中容易出錯。
- 3.對方的代碼運行速度應該也比我的快。