数组

数组

一、PTA实验作业

题目1:查找整数
1. 本题PTA提交列表


2. 设计思路

定义n,x,a[i],i 等变量,用for循环输入数组a[i](i<n)

从a[0]开始查找,判断a[i]是否等于输入的整数x,

如果是,则输出下标 i ;如果i>=n,输出Not found.

 


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

错误一:判断的时候没有再加一个循环,导致不管输入什么,i 都等于最后输入的那个数。

因此再加一个循环判断a[i]。



 错误二:最小n找不到,没有按格式输出Not found 

 

 

题目2:数组元素循环右移问题

1. 本题PTA提交列表

2. 设计思路

本题采用函数结构,定义两个子函数,用于循环位数为零和不为零的两种情况。

在主函数中先输入元素个数和要移动的位数,再循环输入数组a[i] ,判断输入的m,即移动位数,如果m=0,则调用函数一,若m!=0,调用函数二。

m!=0的情况,要考虑移动位数有可能大于数组的个数,因此采用取余,令m=m%n,此时的m即为移动位数。顺序输出的前几位就为原数组的后几位。所以让 i 从n-m开始,i<n,i++,输出a[i]。其余数组顺序输出。但是要注意pta 要求的格式问题,因此还要在循环中加入一个i是否等于最后一位输出的判断。如果是,在printf 的时候,后面不能有空格,其余的数组元素后跟一个空格。

m=0的时候比较简单,相当于原数组输出,只要注意格式问题即可,格式同m!=0的情况。

 

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

错误一:if里面错用成for 的形式,要删去i<n;i++的部分;

还有第一个子函数少了一个大括号。

 错误二:第一个子函数中的if 错写成=,导致m>n的情况没有被考虑进去;把=改成==即可。

 

 

题目3:简化的插入排序

1. 本题PTA提交列表

2. 设计思路

先定义n,i,数组 a[i]等 , 输入n,再循环输入数组a[i],然后输入要插入的数x;判断x和a[i]的大小,

如果x<a[i],就调换它们的位置;如果没有,则顺序输出原数组,注意按照pta 上的每个数字后空格的形式输出。

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

错误一:没有体现x和a[i]的比较过程,输入时i<n,所以后面取不到a[n],思路错误。

 

修改完后,让x从a[0]开始比较,再顺序输出,要注意最后要让i<=n,以免因多了一个数而空间不够。

 

二、同学代码结对互评

互评同学:黄依琳(左边)

冒泡排序法

我的这道题没得满分,依琳用的是函数,我跟她除了函数,不一样的地方就是在比较大小内部循环时,我写 j<n-i,导致最小n无法排序,依琳写的是i<=n-2,所有的元素都排了一遍,避免出错。我的应更改为 j<n-1;我的代码虽然短,但是出错了;依琳用函数虽然看起来比较冗长,但能够熟练运用函数并且答案正确就挺好。

三.本周题目集的PTA最后排名

四、学习总结

1、通过这次数组的学习,我学会了一维数组和二维数组的调用,

     定义数组类型 数组名称 长度,大大减少了定义的变量的数量,在内存的占用上相对比较集中

2.学会了冒泡排序法和选择排序法等一系列重要的排序方法,知道怎样查找序列中的某些元素等多种题型。

3.知道一维数组和二维数组的区别和共同点。

4.学习了几个新的函数:

strcopy(拷贝)strcat(连接)strcmp(判断)strlen(计算字符的长度)

5、不会的地方

1.对于函数和数组相结合的题目还不能够熟练应用,pta上的有些题目还不会做。

2.排序时会忽略最小n和最大n,内循环和外循环有时会混淆循环的条件。

6.考试总结

考试凸显出的问题有很多,课本的内容还有不会,说明没认真看课本,不熟练造成的。课前没预习,回去没及时复习,导致知识点欠缺较多。以后要多打代码,加强练习,多看书本,把书读透。

 

posted @ 2017-12-28 21:33  linzhiyi  阅读(126)  评论(0编辑  收藏  举报