一、PTA实验作业
题目1.求出数组中最大数和次最大数
1.本题PTA提交列表
2.设计思路
定义最大数max,次最大数max2,中间变量t,p
赋初值max=0,max2=1
for i=0 to i<10
如果a[i]>a[max],max=i
利用中间变量t交换位置
for i=1 to i<10
如果a[i]>a[max2],max2=i
利用中间变量p交换位置
3.代码截图
4.本题调试过程碰到问题及解决办法
没有把max,max2赋初值,导致答案错误,后来问室友解决了
题目2. 统计大于等于平均分人数
1.本题PTA提交列表
2.设计思路
定义循环变量i,统计人数count,成绩总和sum
for i=0 to i<=n
sum+=s[i];
*aver=sum/n;
end
for i=0 to i<=n
遍历数组,如果*aver<s[i] ,count++;
end
返回count
3.代码截图
4.本题调试过程碰到问题及解决办法
由于粗心开始把sum定义成了整型,以后会注意这方面问题
题目3输入月份英文名
1.本题PTA提交列表
2.设计思路
switch(n){
如果n为1 返回英文一月 end
如果n为2 返回英文二月 end
如果n为3 返回英文三月 end
以此类推 直到n为12
如果n不是一个代表月份的数字 返回空指针NULL
}
3.代码截图
4.本题调试过程碰到问题及解决办法
漏掉了不是月份数字的情况,再看一遍就发现了
二、截图本周题目集的PTA最后排名
三、阅读代码
代码一
void fun(char *p){
int i,j,flag;//flag存放最大值下标
char item;
char max=‘a‘;
for(i=0;p[i]!=‘\0‘;i++){
if(p[i]>max) {
max=p[i];
flag=i;//记下最大值下标
}
}
item=max;
for(i=flag;i>0;i--){//从p[flag]倒着遍历
p[i]=p[i-1];//后移一位
}
p[0]=item;
}
周炳辉同学的代码采用了反向遍历的方法,把p数组倒着数,以后在做倒序输出的题目时可以尝试一下这种做法
代码二
吴军霖同学的代码用do-while循环查找字符串内还有没有未删除的子串,遇到相同的字母,继续判断后面的字母是否相同,代码简洁,十分巧妙。
四、学习总结
1.自己总结本周学习内容。
这周通过做PTA的题目,对指针这一章的内容开始慢慢掌握了,但是还是有一些概念比较模糊,在处理字符串方面的问题时,指针可以高效快速的处理,所以不懂得地方,还要继续看书做题来完善。
2 罗列错题。
指针数组不能直接偏移,我的选择错误,答案应该为D