C博客作业--指针

一、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

posted @ 2017-12-17 20:42  故三  阅读(170)  评论(0编辑  收藏  举报