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提交列表及说明
提交列表说明: