本章内容较之前的学习的内容要难,在PTA的题目更多,思考量大,对逻辑思维能力的要求也更高,如果平时代码量小了,到考试的时候真的会很生疏。在做作业的过程中,要注意记住一些解题的方法,这会在以后给自己省下很多时间,不会的就上百度查,然后记住。不然等到最后会发现时间花太多到最后还是做不好。还有,在写代码的时候,变量的命名要多留意,要起的有技术含量一点,并应该合理运用注释。今后要尽量在自己的代码中用上函数,让代码更加清晰。
本题要求统计一个整型序列中出现次数最多的整数及其出现次数。
定义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;
Q1 刚开始是将输入数字作为元素下标,输入该数字时,相应的元素大小加一。最后比较元素大小。但是这种做法在pta中有个测试点一直过不去。怎么改范围都不对。问了老师,说是范围越界,这种方法应该不行。
A1 最后换了方法:计算每个数出现的次数,然后比较。最后对了。
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
本题要求编写程序,求一个给定的n阶方阵的鞍点。
定义 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
Q1 第一次编写的时候,把行的最大值和列的最小值分开求了。
A1 改为先求一行中的最大值,再在相应的列中找最小值。
Q2 循环的嵌套的两个条件写反了,把行和列搞反了。
A2 理清思路重新改了过来。
Q3 冒泡法的使用混乱。
A2 通过上网查询弄清楚了。
输入一组二进制字符,输出其对应的十进制数。当输入回车键时,输入结束。若输入非二进制字符,输出error input!
定义变量ch,使输入数字为字符,sum为十进制的数,digit为输入的数字(看作余数),flag判断是否输出错误。
while((ch=getchar())!=‘\n‘)
if (ch==‘1‘||ch==‘0‘) then
digit= ch - ‘0‘;
sum=sum*2+digit;
end if
else if ((ch=getchar())!=‘\n‘)
flag=1;
end if
if flag==1 then
输出error input!
else
输出sum
Q1 刚开始想这道题目的时候没有头绪,不知道怎么用嵌套。
A1 后来经提醒,知道了大致过程。
Q2 难以理解怎么至少留有一个二元和一个一元。
A2 百度后知道了方法,要在第一个选出五元硬币个数的循环中“留下”一个一和一个二,在第二个选出二元硬币数量的循环中“留下”一个一元。
同学
自己
相同:1.
2.
3.
不同: 1.
2.
3.
原文:https://www.cnblogs.com/chianun2000/p/10089559.html