C语言博客作业04——数组

喜欢而已 提交于 2019-12-04 18:58:53

0.展示PTA总分

1.本章学习总结

1.1 学习内容总结

  • 数组中查找数据:
    利用下标 循环查找:比如a[5]={1,2,3,4,5}中找到3这个数字
for(i=0;i<5;i++)
if(a[i]==3)
index=i;//于是记下3所在数组的下标,则a[index]就是所要找的数了
  • 数组中插入数据:
    伪代码(比如一个a[10]={1,2,3,4,5,7,8,9,10}中插入一个数x=6,按从小到大顺序):
int i;
从左到右查找第一个比6大的数,记下它的下标index;
for(i=9;i>index;i--)
{
    a[i]=a[i-1];
}
a[index]=x;

做法:利用for循环从后面往前面赋值,最后在a[index]的位置赋予x的值,实现数组数据的插入。

  • 数组中删除数据:
  • 比如有一个a[5]={1,2,3,4,5},要在数组中删除3这个数据
    1、伪代码(利用循环):
for(i=0;i<5;i++)
if(a[i]==3)//找出3所在数组的下标
index=i;//记下下标
for(i=index;i<4;i++)
{
    a[i]=a[i+1];
}//使a[index]赋值为下一位,然后执行循环使下一位赋值为下下一位;从而删除3这个数据,保留其他数据的数字的顺序
for(i=0;i<4;i++)
printf("%d"a[i]);
//在使用数组的时候,由于删除了一位数字,所以重新输出或者使用的时候,记得减少数组的一个长度,所以有i<4而不是i<5

2、伪代码(利用另一个数组):

int i=0;j=0;
for(i=0;i<5;i++)
if(a[i]==3)//找出3所在数组的下标
index=i;//记下下标
while(j!=5)//这里如果数组长度为n,则将5改为n即可
{
    if(i!=index)b[i++]=a[j++];
    else {j++}
}

这样子就得到了删除3这个数字后剩余数字不变的数字b了,这种方法可以保留a这个数组,得到新的数组,不过比第一种方法麻烦一点,有时候会显得没必要。

  • 数组中目前学到排序方法
    这里举例子并注释说明(有一个数组a[n],其中的数据从小到大排列)
    1、冒泡法(把最大的沉下去):
    使用两层循环
for(i=1;i<n;i++)//外循环n-1次
{
    for(j=0;j<n-1-i;j++)
        {
            判断a[j]>a[j+1],是的话交换a[j]与a[j+1];
        }//内循环结束后,将有一个最大值“沉”到未排序的最下面
}

两层循环后即可得到有序的重构数组a[];
2、选择法(先选择最大的,然后按照顺序排下来):
这里也是要用到两层循环

for(i=1;i<n;i++)
{
    for(j=0;j<n-i;j++)
    {
        如果a[MaxIndex]<a[j];则交换Max与j; //历遍数组,找出最大的值所在下标
    }
    交换a[MaxIndex]与a[n-i]; //将最大的元素与(未排序)下标最大的数组元素交换
}

两层循环后即可得到有序的重构数组a[];

  • 数组做枚举用法:

  • 哈希数组用法:

1.2 本章学习体会

  • 学习感受:又过了2个周,突然觉得时间过得好快啊,从顺序结构到循环结构,再到函数,现在已经到了数组,学到的知识越来越多,但相对应的题目难道也越来越大了,自己也要更加的努力了。
    这两周以来学习了数组,数组有3大类,一个是一维数组,第二个是二维数组,还有一个三维数组,啊,不是,是字符数组,字符数组包括由简单的字符组成的数组,还有字符串数组

    2.PTA实验作业

    2.1 题目名1

    2.1.1 伪代码

    2.1.2 代码截图

    2.1.3 造测试数据

    2.1.4 PTA提交列表及说明

    提交列表说明:

2.2 题目名1

2.2.1 伪代码

2.2.2 代码截图

2.2.3 造测试数据

2.2.4 PTA提交列表及说明

提交列表说明:

2.3 题目名1

2.3.1 伪代码

2.3.2 代码截图

2.3.3 造测试数据

2.3.4 PTA提交列表及说明

提交列表说明:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!