1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
- 本章学习了数组,学习了如何定义数组,数组的输入与输出,以及一维数组和二维数组和字符串数组的运用等。
- 定义数组时后其中的所有元素会被的随机赋值,可以加上static将其中的所有元素初始化为0。
- 运用数组时要注意数组下标不能越界,越界了程序会崩溃。
- 在解答特定的问题时可以再定义一个数组,以空间换取时间。
- 数组题型和之前题目比较难度明显提升,写代码耗时也就更长,这时候有没有思路就显得很重要,写代码之前最好先写伪代码再编程,不然会耗费很多时间还写不出来。
- 在写字符数组代码过程中,不能确定字符数组的长度。可以用strlen函数就解决了
1.2.2 代码累计
2.PTA总分
2.1截图PTA三次题目集:一维数组、二维数组和字符数组共3次题目集的排名得分
2.2 我的总分:
3.PTA实验作业
3.1 PTA题目1
- 给定两个整型数组,本题要求找出不是两者共有的元素。
3.1.1 算法分析
int N,M,i,j,k;
static int flag[41]//定义一个数组用来判断数组是否重复
int lenc
for i=0 to N 输入num1[i] end for
for j=0 to M 输入num2[j] end for
lenc=N+M//两个数组的长度
int num[lenc]//储存两个数组
//对数组进行连接
for i=0 to N num[i]=num1[i] end for
for j=0 to M num[N+i]=num2[i] end for
for i=0 to lenc
for j=i+1 to lenc
if num[i]==num[j]&&i<N&&j>=N then flag[j]=1 flag[i]=1
if num[i]==num[j]&&j<N then flag[j]=1
if num[i]==num[j]&&i>=N then flag[i]=1
输出num[i]
3.1.2 代码截图
3.1.3 PTA提交列表及说明
- Q1:一开始定义flag数组的时候只定义长度为40,结果出错。
- A1:后来发现定义长度要多一点才可以通过,改成41就过了。
- Q2:一直找不到比较好的方法解此题,试了很多种方法,也错了很多次。
- A2:后来使用老师讲的将两个数组结合起来进行比较,就过了。
3.2 PTA题目2
- 一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。本题要求编写程序,求一个给定的n阶方阵的鞍点。
3.2.1 算法分析
int n,i,j,k
int index1,index2;//定义储存行下标和列下表
int flag=0对输出进行控制
循环输入num[i][j]
for i=0 to n
index1=index2=0
for j=0 to n
if num[i][j]>=num[i][index2] then index2=j //记下最大值的列下标 end for
for k=0 to n
if num[k][index2]<=num[index1][index2] then index1=k //在最大值那一列开始找列的最小值 end for
if index1==i then flag=1 break
end for
if flag==1 then printf ("%d %d",index1,index2)
else printf ("NONE")
3.2.2 代码截图
3.2.3 PTA提交列表及说明
- Q1:一开始忘了每次循环都需要给index1和index2重新赋值为0,进行每一次的计算。
- A1:后面在每次循环时加上index1=index2=0,结果正确。
- Q2:一开始一直找不出如何判断找到的元素是否满足题目的要求,试了好多次。
- A2:后面加上一个判断条件index1==i就正确了。
3.3 PTA题目3
- 本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
3.3.1 算法分析
int i,j,min,len=0,index=0
char temp用来交换元素
char str[81] //定义数组
gets(str) //输入数组
for i=0 to str[i]&&str[i]!='\n' len++ end for //得出输入的数组的长度
for i=0 to len
min=i
for j=i to len
if str[j]<=str[min] then min=j //对数组进行排序
end for
//交换元素
temp=str[i];
str[i]=str[min];
str[min]=temp;
//删除重复的元素并对数组进行新的赋值
if str[i]!=str[i-1] then str[index++]=str[i]
end for
str[index]='\0'
输出str
3.3.2 代码截图
3.3.3 PTA提交列表及说明
- Q1:一开始定义数组长度时只有80,结果出错。
- A1:后来改成81,结果就正确了。
- Q2:一开始又定义了个数组用来输出结果。
- A2:但是后来老师讲了可以重置数组,不用重新定义。
4.代码互评
4.1 代码截图
4.2 二者的不同
- 同学的代码时每行都是从头开始找的,也就是都是从下标0开始,这样会使计算的时间增加。
- 我的代码则是从第几个之后开始找的,也就是从下标i开始,这样会使计算的时间缩短,提高效率。
- 同学的代码找到符合的元素时并没有跳出循环而是继续找,这样做等于做无用功,只要找到了符合的元素就不会有别的元素符合了,可以直接跳出。
- 我的代码则是如果找到了符合的元素时,则跳出循环,不用做多余的无用功,效率更高。
|
请发表评论