作業要求(博客鏈接):https://edu.cnblogs.com/campus/hljkj/Cprogramming_2018Autumn_CST2018_4/homework/2502
PTA作業情況:
一、計算機18秋-函數 6-1 統計個位數字
[1] 實驗代碼
int Count_Digit( const int N, const int D ) { int count,yushu,i; i=N; count = 0; if(i<0) { i = -i; } do { yushu=i%10; if(yushu==D) { count++; } i/=10; }while(i>0); return count; }
[2] 設計思路
(1)文字描述
第一步:定義這個數的余數yushu,定義替換N的數i,定義D出現的次數count。
第二步:先判斷i是否為正數,若是則繼續,若否則先轉換為其相反數。
第三步:從個位到最高位依次判斷各位次上的數是否等於D。
(2)流程圖
[3] 運行結果
(1)結果截圖
(2)調試截圖
(3)遇到問題及解決辦法
本題運用了調用函數的方法。
開始時不清楚如何將每個位置上的數與D進行對比。看到題后應先理清思路,應思考如何遍歷每個位置上的數,並判斷是否與D相等。方法:應將一個數字除盡10,得到余數與D進行比較,再將這個數除以10,如此循環來進行比較。
二、計算機18秋-數組1 7-4 求一組數中的最大值和次大值
[1] 實驗代碼
#include<stdio.h> #define N 10 int main() { int a[N]; int i,max,cmax; for(i=0;i<N;i++) { scanf("%d",&a[i]); } max=a[0]; cmax=0; for(i=0;i<N;i++) { if(a[i]>max) { max=a[i]; } } for(i=0;i<N;i++) { if(a[i]>cmax && a[i]<max) { cmax=a[i]; } } printf("max=%d,cmax=%d",max,cmax); return 0; }
[2] 設計思路
(1)文字描述
第一步:定義變量i,最大值max=0,次大值cmax=0。
第二步:依次輸入十個元素,令max=數組中第一個數,令cmax=0,遍歷數組,找出最大值。
第三步:再次遍歷數組找出次最大值。
(2)流程圖
[3] 運行結果
(1)結果截圖
(2)調試結果
(3)運行問題及解決方法
本題最應注意cmax的值如何判斷,一定要滿足在數組元素中除max值以外,cmax為最大的值。
三、計算機18秋-數組2 7-4 選擇法排序
[1] 實驗代碼
#include<stdio.h> #define N 10 int main(void) { int a[N]; int i,k,j,temp; for(i=0;i<N;i++) { scanf("%d",&a[i]); } for(i=0;i<3;i++) { k=i; for(j=i+1;j<N-1;j++) { if(a[j]<a[k]) { k=j; } } if(k!=i) temp=a[k]; a[k]=a[i]; a[i]=temp; } } for(i=0;i<N;i++) { printf(" %d",a[i]); } }
[2] 設計思路
(1)文字描述
第一步:定義變量i,k,j,temp。將元素依次輸入到數組中。
第二步:創建外循環和內循環,將其元素進行比較,將外循環設成只循環三次(因為題內要求排序只排三輪)。
第三步:比較完畢后輸出數組。
(2)流程圖
[3] 運行結果
(1)結果截圖
(2)調試結果
(3)遇到的問題及解決方法
做題前應仔細理解選擇法排序的意義 及題的要求。
剛開始沒理解題的要求,導致我一直認為是把輸入的數從小到大全部排列。
應理解內外循環比較的過程,根據題意,外循環的循環次數應為三次。
四、個人總結
(1)這幾周進一步學習了函數及數組,講解了內存的一些概念,應用了調用函數這個方法。
通過做PTA和看書,更加深入地理解了數組的應用和意義。
(2)我覺得內存知識的理解為較難的地方,數組的應用也不是非常熟練。解決問題最好的方法就是去實踐,內存的概念應該用調試及觀測地址一點一點去理解,對於提高應用數組的熟練度應多刷題,進行耐心的思考和調試。
五、互評和學習進度
(1)點評
(2)學習進度
表格:
周數 | 此周代碼行數/行 | 碼代碼所用時長/h | 寫博客字數/字 | 寫博客所用時長/h | 所涉及的知識點 |
第十三周 | 2000 | 8 | 0 | 0 | 函數的應用、內存的理解 |
第十四周 | 1800 | 6 | 0 | 0 | 函數的應用、數組的應用 |
第十五周 | 1900 | 6 | 0 | 0 | 數組的應用 |
第十六周 | 2400 | 12 | 1200 | 6 | 數組的應用 |
折線圖: