| 這個作業屬於那個課程 |
| 這個作業要求在哪里 |
| 我在這個課程的目標是 |
| 這個作業在那個具體方面幫助我實現目標 |
| 參考文獻 |

1.PTA實驗作業(20分/題)
從PTA題目集中選出2個你最滿意的題目完成以下內容,選擇題目難度越大,分值越高,每題20分(每項5分),內容要求如下:
1.1 題目名1
7-3 jmu-c-二進制轉10進制 (20 分)
輸入一組二進制字符,輸出其對應的十進制數。當輸入回車鍵時,輸入結束。若輸入非二進制字符,輸出error input!
輸入樣例1:
11111111
輸出樣例1:
255
輸入樣例2:
34
輸出樣例2:
error input!
1.1.1數據處理
#include<stdio.h>
int main(){
聲明變量用於計算進制 s = 0;
聲明字符 n;
死循環while(1){
輸入字符 n;
if(按下回車)
跳出循環;
else
if( 輸入字符為'1'、 '0')
s = s*2 + (n - '0');//計算二進制到十進制的公式
else
跳出循環;
}
if(按下回車)
輸出結果 s;
else
輸出"error input!";
return 0;
}
1.1.2實驗代碼截圖

1.1.3 造測試數據
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| -1 | error input! | 負值 |
| 1 | 1 | 1 |
| 11111111 | 255 | 題目所給 |
1.1.4 PTA提交列表及說明


部分正確:由於我一開始的解題方向就錯了,用的是沒有字符的方法,所以總有一個測試點沒過(但是代碼可以解決問題)
解決方法:改用字符
如果不用字符的解法如下(但題目要求字符,所以測試點有字符存在,因此會有一給測試點報錯):

1.2 題目2
7-6 整除光棍 (20 分)
這里所謂的“光棍”,並不是指單身汪啦~ 說的是全部由1組成的數字,比如1、11、111、1111等。傳說任何一個光棍都能被一個不以5結尾的奇數整除。比如,111111就可以被13整除。 現在,你的程序要讀入一個整數x,這個整數一定是奇數並且不以5結尾。然后,經過計算,輸出兩個數字:第一個數字s,表示x乘以s是一個光棍,第二個數字n是這個光棍的位數。這樣的解當然不是唯一的,題目要求你輸出最小的解。
提示:一個顯然的辦法是逐漸增加光棍的位數,直到可以整除x為止。但難點在於,s可能是個非常大的數 —— 比如,程序輸入31,那么就輸出3584229390681和15,因為31乘以3584229390681的結果是111111111111111,一共15個1。
輸入格式:
輸入在一行中給出一個不以5結尾的正奇數x(<1000)。
輸出格式:
在一行中輸出相應的最小的s和n,其間以1個空格分隔。
輸入樣例:
31
輸出樣例:
3584229390681 15
1.2.1 數據處理
#include<stdio.h>
int main()
{
聲明變量 x, s = 1, n = 1;
給x賦值
while (s < x)//為了使下面不在答案前輸出0
{
s = s * 10 + 1;
n++;
}
while(1)
{
if (s % x 整除了)
{
printf("%d", s / x);
break;
}
else
{
輸出s / x; //沒有上面的while (s < x)部分會出現因s < x而打印出0
s = s % x或s - x; //加不加while (s < x)部分雖然答案數值大小沒影響
s = s * 10 + 1; //但題目要求數值前面沒有0
n++(計數有幾根光棍);
}
}
輸出光棍個數 n;
return 0;
}
ps:送大家一張能豁然開朗的圖= ̄ω ̄=

1.2.2實驗代碼截圖

1.2.3 造測試數據
| 輸入數據 | 輸出數據 | 說明 |
|---|---|---|
| 31 | 3584229390681 15 | 題目所給 |
| 1 | 1 1 | x=1 |
| 111 | 1 3 | x為光棍 |
1.2.4 PTA提交列表及說明

部分正確:就如我上面數據處理說的一樣,我的答案前多輸出了0
編譯錯誤:改代碼時少打了個“;”
解決方法:加上我在數據處理中的while (s < x)部分即可
2.代碼互評(5分)
找2份同學代碼,和自己代碼比較,建議互評代碼盡量找代碼風格差異較大。
同學代碼截圖
同學1

同學2

自己代碼截圖

1.第一位同學用的是while循環加if else結構,並且設置了數組,但其實可以不用數組
2.第二位同學有兩個return 0;可以將兩種情況分開結束
3.我的代碼運用while(1)死循環,並將按回車作為跳出循環的條件
3.學習總結(15分)
3.1 學習進度條(5分)
| 周/日期 | 這周所花的時間 | 代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
|---|---|---|---|---|
| 第一周 | 2h | 72 | 輸出 | 對於輸出的符號還不熟 |
| 第二周 | 3.5h | 57 | 計算 | 算法陌生 |
| 第三周 | 3.5h | 81 | 分支結構 | 分支的邏輯理不清 |
| 第四周 | 1.5h | 180 | for循環,+= | 終止條件理不清 |
| 第五周 | 2h | 600 | 函數結構 | 對於算法的處理比較迷惑 |
| 第六周 | 2h | 1000 | 嵌套 | 對於嵌套的結構過多會解讀的很吃力 |
| 第七周 | 2h | 1246 | switch結構 | switch結構里的case最后若是不加break會怎么樣 |
| 第八周 | 3h | 1102 | while結構 | 字符的運用不熟 |
3.2 累積代碼行和博客字數(5分)

3.3 學習內容總結和感悟(5分)
3.3.1 學習內容總結

3.3.2 學習體會
這周我在寫pta上的感覺就是吃力,真的非常吃力,但也痛並快樂着吧,那種將一道道難題搞懂的感覺真的很不錯
但同時我也發現自己的思維不夠靈活,並且對於字符的運用還十分陌生,之后還需多加練習,不過我感覺我的偽代碼
寫的比之前好些了,我還會繼續加油的!(。・∀・)ノ
