1.本章学习总结
1.1思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
在学习了数组之后,发现需要做的题目数量变多了,一个程序的代码量也增加了。随着c语言的学习越来越深入,题目的难度也越来越大,发现编程真的是个熟能生巧的东西,有时候几天没有编程,
可能对之前学习的技巧都有些生疏。在C语言中,我觉得数组的应用还是挺广泛的,大多数题目都可以用上数组。同时在这几周学习数组的过程中,也收获颇多,例如在对数组初始化时,并没有必
要使用循环来对数组一一初始化,而是可以定义数组时用static来对数组整体直接初始化,还有数组的几种输入方式,一是在定义的时候直接复制,二是用getchar、gets、fgets、scanf对数组进
行赋值,在学习字符数组的过程中也学会了一些函数的运用,例如strlen比较常用,但在用之前需加上头文件string.h。
1.2.2 代码累计
2.PTA总分
2.1截图PTA三次题目集:一维数组、二维数组和字符数组共3次题目集的排名得分
2.2 我的总分:
PTA总分:430
3.PTA实验作业
3.1 PTA题目1
本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥0)个位置
3.1.1 算法分析
输入数组个数和移动次数
输入数组
m=m%n //缩小移动的次数
for(i=m to n-1) then
依次输出数组第m+1到n的数
end for
for(i=0 to m-2) then
再依次输出数组第1到m个数
end for
3.1.2 代码截图
3.1.3 PTA提交列表及说明
Q1:当m大于n时m为n的倍数时错误
A1:所以添加了一个m=m%n来缩小m的范围,移动后的效果却是一样
Q2:输出时两个数之间每空格或句尾多空格
A2:定义了flag变量用来控制第一个不输出空格,后面的数输出空格
3.2PTA题目2
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小
3.2.1算法分析
int flag,flag1 //判断是否为鞍点和矩阵是否存在鞍点
输出二维数组
for(i=0 to n-1) then
for(j=0 to n-1) then
for(k=0 to n-1) then //遍历所在的行和列
判断是否为鞍点
end for
若是鞍点) 输出所在行和列
end for
end for
若不存在鞍点 输出NONE
3.2.2 代码截图
3.2.3 PTA提交列表及说明
Q1:不存在鞍点时却会输出存在鞍点的结果
A1:没有将在行上最小和列上最大的结果结合起来,结果导致只要是行上最小或列上最大就会判断这个点时鞍点
3.3 PTA题目3
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出
3.3.1 算法分析
输入字符数组 ch[]
int x=strlen(ch) //计算数组长度
for(i=0 to x-1) then
flag=0;
for(j=i+1 to x-1) then
若有重复字符
flag=1;break;
end for
if(flag==0) then
把不重复的字符存入一个新数组内
end for
for(i=1 to k-1) then
for(j=0 to k-i-1) then
冒泡法对新数组进行排序
end for
end for
输出删除重复数据的数组
3.3.2 代码截图
3.3.3 PTA提交列表及说明
Q1:输入带有空格时删除字符出现错误
A1:输入字符数组是用的是scanf语句,scanf输入的字符数组不能带空格,后来改成了getchar
4.代码互评
4.1 代码截图
我的代码
同学的代码