#include <stdio.h>
int main () {
int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}};
int i, j;
for ( i = 0; i < 5; i++ ) {
for ( j = 0; j < 2; j++ ) {
printf("a[%d][%d] = %d\n", i,j, a[i][j] );
}
}
return 0;
}
所以到目前为止我有这个代码,它会在屏幕上写下每一个元素,但我还想写出最高的数字及其索引。我只是一个初学者,所以我想问你的意见。
答案 0 :(得分:2)
通过问题获得努力(和代码)是很好的。做得好。您需要做的就是比较每个数组值并将最大值保存为max
。请注意,每当搜索最大值时,最好将max
值初始化为此存储类型的最小值('int')案件。因此,初始化为INT_MIN
可确保任何值(如果所有值均为负值,即使是大的负值)也将大于初始值。要捕获发生最大值的索引,只需在每次保存i
值时保存j
,max
的索引值,并且您将捕获最大值出现的索引:
#include <stdio.h>
#include <limits.h>
int main () {
int a[][2] = {{0,0}, {1,2}, {2,4}, {3,6},{4,8}};
int maxrow = -1, maxcol = -1;
int nrows = sizeof a/sizeof *a;
int i, j, max = INT_MIN;
for (i = 0; i < nrows; i++) {
for (j = 0; j < 2; j++ ) {
printf("a[%d][%d] = %d\n", i,j, a[i][j] );
/* find largess value */
if (a[i][j] > max) {
max = a[i][j];
maxrow = i;
maxcol = j;
}
}
}
printf ("\n maximum value at 'a[%d][%d]' : %d\n\n",
maxrow, maxcol, max);
return 0;
}
<强>编译强>
gcc -Wall -Wextra -O3 -o bin/array_max array_max.c
<强>输出强>
$ ./bin/array_max
a[0][0] = 0
a[0][1] = 0
a[1][0] = 1
a[1][1] = 2
a[2][0] = 2
a[2][1] = 4
a[3][0] = 3
a[3][1] = 6
a[4][0] = 4
a[4][1] = 8
maximum value at 'a[4][1]' : 8
答案 1 :(得分:1)
在C函数中,没有参数的main应声明为
int main ( void )
至于搜索最大元素,那么方法很简单。首先,假设最大元素是数组的第一个元素。然后将数组的所有其他元素与此最大值进行比较,如果某个元素大于最大值,则它将成为最大值。
例如
#include <stdio.h>
#define M 5
#define N 2
int main ( void )
{
int a[M][N] =
{
{ 0, 0 }, { 1, 2 }, { 2, 4 }, { 3, 6 }, { 4, 8 }
};
int i, j;
int max_i, max_j;
for ( i = 0; i < M; i++ )
{
for ( j = 0; j < N; j++ )
{
printf("a[%d][%d] = %d\n", i,j, a[i][j] );
}
}
max_i = 0;
max_j = 0;
for ( i = 0; i < M; i++ )
{
for ( j = 0; j < N; j++ )
{
if ( a[max_i][max_j] < a[i][j] )
{
max_i = i;
max_j = j;
}
}
}
printf( "The maximum value is %d at row %d and column %d\n",
a[max_i][max_j], max_i, max_j );
return 0;
}
答案 2 :(得分:-1)
您可以使用以下代码:
int max,pi,pj;
max = –2147483648;
for(i=0; i<5; i++) {
for(j=0; j<2; j++) {
if(a[i][j] > max) {
max = a[i][j];
pi = i;
pj = j;
}
}
}