数组

题目1:

7-1 数组元素循环右移问题

一个数组A中存有N(>)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥)个位置,即将A中的数据由(A0​​A1​​AN1​​)变换为(ANM​​AN1​​A0​​A1​​ANM1​​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?


1. 本题PTA提交列表


2. 设计思路

将输入的数储存在数组中,右移后a[0]=a[3],a[1]=a[4],a[2]=a[5]。

故需要设计循环使a数组中数字下标进行循环。
3.本题调试过程碰到问题及PTA提交列表情况说明

碰到问题:1.如何输入数组2.如何输入数组3.如何将下标进行加减。

第一次提交,答案错误,输入后数字之间无间隔,但同时无法用“ %d  ”输出,因为行末不能有间隔。故根据程序分析在第一循环中如果当i>n-1,则不需要输出空格。在第二个循环中,i=n-m-1时不需要输出空格,固将程序改动正确。

题目2.

7-2 求最大值及其下标(20 分)

本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。

1. 本题PTA提交列表

本题代码

2. 设计思路

将相邻量两个数进行比较,如果顺序错误则进行交换。如是循环。

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

 碰到问题:如何比较大小,互相交换后找到最大值下标。

第一次提交时定义数组错误,不能直接定义a[n],查找书本翻看程序后纠正。

第二次提交时没有令max=0,所以无法运行,反复试验多次无果后进行询问同学改正。

 题目3.

7-6 冒泡法排序

N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。

本题要求对任意给定的K(<N),输出扫描完第K遍后的中间结果数列。

本题提交列表

本题代码

 

2.设计思路

一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

3.

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

碰到问题:循环逻辑不通,不知道如何使格式正确

第一次提交输出格式错误,行末存在多余空格,分析后可以根据数组中元素下标判断该元素是否为最后一个元素,若不是,则输出空格,若是,则不输出。

#二

排名

互评同学名称:李彦婵

2.代码对比

 

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

结构不同,彦婵直接将下标从最大值往前输,而我定义了一个子函数,使用下标的对换来实现。比较之下,彦婵的程序更加简洁明了,运用了技巧,而我的程序过于复杂,容易出错并且不容易发现错误。我更喜欢彦婵的风格,简单易懂。

四、本周学习总结

1.你学会了什么?

1).学会了如何定义一维数组,二维数组

2).学会了如何将数组中的元素运用下标进行处理。

3).学会了不同输入输出数组的几种不同方式

4).关于str系列函数的用法与原型

2.本周的内容,你还不会什么?

不知道如何分别进行行与列的查找并比较大小。

 

3.循环结构考试总结

1.哪题做错了,怎么改?

所定义数组范围过小,导致答案部分错误,定义足够大的数组char a[1000000]

2.考试结果满意么,怎么改进?

不满意,应该多回归书本,并且在听完课之后立马进行温习并自己尝试写一遍,若有不懂应该立马标注并及时解决。

3.其他总结。

多多练习,端正态度。

 

 

 

posted @ 2017-12-28 12:31  不科学的二喵  阅读(231)  评论(0编辑  收藏  举报