【时时三省】(C语言基础)二维数组举例
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省
例题1
将一个二维数组行和列的元素互换,存到另一个二维数组中。例如:
解题思路:
可以定义两个数组:数组a为2行3列,存放指定的6个数。数组b为3行2列,开始时未赋值。只要将a数组中的元素a [ i ] [ i ]存放到b数组中的b [ j ] [ i ]元素中即可。用嵌套的for循环即可完成此任务。
编写程序:
运行结果:
例题2:
有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。
解题思路:
先思考一下在打擂台时怎样确定最后的优胜者。先找出任一人站在台上第2人上去与之比武,胜者留在台上。再上去第3人,与台上的人(即刚才的得胜者)比武胜者留台上,败者下台。以后每一个人都是与当时留在台上的人比武。直到所有人都上台比过为止,最后留在台上的就是冠军。这就是“打擂台算法”。解本题也是用“打擂台算法”。先让a [ 0 ] [ 0 ]作“擂主”,把它的值赋给变量max , max用来存放当前已知的最大值,在开始时还未进行比较,把max = a [ 0 ] [ 0 ]最前面的元素暂时认为是当前值最大的。然后让下for i = 0 to 2for j = 0 to 3一个元素a [ 0 ] [ 1 ]与max比较,如果a [ 0 ] [ 1 ] > max .真a [ i ] i ] > max则表示a [ 0 ] [ 1 ]是已经比过的数据中值最大的,把它假max = a [ i ] [ i ]的值赋给max,取代了max的原值。以后依此处理。row = i值大的赋给max。直到全部比完后,max就是最大colum = j的值。输出:max和row、colum。
编写程序:
运行结果: