一、PTA实验作业

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

1. 本题PTA提交列表

2. 设计思路

    定义max表示范围数组中的最大数(初值设为a[0]),z表示找到的元素在数组中的位置;
    定义指针*b,b=a(保留数组的首地址);
    for a=b  to  b+n-1   
      if(*a大于max){
        保留*a,z=a-b;
     }
    end   for
    用temp交换*b与*(b+z);
    max=*(b+1);
    for  a=b+1  to  b+n-1
      if(*a大于max){
        保留*a,z=a-b;
      }
    end  for
    用temp交换*(b+1)与*(b+z);
    返回*a

3.代码截图

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

  • 一开始都写不好,换了好几次思路,但是一直会把前面的几个数全部换成最大数,最后还把后面的其他元素搞混;由于无法调试,我就利用printf输出来找错误,找了很久就是无法发现问题,上一步的结果还是正确的,下一步交换完了就是错了,不知道怎么办,然后一直在改交换的那个地方的代码,因为我觉得是那里写错了才导致了值全变成十二!但是无论怎么改答案都是一样的,我开始重新找错误,发现自己在改if语句的时候多添了一个语句却没有附上大括号,,,所以说if语句的括号要小心点。
  • 没有保留找到的值的位置,直接就和a交换;没有意识到其实是从头比较到尾,所以最后的a不是我们要的那个位置;

题目2:统计大于等于平均分人数

1. 本题PTA提交列表


2. 设计思路

3.代码截图

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

  • 没有s--,count比预期的要少一个;

题目3:字符串串动变化

1. 本题PTA提交列表

2. 设计思路

	定义整型变量i为循环变量,x用于保留最大值字符的下标,n为字符串的长度
	定义字符型变量max用于保留最大值字符;
	n=strlen(p); 
	fori  i=0  to  i<n  找到max;
		if(p[i]大于max){
			max=p[i];
			x=i;
		}
	end  for
        把max前的x-1个元素后移一个位置;
	max放到首字符;

3.代码截图

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

  • 忘记了是字符串,把max设成整型变量,导致字符串第一个和第二个都输不出来;然后就是一直把一开始的首字符挪后一位的时候把它改动成了最大值的那个字符;因为我先把最大值字符放到p[0]中,然后再后移其他的字符,这样就导致了原来首字符的丢失;先后移再放最大值字符就解决了!

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

三、阅读代码

1.有n个数,使其前面个数顺序向后移m个位置,最后m个数变成前面m个数。

  • 这道题看起来没有很厉害,它只是利用指针对数组进行右移,和上周的数组作业的那道题很像;一开始不知道array_end = *(array+n-1)是什么操作,用printf输出以后发现是每个数组的最后一个元素,用了它就保存了最后一个数,然后每个元素右移一位,非常方便。

2.用指向指针的指针的方法对n个字符串排序并输出。

  • 百度了一下没学到的函数,学会了数字的排序,还没有认真研究过字符的排序~~

四、本周学习总结

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

刚开始学指针的时候非常懵逼,不懂学它的意义。后来做一些题目后开始接受它,发现一些用了它程序更加高效。本周掌握了一些基本用法,比如要遍历数组p,可以保留下首地址,在第一个循环中我让p自增即p++,就让p加到了临界点,下面再用到的时候,重新返回去。和数组,函数的结合使用,虽然刚开始用的不是很好,还是不能很直接的使用指针,有时候还是在依靠数组,但是明显感觉到了指针的优势。代码简洁了很多,而且执行效率更高。

2.罗列本周一些错题。

  • 课堂派习题:刚开始还不是很能理解指针的意思,所以不会做;
  • PTA最后报数的那道题还是调不出来。
posted on 2017-12-17 21:47  EVOLYM  阅读(225)  评论(2编辑  收藏  举报