0.展示PTA总分
1.本章学习总结
1.1 学习内容总结
- 数组中如何查找数据,有哪些做法
1.首先,定义数组,并对数组元素进行赋值
2.输入位置值,输出相应的元素值(先判断位置是否合法,不合法,则输出位置错误,请重新输入:位置合法,则把位置值转为数组下标,通过下标来确定数据,进行输出,如:第一个元素的下标为0,第二个为1等等
3.输入一个数值,输出相应的下标循环遍历数组,检查数组中的各位数据是否与待查数值相等(如果相等,则提前结束循环:break;否则,继续循环,检查下一个数)
4.遍历完所有数组元素后,结束循环循环结束后,检查循环变量值是否超过数组元素总数,如果未超过,表示找到了相应数据,输出其下标位置,否则,输出未找到相应元素。
- 数组中如何插入数据,怎么做,可以写个伪代码或动态图展示方法
1.输入一个数据x,将数组中的数据与x逐一比较,如果大于x,记录下数据的下标,然后此数据下标和其后的数据的下标都加一,相当于都向后挪一位,然后将x赋值给数组的那个下标;
2.改段代码是从PTA题目上的一维数组来的,改题则就是简化的插入排序的题目
这个就很好的理解这个插入数据的意思了。
- 数组中如何删除数据,这个有多种做法.
1.数组删除想到了如下:
2.改段代码是从PTA上的题目集
-
数组中目前学到排序方法,主要思路?
1.冒泡排序法
2.选择排序法
- 数组做枚举用法,有哪些案例?
枚举变量用法中是默认第一个变量的数值为0,之后的变量依次累加。所以枚举的方式可以表达数组的下标。
二维数组的PTA还不太熟,就从一维数组看了一下.
- 哈希数组用法,目前学过哪些案例,举例展示。
哈希数组不太懂是什么,就从PTA找了一个,哈希数组没有怎么听到过.
1.2 本章学习体会
- 学习数组的时候,到现在也停留在一维数组的懵懂上面,在二维数组和字符数组还是很不熟悉,在昨天的PTA数组上机考试中,一维数组的题目都差不多有写,而二维数组的只是部分得分,在字符数组那里连思路都没有;本章学习的话,感觉数组还没有懂就已经进入到了指针的魔爪中,听老师说指针是C语言的灵魂,所以也是很紧张的。我感觉老师的上课方式是很好的,互动的时间不仅可以了解同学们的听课效率,还可以让那些走神的或者是没有跟上节奏的同学们迅速调整回来;老师知道我的上课效率比较低,就是下课后就不知道怎么做了,所以老师也经常提问我,这样能提高的自己的警惕性。所以关于数组就是要多刷代码,林老师说的就是没错,只有代码刷的够多,才能做对。
- 计算这两周代码量,是否达到目标。
从代码量上面看,字符数组的题目还没有深刻的进行理解,一维数组刚学的完,所以这周代码量目标没有达到,希望在下一周的时间补回来。
2.PTA实验作业
2.1 数组循环左移
2.1.1 伪代码
- 定义整形变量m,n,i,j;
- 定义数组a[100];
- 输入题目数值n m;
- for(i的循环到i<n累加)
{
输入a[i];
}
- for(i的循环到i<m累加)
{
定义temp为a[0];
for(i的循环到i<n-1累加)
a[j]=a[j+1];/*数组左移*/
a[n-1]=temp;
}
- for (i = 0; i < n; i++)
if (i)
printf(" ");
printf("%d", a[i]);
2.1.2 代码截图
2.1.3 造测试数据
2.1.4 PTA提交列表及说明
1.格式错误
这个格式错误,是因为答案的格式与测试数据的格式不同,主要原因就是空格的存在与否。
解决方式:
用VS测试了好几次,看着都对,可是就是弄不出来,后来就加了这个,以来防止最后一个也打出空格。
2.格式错误
这个题目主要是格式的问题,难度不是很大,在VS上面直接调试到成功。
2.2二维数组每列排序
2.2.1伪代码
- 定义二维数组a[4][5],i,j,temp,k;
- 进行两重循环输出a[i][j];
- for (i = 0; i < 5; i++)
for (k = 0; k < 3; k++)
for (j = 0; j < 3 - k; j++)
if(前面的数比后面的大)
{
就将两个数进行交换;
}
- 最后运用双重循环将a[i][j]输出
- 最后得到结果
2.2.2 代码截图
2.2.3 造测试数据
2.2.4 PTA提交列表及说明
- 格式错误,这个错误一直都是很小的错误,就是刚开始在VS做的时候看就对了,但是忘了把数字前面的三个空格加进去.
改正:后来直接用%4d的方法写就可以了. - 这个题目林老师在PTA上机课上有讲过了,所以错误比较少.
2.3 查电视节目受欢迎程度
2.3.1伪代码
- 定义n;以及数组a,定义i,j;
- 并且定义并初始化n1到n9值为0;
- 输入n;
- for (i = 0; i < n; i++)
每次循环都输入一次a[i];
switch(a[i])
{
case 1:
n1++; break;
case 2:
n2++; break;
case 3:
n3++; break;
case 4:
n4++; break;
case 5:
n5++; break;
case 6:
n6++; break;
case 7:
n7++; break;
case 8:
n8++; break;
}
- 最后输出:
printf(" 1%4d
", n1);
printf(" 2%4d
", n2);
printf(" 3%4d
", n3);
printf(" 4%4d
", n4);
printf(" 5%4d
", n5);
printf(" 6%4d
", n6);
printf(" 7%4d
", n7);
printf(" 8%4d
", n8);
}
2.3.2 代码截图
2.3.3 造测试数据
2.3.4 PTA提交列表及说明
- 1.部分正确:是因为答案在n1到n9的循环中出现了错误,n7的计算弄成了n7--,所以导致计算错误,所以部分正确
改正就是改成n7++; - 2.编译错误:就是在第一个错误要改正的时候,由n7--改成n7++是不小心把逗号删除掉了
- 3.编译错误:接上一个,在添加逗号时,没有换成英文的逗号,所以出现了错误;
3.阅读代码
- 首先改段代码在定义也是一样的,先定义a[20]a[20];然后接受字符getchar();
这一块对字符串的应用可以好好吸收,因为我字符串还是比较弱的- 该代码好好地利用了index的定义来应用于题目的解题
- 这段代码其实并不是很长,他将所有的条件全部放在一个while的循环里面,再用if-else的语句进行分类来解题,思路一看就很清晰,非常的让人容易理解。