這個作業屬於哪個課程 | https://edu.cnblogs.com/campus/zswxy/CST2020-2 |
---|---|
這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2020-2/homework/11589 |
這個作業的目標 | 熟悉使用while和do-while結構解決問題 |
學號 | 20208965 |
1.PTA實驗作業(20分/題)
1.1 題目名1求整數的位數及各位數字之和 (15分)
對於給定的正整數N,求它的位數及其各位數字之和。
輸入格式:
輸入在一行中給出一個不超過10
9
的正整數N。
輸出格式:
在一行中輸出N的位數及其各位數字之和,中間用一個空格隔開。
1.1.1數據處理
數據表達:本題變量為N,w,sum;其中N通過輸入得到,w,sum通過計算式得到;都定義為整型。
數據處理:運用了do-while循環語句,表達式為:
int N,w,sum;
do{
sum=sum+N%10;
N=N/10;
w++;
}while(N>0);
偽代碼如下:
首先定義變量N,w,sum
w,sum的初始值都為0
運用do-while循環語句執行
do{
scanf("%d",&N);
求各位數字之和 sum=sum+N%10;
令數位少一 N=N/10;
求各整數的位數 w++;
}while(N>0);
執行循環體后判斷條件是否成立。
1.1.2實驗代碼截圖
1.1.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
0 | 0 0 | 數字0非正整數 |
966 | 321 | 三位數,各位數字之和為21 |
7456 | 421 | 四位數,各位數字之和為21 |
66800 | 520 | 五位數,各位數字之和為20 |
1.1.4 PTA提交列表及說明
格式錯誤:printf("%d %d",x,z);題目說中間需要空格,我忘記打了。
編譯錯誤:測試時提示while有錯誤。
解決方式:do-while語句中while條件后要加上分號,后改正。
1.2 題目2 購物(二)
用戶購買了若干個商品(商品數不超過10),現在,他告訴你每件商品的價格,你計算出這些商品的平均價格。
輸入格式:
若干個以空格間隔的實數(每個數不超過100000),以-1作為輸入結束的標志。
輸出格式:
一個實數,表示商品的平均價格,精確到小數點后兩位。
1.2.1 數據處理
**數據表達**:x,y,z,a為雙浮點型,x輸入賦值,y,z,a初始化。
**數據處理**:表達式:z<-z+x;a<-z/y;
流程結構:while語句,if-else語句。
1.2.2 實驗代碼截圖
1.2.3 造測試數據
輸入數據 | 輸出數據 | 說明 |
---|---|---|
890.78 2769.8 12300 3532.2 -1 | 4873.19 | 這些商品的平均價格 |
0 -1 | 0.00 | 商品數為0 |
1.2.4 PTA提交列表及說明
部分正確:開始把if語句放在while語句中,導致商品數為極端值時出錯誤。
部分正確:一開始將s=s+p的位置和第二個scanf的位置弄反了,改正后正確。
2.代碼互評(5分)
同學代碼截圖
自己代碼截圖
1.該同學在數雞蛋一題中用了while循環,而我用的是for循環。
2.在數雞蛋那一題中用while循環會比較簡潔一點。
3.在購物一題中我們雖然都用的while循環,但是定義的字符不一樣,該同學一看就知道字母表達的是什么,我的比較簡單。
4.在購物一題中同學的代碼比我的要復雜一些,我們在一些細節的處理上存在區別。
3.學習總結(15分)
3.1 學習進度條(5分)
3.2 累積代碼行和博客字數(5分)
3.3 學習內容總結和感悟(5分)
3.3.1 學習內容總結
3.3.2 學習體會
1.學的東西越來越多,寫的題也變難了,學的東西越來越多,寫的題也變難了。
2.之前容易出錯的細節都不會錯的,但又出現了別的細節錯誤。
3.本周的PTA作業比之前的都要難,寫的就很慢,問題也多,痛並快樂着,為自己加油!