C语⾔基础练习——最⼤值及其位置(⼆维数组)
C语⾔基础练习——最⼤值及其位置(⼆维数组)
时间限制: 1 Sec  内存限制: 10 MB
题⽬描述
有⼀个n×m的矩阵,要求编程序求出:
每⾏元素的最⼤值,以及其所在的⾏号和列号。求出所有元素的最⼤值,以及其所在的⾏号和列号。
输⼊
先输⼊n,m (2<=n<=100,2<=m<=100)
在输⼊矩阵中各元素的值。(假设为整型数)
输出
先输出每⾏元素的最⼤值的下标及其值,每个占⼀⾏;
再输出所有元素的最⼤值的下标及其值。
样例输⼊
3 4
1 2 3 4
10 11 12 13
3 4 5 6
样例输出
0 3 4
1 3 13
2 3 6
1 3 13
下⾯是实现代码:
1 #include <stdio.h>
2int main()
3 {
4int a[100][100],b[101][2];
5int n,m,i,k;
6    scanf("%d%d",&n,&m);
7for(i=0; i<n; i++)
8    {
9for(k=0; k<m; k++)
10        {
11            scanf("%d",&a[i][k]); //输⼊
12        }
13    }
14for(i=0; i<n; i++) //每⾏最⼤值
15    {
16int max=a[i][0]; //假定⾏⾸为最⼤值
17        b[i][0]=i; //⾏⾸⾏号
18        b[i][1]=0; //⾏⾸列号
19for(k=1; k<m; k++)
20        {
21if(max<a[i][k])
22            {
23                max=a[i][k]; //修改第i⾏最⼤值
24                b[i][1]=k; //⾏内最⼤值,只有列号变化
25            }
26        }
27        printf("%d %d %d\n",b[i][0],b[i][1],max); //输出第i⾏最⼤值及其⾏号列号
28    }
29int maxmax; //整个数组的最⼤值
30for(i=0; i<n; i++)
31    {
32int x=b[i][0]; //第i⾏最⼤值的⾏号
33int y=b[i][1]; //第i⾏最⼤值的列号
34if(i==0) //第0⾏
35        {
36            maxmax=a[x][y]; //假定第0⾏最⼤值为数组最⼤值
37            b[n][0]=0; //⾏号
38            b[n][1]=0; //列号
39        }
40else//其他⾏
41        {
42if(maxmax<a[x][y])
43            {
44                maxmax=a[x][y]; //修改数组最⼤值
45                b[n][0]=x; //⾏号
怎么定义二维数组c语言
46                b[n][1]=y; //列号
47            }
48        }
49    }
50    printf("%d %d %d",b[n][0],b[n][1],maxmax); //输出数组最⼤值及其⾏号列号
51return0;
52 }
(思路和代码对照着看)
我的思路是定义数组a[100][100]⽤于输⼊数据,定义数组b[101][2]⽤于保存数组a每⾏最⼤值所在的⾏号和列号
如果输⼊100⾏数据:
a[0]⾏最⼤值的⾏号保存到b[0][0],列号保存到b[0][1]
a[1]⾏最⼤值的⾏号保存到b[1][0],列号保存到b[1][1]
. . . . . .
a[99]⾏最⼤值的⾏号保存到b[99][0],列号保存到b[99][1]
整个数组a最⼤值的⾏号保存到b[100][0],列号保存到b[100][1]
先⽤⼀个nxm的循环输⼊数据
然后for循环i从0到n-1,每⼀⾏的最⼤值。
先假定每⾏的⾏⾸是最⼤值,即max=a[i][0],当前⾏号为i,保存到b[i][0];列号为0,保存到b[i][1]
嵌套⼀个for循环k从1到n-1,让max和a[i][1]……a[i][n-1]⽐较,如果max<a[i][k],则修改max及其⾏号列号
嵌套循环结束后输出本⾏最⼤值及其⾏号列号
经过上⾯的循环,数组a每⾏最⼤值的⾏号列号都已经保存到数组b中
最后来⼀个for循环i从0到n-1,从每⾏的最⼤值中数组的最⼤值
这⾥我把每⾏最⼤值⾏号和列号先赋值给x和y,如果我写在⼀起可能看这篇⽂章的⼈就看不懂了
如果直接嵌套写就是这样,a[b[i][0]][b[i][1]],即代码中的a[x][y]
先假定数组最⼤值是第⼀⾏的最⼤值,然后让其他⾏最⼤值与之⽐较,如果maxmax<a[x][y],则修改maxmax及其⾏号列号程序最后输出数组最⼤值及其⾏号列号

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。