#include<stdio.h>
void main()
{
int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,100,14,15},{17,18,19,20},{21,22,23,24,25}}
int max;
int i,j,k,l;
max=a[0][0];
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{ if(a[i][j]>max)
{
max=a[i][j];
k=i;
l=j;
printf("%d,%d,%d",max,k,l);
}
}
}
}
我猜你是想求这个2维数组中的最大元素并输出他的行列吧
如果是,你个程序有个两错误
1、int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,100,14,15},{17,18,19,20},{21,22,23,24,25}}这里少个分号。
2、你的输出printf()函数在最内层的for循环当中,这样如果后一个元素比前一个元素大,就会有输出,这样就会有很多输出,所以呢,printf("%d,%d,%d",max,k,l);这句应该放在for(i=0;i<5;i++)这个循环结束之后,作最后的输出。
#include<stdio.h>
void main()
{
int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,100,14,15},{17,18,19,20},{21,22,23,24,25}};
int max;
int i,j,k,l;
max=a[0][0];
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
k=i;
l=j;
}
}
}
printf("数组中最大值:%d\n第%d行,第%d列\n",max,k,l);
}
这是改好的程序。还有,现在的输出结果是以0为最低位,所以第一个元素是第0行第0列
加个图给你看看吧
C代码是有顺序的,你想输出的是最大数,当时你把输出语句写在for循环里面了,这样就相当于是一边判断一边输出,所以结果报错了,还有就是数组初始化的时候最后的分号忘掉了哈,呵呵,仔细一点就好了
代码如下
#include<stdio.h>
void main()
{
int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,100,14,15},{17,18,19,20},{21,22,23,24,25}}; //分号不要忘记
int max;
int i,j,k,l;
max=a[0][0];
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(a[i][j]>max)
{
max=a[i][j];
k=i;
l=j;
}
}
}
printf("%d,%d,%d",max,k,l); //写在最后一个循环的外面
}
for(i=0;i<5;i++)
{
for(j=0;j<i-1;j++)
{ if(a[i][j]>max)
{
max=a[i][j];
k=i;
l=j;
printf("%d,%d,%d",max,k,l);
}
}
}
这样就行了 内层循环要比外层循环少做一次才行