1.本章学习总结
1.1思维导图
1.2 本章学习体会及代码量学习体会
1.2.1学习体会
本章内容较之前的学习的内容要难,在PTA的题目更多,思考量大,对逻辑思维能力的要求也更高,如果平时代码量小了,到考试的时候真的会很生疏。在做作业的过程中,要注意记住一些解题的方法,这会在以后给自己省下很多时间,不会的就上百度查,然后记住。不然等到最后会发现时间花太多到最后还是做不好。还有,在写代码的时候,变量的命名要多留意,要起的有技术含量一点,并应该合理运用注释。今后要尽量在自己的代码中用上函数,让代码更加清晰。
1.2.2代码累计
2.PTA总分
2.1截图
2.2我的总分
335
3.PTA实验作业
3.1PTA题目一
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
3.1.1算法分析
定义N与整形数组a
输入数组a
for i=0 to N do
flag=m;
m=0;
for j=i to 0 do
if a[i]==a[j] then m++;
end if
if m>flag then
次数为m;
出现次数最多的整数num=a[i];
end if
输出 num time;
3.1.2代码截图
3.1.3PTA提交列表及说明
-
Q1 刚开始是将输入数字作为元素下标,输入该数字时,相应的元素大小加一。最后比较元素大小。但是这种做法在pta中有个测试点一直过不去。怎么改范围都不对。问了老师,说是范围越界,这种方法应该不行。
-
A1 最后换了方法:计算每个数出现的次数,然后比较。最后对了。
3.2PTA题目二
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
本题要求编写程序,求一个给定的n阶方阵的鞍点。
3.2.1算法分析
定义 n,hang,lie
定义整形数组a
输入n;
for i=0 to n-1 do
max=a[i][0]
for j=0 to n-1 do
if a[i][j] 大等于 max then
lie=j;
end if
min=a[0][lie];
for k=0 to n-1 do
if a[k][lie] 小等于 min then
hang=k;
end if
if min等于max then
输出hang和lie,结束循环
if i>=n then 输出NONE
end
3.2.2代码截图
3.2.3PTA提交列表及说明
-
Q1 第一次编写的时候,把行的最大值和列的最小值分开求了。
-
A1 改为先求一行中的最大值,再在相应的列中找最小值。
-
Q2 循环的嵌套的两个条件写反了,把行和列搞反了。
-
A2 理清思路重新改了过来。
-
Q3 冒泡法的使用混乱。
-
A2 通过上网查询弄清楚了。
3.3PTA题目三
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。
3.3.1算法分析
定义两个字符数组str,a,定义geshi,flag
定义Decnum
gets(str)
geshu=strlen(str);
for i=0 to geshu-1 do
if str[i]是数字字符 || str[i]是大写字母字符 || str[i]是小写字母字符 then
a[j]=str[i];
j++;
end if
if j==0 且 str[i]等于'-' then flag=1;
for i=j-1 to i>=0 do
if a[i]是大写字母字符 then Decnum=Decnum+(a[i]-55)*pow(16,j-1-i);
else if a[i] 是小写字母字符 then Decnum=Decnum+(a[i]-87)*pow(16,j-1-i);
else Decnum=Decnum+(a[i]-'0')*pow(16,j-1-i);
if flag==1 then Decnum=(-1)*Decnum;
printf("%d",Decnum);
end
3.3.2代码截图
3.3.3PTA提交列表及说明
-
Q1 刚开始想这道题目的时候没有头绪,不知道怎么计算字符个数
-
A1 后来经提醒,知道了可以用strlen函数。
-
Q2 在小写字符的转化这块卡了很久,一直不知道怎么会转化错误。
-
A2 百度后了也找不到错误元因,后来把它前面的if语句改成else if再放到后面就行了。
4.代码互评
4.1代码截图
- 同学
- 自己
4.2二者的异同
- 1.同学的思路是设定打印一圈为一个循环,循环次数是n/2+1,因为n为奇数个时,中间正好是镂空,另行补充。我的思路是向左,向下打印和向右,向上打印交错进行,循环次数刚好是N。
- 2.对方的代码比我的简洁很多,条理清晰,可读性强。而自己的代码在编辑的过程中容易出错。
- 3.对方的代码运行速度应该也比我的快。