作業要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523
預習作業:
1:我觀看了有關數組的四節視頻;
2:學習的主要是翁愷老師關於數組的講述以及他對尋找素數這道題的擴展;
3:疑問是a[2][3]這個是什么表達方式,還不太理解;
二:PTA作業
第一次作業:
【1】:代碼:
#include <stdio.h> int main(void) { int n; scanf("%d",&n); int i; int a[10]; for(i=0;i<n;i++) { scanf("%d",&a[i]); } /*for(i=0;i<n;i++) { printf("%d ",a[i]); }*/ int index_max=0; int index_min=0; for(i=1;i<n;i++) { if(a[index_max]<a[i]) { index_max=i; } } int num_last; num_last=a[n-1]; a[n-1]=a[index_max]; a[index_max]=num_last; int j; for(j=1;j<n;j++) { if(a[index_min]>a[j]) { index_min=j; } } //printf("%d %d\n",a[index_max],a[index_min]); int num_first; num_first=a[0]; a[0]=a[index_min]; a[index_min]=num_first; for(i=0;i<n;i++) { printf("%d ",a[i]); } return 0; }
【2】:解題思路
這道題是交換最小值與最大值,需要將最小值與第一個數交換,再將最大值與最后一個數進行交換,所以我們們第一步需要找到最小值與最大值。
思路:1:找到最小值
2:將最小值與第一位進行交換
3:找到最大值
4;將最大值與最后一位進行交換
【3】:流程圖
【4】:調試過程:
(1):錯誤;將交換最小值與最大值同時放在最后
發現解果是錯誤的
進行調試:
發現如果將交換程序放在后面,那么交換數值就不正確,經過向同學請發現需要將判斷語句分開放置。
正確結果:
第二次作業:
【1】:代碼
#include <stdio.h> int main(void) { int n,k; scanf("%d %d",&n,&k); int i; int a[n]; for(i=0;i<n;i++) { scanf("%d",&a[i]); } int j; int num; int l=1; for(j=1;j<=k;j++) { for(i=1;i<n;i++) { if(a[i-1]>a[i]) { num=a[i-1]; a[i-1]=a[i]; a[i]=num; } } } for(i=0;i<n;i++) { if(i<n-1) { printf("%d ",a[i]); } if(i==n-1) { printf("%d",a[i]); } } }
【2】:解題思路:
這道題是冒泡排序法,我們需要的就是將相鄰的兩個數進行比較,如果前面的數比后面的大,那么就進行交換,通過一遍遍地交換,使輸入的數據有序的排列/
(1):通過一個for循環嵌套,來比較前后兩個數的大小並進行交換
(2):輸出
【3】:流程圖
【4】:調試過程:
【5】運行結果:
三:個人總結
最近幾周學習的是有關數組的知識,從一開始的數組的定義,到后來的比較數組中數的大小,再到后來的對數組中的數進行排序,通過不斷的學習,學到的就是這些知識,讓我們對數組已經有了比較深刻的了解,為以后學習二維數組打好了基礎。
四:代碼字數,博客字數及點評
(1):柱狀圖:
(2):評價博客:
https://www.cnblogs.com/wangxiangbo/p/10165493.html