C语言 求二维数组(3行3列)中最大元素值及其行列号。

谢谢啦

第1个回答  2015-07-05
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
int main(void){
    int a[3][3]={5,1,9,2,4,6,8,7,3},i,j,maxi,maxj;
    for(maxi=maxj=i=0;i<3;i++)
        for(j=0;j<3;j++)
            if(a[maxi][maxj]<a[i][j])
                maxi=i,maxj=j;
    printf("The max = %d\nThe maxi = %d\nThe maxj = %d\n",a[maxi][maxj],maxi,maxj);
    return 0;
}

第2个回答  2015-07-05
我来试一下,

追问

谢谢啦

追答dengwo@dengwo-ThinkPad-Edge-E530:~/bowl/shangdongoj$ cat erda.c 
#include<stdio.h>
#define U 3


int main(void)
{
int oblong[U][U] = {0};
struct answer
{
int price;
int x;
int y;
} answer_print;

int i, j;
for(i=0;i<U;i++)
{
for(j=0;j<U;j++)
{
scanf("%d", &oblong[i][j]);
/*输入9个数字每个数字空格分开,
    如下: 1 2 3 4 5 6 9 8 7 回车.
*/
}
}

answer_print.price = oblong[0][0];
for(i=0;i<U;i++)
{
for(j=0;j<U;j++)
{
if(oblong[i][j]>answer_print.price)
{
answer_print.price = oblong[i][j];
answer_print.x = i;
answer_print.y = j;
}
}
}
printf("最大是:%d\t坐标是:[%d][%d]\n", answer_print.price, answer_print.x, answer_print.y);
return 0;
}
dengwo@dengwo-ThinkPad-Edge-E530:~/bowl/shangdongoj$

追问

为什么我这边的坐标显示不正确啊....

追答

因为数组的坐标都是从下标 0 开始的, 这应该属于语法吧.


要是不习惯,可以加1操作.如下地方

 for(j=0;j<U;j++)
        {
            if(oblong[i][j]>answer_print.price)
            {
                answer_print.price = oblong[i][j];
                answer_print.x = i;//1
                answer_print.y = j;//2
            }
            
            
            /*把语句1,2,改为如下*/
            
              if(oblong[i][j]>answer_print.price)
            {
                answer_print.price = oblong[i][j];
                answer_print.x = i+1
                answer_print.y = j+1;
            }

本回答被提问者采纳