1. 程式人生 > >第四次隨筆作業

第四次隨筆作業

預習作業

作業要求:

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]; 29
j++; 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個整數按從小到大排序的氣泡排序法是這樣工作的:從頭到尾比較相鄰兩個元素,如果前面的元素大於其緊隨的後面元素,則交換它們。通過一遍掃描,則最後一個元素必定是最大的元素。然後用同樣的方法對前N1個元素進行第二遍掃描。依此類推,最後只需處理兩個元素,就完成了對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