- 求二维数组中元素的第二大值,及行标列标
#include<stdio.h> int main(int argc, const char *argv[]) { int arr[3][3]={1,2,3,4,5,6,7,8,9}; int i,j; int max1=arr[0][0],max_h=0,max_l=0; int max2=arr[0][0],max_h1=0,max_l1=0; for(i=0;i<3;i++)//外循环 { for(j=0;j<3;j++)//内循环 { if(arr[i][j]>max2)//二者判断寻找最大值 { if(arr[i][j>max1]) { max2=max1; max_h1=max_h; max_l1=max_l; max1=arr[i][j]; max_h=i; max_l=j; } } if(max1>=arr[i][j]&&max2<arr[i][j]) { max_h1=i; max_l1=j; } } } printf("第二大的值为%d,行为%d,列为%d\n",max2,max_h1,max_l1); printf("第一大的值为%d,行为%d,列为%d\n",max1,max_h,max_l); return 0;
#include<stdio.h>
int main(int argc, const char *argv[])
{
int arr[3][3]={{34,97,6},{90,81,7},{13,5,79}};
int arr1[9]={0};
int i,j,temp;
for(i=0;i<3;i++)//将二维数组转换成一维
{
for(j=0;j<3;j++)
{
arr1[3*i+j]=arr[i][j];
}
}
for(i=0;i<7;i++)
{
for(j=0;j<8;j++)
{
if(arr1[j]>arr1[j+1])
{
temp=arr1[j];
arr1[j]=arr1[j+1];
arr1[j+1]=temp;
}
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
arr[i][j]=arr1[3*i+j];
printf("%-3d",arr[i][j]);
}
putchar(10);
}
return 0;
}