第四次随笔作业

预习作业

作业要求:

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

 

posted @ 2018-12-25 17:11  麻油鸡  阅读(270)  评论(5编辑  收藏  举报