第四次随笔作业

预习作业

 

关于数组的这章视频我都看了,除了看到了最基本的排序法,还看到了数组的搜索方法,另外,在做练习题的时候还学到了一些C语言的细节知识,比如sizeof(i++)并不会真的增加i的值,因为sizeof()函数只需要获取里面数据的数据类型就行了,并不会真的进行运算。对于这章看到的内容并没有太大的疑问。

要求一

以下是我们随笔作业要求的连接https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2523

要求二:

这道题是第十三次作业的第二题,题目为:本题要求编写程序,将输入的n个整数存入数组a中,然后计算这些数的平均值,再输出所有大于平均值的数。

下面是程序结果截图:

下面是这道题的流程图:

 

 

 此题十分典型的说明了数组的用处,这道题只能先通过保留这组数据然后在比较大小输出大于平均数的值,所以需要一个数组来保留数据。解题思路还是比较简单的,就不做说明。

此提是第十五次作业的第三题:

N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。

本题要求对任意给定的K(<N),输出扫描完第K遍后的中间结果数列。

下面是该题代码:

#include<stdio.h>
int main()
{
  int n,k,i,j,temp;
  scanf("%d %d",&n,&k);
  int a[n];
  for(i=0;i<n;i++)
  {
    scanf("%d",&a[i]);
  }
  for(i=0;i<k;i++)
  {
    for(j=0;j<n-1-i;j++)
    {
      if(a[j]>a[j+1])
      {
        temp = a[j];
        a[j] = a[j+1];
        a[j+1] = temp;
      }
    }
  }
  printf("%d",a[0]);
  for(i=1;i<n;i++)
  {
    printf(" %d",a[i]);
  }
  return 0;
}

下面是程序结果测试图:

下面是流程图:

冒泡排序法大致思想就是,让相邻两个数比较,根据自己需求进行交换,如果想要最后一位是最大值,就是大的数交换到后面,然后从第一个开始一直到n-1个数判断交换过后,最后一位就可以确定,然后再从第一个数开始到第n-2个数进行判断交换,倒数第二个数就会确定下来,以此类推,冒泡排序法也是十分典型的排序方法。

要求三:

学到了数组也就刚刚开始接触到了指针和数据结构,数组名实质上是一个存储地址的指针,而数组本身是一块确定大小的连续的内存空间,用来存储相同类型数据的容器。这几天在做东西,所以没有学到太多新知识。

要求四:

浦荣成:https://www.cnblogs.com/abcefg123/p/10161739.html

李傲:https://www.cnblogs.com/1a2B3c4D/p/10160490.html

张春宇:https://www.cnblogs.com/zcybky/p/10152047.html

posted on 2018-12-25 10:57  张博张博  阅读(353)  评论(1编辑  收藏  举报

导航