第四次隨筆作業
阿新 • • 發佈:2018-12-25
預習作業
作業要求:
https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523
PTA作業:
7-1 找出不是兩個陣列共有的元素 (20 分)
給定兩個整型陣列,本題要求找出不是兩者共有的元素。
程式碼:
1 #include<stdio.h> 2 int num3[20], j = 0;//定義陣列記錄符合的數 3 void zhaobutong(int num1[], int n1, int num2[], int n2) 4 { 5 int i, flag, i1; 6 for(i = 0, flag = 0; i < n1; i++)//迴圈第一個陣列的每位數 7 { 8 for(i1 = 0; i1 < n2; i1++)//迴圈第二個陣列的每位數 9 { 10 if(num1[i] == num2[i1])//比較第一二個數組的每位數 11 { 12 flag = 1; 13 break; 14 } 15 } 16 if(flag == 0) 17 { 18 for(i1 = 0; i1 < j; i1++) 19 { 20 if(num3[i1] == num1[i])//比較是否已經記錄了這個數 21 { 22 flag = 1;l 23 } 24 } 25 } 26 if(flag == 0)//如果符合以上條件存入陣列三 27 { 28 num3[j] = num1[i]; 29j++; 30 } 31 flag = 0; 32 } 33 } 34 int main() 35 { 36 int num1[20], num2[20], i, i1 = 0; 37 int n1, n2; 38 scanf("%d", &n1);//輸入第一個陣列長度 39 for(i = 0; i < n1; i++)//輸入第一個陣列的數 40 { 41 scanf("%d", &num1[i]); 42 } 43 scanf("%d", &n2);//輸入第二個陣列長度 44 for(i = 0; i < n2; i++)//輸入第二個陣列的數 45 { 46 scanf("%d", &num2[i]); 47 } 48 zhaobutong(&num1, n1, &num2, n2);//比較第一個陣列與第二個陣列中不相同的數 49 zhaobutong(&num2, n2, &num1, n1);//比較第二個陣列與第一個陣列中不相同的數 50 for(i = 0; i < j; i++)//輸出陣列三的數 51 { 52 if(i == j - 1) 53 { 54 printf("%d", num3[i]); 55 } 56 else 57 { 58 printf("%d ", num3[i]); 59 } 60 } 61 }
流程圖:
除錯過程:
______________________________________________________________________________________________________________________________
7-3 冒泡法排序 (20 分)
將N個整數按從小到大排序的氣泡排序法是這樣工作的:從頭到尾比較相鄰兩個元素,如果前面的元素大於其緊隨的後面元素,則交換它們。通過一遍掃描,則最後一個元素必定是最大的元素。然後用同樣的方法對前N−1個元素進行第二遍掃描。依此類推,最後只需處理兩個元素,就完成了對N個數的排序。
本題要求對任意給定的K(<N),輸出掃描完第K遍後的中間結果數列。
程式碼:
1 #include<stdio.h> 2 void exchange(int *num1, int *num2)//函式交換所要交換的內容 3 { 4 int exchange; 5 exchange = *num1; 6 *num1 = *num2; 7 *num2 = exchange; 8 } 9 int main() 10 { 11 static int num[100]; 12 int k, n, i, j; 13 scanf("%d %d", &n, &k);//輸入所輸陣列長度與冒泡次數 14 for(i = 0; i < n; i++)//輸入陣列內容 15 { 16 scanf("%d", &num[i]); 17 } 18 for(i = 0; i < k; i++)//迴圈多少次 19 { 20 for(j = 0;j < n - i - 1 && n != 1; j++)//每次冒泡迴圈次數 21 { 22 if(num[j] > num[j + 1])//比較前後兩數大小 23 { 24 exchange(&num[j], &num[j + 1]);//符合的交換其值 25 } 26 } 27 } 28 for(i = 0; i < n; i++) 29 { 30 if(i == n - 1) 31 { 32 printf("%d", num[i]); 33 } 34 else 35 { 36 printf("%d ", num[i]); 37 } 38 } 39 40 }
流程圖:
除錯過程:
二、總結和學習進度條
這幾周對指標有更深的學習,發現數組就是個特殊的指標常量,還要繼續熟悉c語言基礎
互評:
https://www.cnblogs.com/1a2B3c4D/p/10160490.html
https://www.cnblogs.com/asdwadsxc/p/10170543.html
https://www.cnblogs.com/error203/p/10160025.html