C语言博客作业04--数组
1.本章学习总结
1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
- 数组这一部分的学习难度有所提升,并不同前面的学习一样可以慢慢地学,因为没有接触过数组对数组的一些用法并不熟悉,在写题的时候即使有思路每次写都会出现许多的错误,而且数组多用循环,调试的话比较复杂,有时候一个题目要调试很久,一部分一部分地进行,有的题目可能就是当天怎么写就是不对,过几天比较不急躁再认真看看就能自己看出问题了,有时也可以找其他同学看看,但自身的能力还需提高。
- 这几周的代码量有点少,遇到线性代数期末考,下一周要增加写代码的时间,希望每天晚上晚自习结束给自己一个小时以上打代码时间。
1.2.2 代码累计
2.PTA总分
2.1截图PTA三次题目集:一维数组、二维数组和字符数组共3次题目集的排名得分
2.2 我的总分:
455
3.PTA实验作业
3.1 PTA题目1
7-8 找出不是两个数组共有的元素 (20 分)
给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。
输出格式:
在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。
3.1.1 算法分析
3.1.2 代码截图
3.1.3 PTA提交列表及说明
Q:怎么出现段错误
A:在循环的时候出错,把想写j写成i,调试了很久都没发现,简直了
Q:部分正确又是什么情况
A:在区分该不该标1的时候漏了=号,使一个元素既不属于第一组,又不属于第二组的,答案自然就错啦
3.2 PTA题目2
7-8 加法口诀表 (10 分)
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
输入 1 个正整数 n(1≤n≤10), 输出一张 20 以内的加法口诀表. 加数与被加数都不大于 n, 分列第一行和第一列
(将加数、被加数、和放入一个二维数组中, 再输出该数组)
3.2.1 算法分析
通过观察得知第一行第一列的数皆属于行数,故
for i=1 to i<=n
number[0][i]=i;
number[i][0]=i;
end for
通过观察得知中间的数皆属于行数与列数之和,故
for i=1 to i<=n
forj=1 to j<=n
number[i][j]=i+j;
end for
end for
最后输出
除第一行外,元素的个数与行数相等
3.2.2 代码截图
3.2.3 PTA提交列表及说明
Q:为什么会有部分正确的情况
A:定义的数组大小太小了,刚开始只给了100,不符合题目给出的要求
3.3 PTA题目3
7-6 A-B (20 分)
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
3.3.1 算法分析
用gets()函数分别输入字符串A和B
用for循环找出A和B共有的元素标1
for i=0 to seriesA[i]!='\0'
flag=0;//重置
for j=0 to seriesB[j]!='\0'
if seriesA[i]==seriesB[j] then//查找重复的标1
flag=1;
break;
end if
end for
end for
挑出不标1的元素,整合到一起
if flag==0 then
series[k++]=seriesA[i];
end if
for i=0 to i<k
输出
end for
3.3.2 代码
3.3.3 PTA提交列表及说明
Q:为什么一直格式错误
A:在控制输出的时候前几个用%-4d输出,而最后一个%d输出
自己在控制输出格式时没有注意到第一行,而一直格式错误
4.代码互评
4.1 代码截图
同学代码截图
自己的代码截图
4.2 二者的不同
- 1.输出的方式不一样,因为同学有以'\0'作为结尾,所以可以直接用%s输出
然而我并没有以'\0'作为结尾,所以我要找出一共要有几个输出,较为麻
烦容易出错 - 2.同学先进行字符的排序,相同的字符就在旁边就可以不需要循环就可以找出重复的字符
但有一定的局限性,如果有多个重复就不好办了
而我进行多次的循环,比较费时