【例5-10】用随机函数产生30个两位正数,保存在5行6列数组中,求出整个数组的最大值与各行的最大值,并输出。
按“三步法”原则分析如下。
做什么
1)用随机函数产生30个两位正数,保存在5行6列数组中并输出,便于分析结果。
2)求出整个数组的最大值与各行的最大值,并输出。
怎么做
默认下标设为1。
分析:
用变量maxall保存整个数组的最大值,用变量maxrow保存各行的最大值。整型变量定义默认值为0。
要想找出整个数组最大值,需要用两重循环遍历整个二维数组。外重循环用来控制行的变化,循环控制变量i的有效变化范围为1~5。
对于外重循环的循环体,具体到某一遍循环,在其循环体内i值是不变的。外重循环体执行一遍,实际上就是要找第i行的最大值。
在查找第i行的最大值时,首先假定每i行第1个元素(第1列)是最大值,保存到maxrow中,然后从当前行的第2个元素(第2列)开始,分别和maxrow进行比较,如果该元素比maxrow大,则用该元素的值替换maxrow。当内重循环执行完毕,输出maxrow值,即为第i行的最大值。然后比较maxrow是否大于maxall,如果maxrow大于maxall,则把maxrow赋值给maxall。这时i值增1,如果i小于等于5,则继续寻找下一行的最大值。
步骤描述如下。
1)用两重循环产生30个两位正数保存到数组a(5,6)中,并输出。
2)初始化i值为1,用来控制行。
3)判断i,如果i<=5,则向下执行,否则执行第12)步。
4)初始化maxrow为第i行的第一个元素。
5)初始化j为2。
6)判断j,如果j小于等于6,则向下执行,否则执行第9)步。(www.xing528.com)
7)比较第j列元素和maxrow,如果第j列元素大于maxrow,则用第j列元素替换maxrow。
8)j值增1,返回第6)步。
9)输出第i行的最大值maxrow。
10)比较maxrow和maxall,如果maxrow大于maxall,则用maxrow替换maxall。
11)i值增1,返回第3)步。
12)输出整个数组最大值maxall。
实现
完整代码如下。
运行结果如图5-10所示。
图5-10 求数组最大值1
如果要求输出最大值及最大值所在的行号和列号,那么对于整个数组的最大值,需要两个变量,一个用来保存最大值的行号,另一个用来保存最大值的列号;而对于各行最大值,只需要一个用来保存列号的变量即可。
修改后完整代码如下。
运行结果如图5-11所示。
图5-11 求数组最大值2
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。