Longjingrap

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、PTA实验作业

题目1:6-2 求出数组中最大数和次最大数

1.本题PTA提交列表

2. 设计思路

定义max=0表示最大值,p,q用来互换数值,k,t用来存放最大值和次大值的下标
 for I=0  to I<n
   遍历数组,若*(a+i)>=max)
         max等于*(a+i)
             end for
                t存放最大值的下标值
 将最大值与数组第一个数互换
        max重新赋值为0;
    for j=1 to j<n  //寻找次大值,不用比较第一个数,既次大值为最大值
         遍历数组,若*(a+j)>=max)
         max等于*(a+j)
            end for
                k存放次大值的下标值
 将最大值与数组第二个数互换

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

  • 本题没有遇到问题,提交一遍就过了,然后想换看看有没有更容易简洁的代码,但怎么改好像差不多都这样吧

题目2:6-4 找最大值及其下标

1.本题PTA提交列表

2. 设计思路

定义max=0放最大值,i用来控制循环
for I=0 to i<n
    遍历数组,若*(a+i)>=max)
      max便赋值为*(a+i)
         *b存放最大值下标I
end for
返回 max
返回 *b

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

  • 这道题没有遇到问题,因为它跟第二道题差不多

题目3:6-7 过滤字符串只保留串中的字母字符

1.本题PTA提交列表

2. 设计思路

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。


  • 把i++放进if条件里面了,一直输不出来,最后通过调试找出来了。

二、截图本周题目集的PTA最后排名

三、阅读代码

代码一:6-8 使用函数实现字符串部分复制

  • 这代码是彭希同学的,很简洁明了。之前我差不多也是照这样做的,不过提示答案错误。这道题在devc上不能运行,在pta上就能答案正确,所以不好找错误,然后就只能重新换思路写代码。不过看到彭希同学这代码发现是真是很简洁。

代码二:

#include<stdio.h>
main()
{
int  a[10]={1,2,5,8,9,10}, an=5,b[10]={1,3,4,8,12,18},bn=5;
int  i,j,k,c[20],max=9999;
a[an+1]=b[bn+1]=max;
i=j=k=0;
while((a[i]!=max)||(b[j]!=max))
if(a[i]<b[j])  {c[k]=  a[i];   k++;  i++;}
else           {c[k]=  b[j];   k++;  j++;}
for(i=0;i<k;i++)  printf("%4d",c[i]); printf("\n");
}
  • 以上程序分别在a数组和b数组中放入an+1和bn+1个由小到大的有序数,程序把两个数组中的数按由小到大的顺序归并到c数组中。这代码是课堂派数组里面的,很简洁明了,希望我们能够学习一下这样的做法

四、本周学习总结

1.自己总结本周学习内容。

  • 上一周对指针的概念还很迷糊,本周通过pta和书本开始逐渐掌握了。指针在处理一些字符串问题方面可以快速地解决,效率很高,但也容易产生混乱,所以要熟练指针概念;
  • 库函数是真的很快速便捷,很方便。像常见的字符判别函数(#include<ctype.h>预处理命令)和常见的字符串操作函数(include<string.h>预处理命令)。可以提高我们的做题效率

2.罗列本周一些错题。


  • j应该小于*n-1,不然下面a[j]=a[j+1]的时候可能会越界

  • *(p-1)-32是只能遇到小写字母的情况下才有效,遇到其他情况就不能了。所以用toupper( *(p-1))可以进行强制转换
posted on 2017-12-16 14:52  Longjingrap  阅读(291)  评论(1编辑  收藏  举报