在二维数组a中选出各行最大的元素组成一个一维数组b.

2025-03-20 11:19:05
推荐回答(4个)
回答1:

void main()

{

int a[][4]={{10,16,87,65}, {14,32,11,108}, {10,25,12,37}};//a[3][4]

int b[3], i, j, max;//有没有发现这里下标是3。所以可以提示是行排列。因为是三行所以最大的只会有3个对吧

for(i=0;i<3;i++)

{  max=a[i][0];//每一行的第一个

for(j=1;j<4;j++)//每一行除第一个以外的也就要从第二个开始数了,那你看这里下标是不是第二个到最后一个?

{if(a[i][j]>max)   

//其实行排列就是列变行不变(这个是这个类型的题目的核心思想)              

max=a[i][j];

}

b[i]=max; //依次输入到b数组中去

}

/*输出矩阵a*/

for(i=0;i<3;i++)

{

for(j=0;j<4;j++)

printf("%5d",a[i][j]);

printf(“\n”); 

}//因为上面找每行最大的数没有改变这个数组的本质所以还会是原来的程序。其实先输出再进行上面那个循环的找数也是一样的结果。

/*输出矩阵b*/

for(i=0;i<=2;i++)

printf("%5d",b[i]);

printf("\n");//这里就是把三个最大数输出来的

}

扩展资料

为部分数组元素初始化

static int arrr[2][3] = {{1,2},{3}};

第一行只赋值给前两个,第二行只赋值给第一个。这是存储类型是static,故其他未赋值

的数组元素的初值为0。

但要注意的是 不是所有的C语言系统中存储类型不是static的变量或数组的初值也是0.

static int arr[2][3] = {1,2}智慧赋值给第一行的1,2两个数组元素,其余皆初始化为0.

省略数组第一维定义,但第二维不可省略。系统会根据给出的初始化数据个数和第二维长度确定第一维的长度

int arr[][2] = {1,2,3,4}即可等价于 int arr[2][2] = {{1,2},{3,4}}

参考资料来源:百度百科-二维数组

回答2:

#include

#include

void main()

{

int a[][4]={{1,2,3,4},

{2,3,4,5},

{3,4,5,6}};

int b[3], i, j, max;

for(i=0;i<3;i++)

{

max=a[i][0];

for(j=1;j<4;j++)

{if(a[i][j]>max)

max=a[i][j];

}

b[i]=max;

}

for(i=0;i<3;i++)

{

for(j=0;j<4;j++)

printf("%5d",a[i][j]);

printf("\n");

}

for(i=0;i<=2;i++)

printf("%5d",b[i]);

printf("\n");

}

扩展资料:

二维数组基本运算

1、转置矩阵

void tramat(matrix A,matrix B){ int i,j;

for(i=0; i

for(j=0;j

B[j]=A[j];

}

//其中A, B是m*n矩阵:

2、矩阵相加

void addmat(matrix C, matrix A, matrix B){

int i, j;

for(i=0; i

for(j=0;j

c[j] = A[j] + B[j];

}

//其中A,B,C是m*n矩阵:

3、矩阵相乘

void mutmat(matrix C, matrix A, matrix B){

int i, j, k;

for(i=0; i

for(j=0; j

C[j]=0;

for(k=0; k

C[j] = C[j] + A[k] * B[k][j];

}

}

//其中A是m*n矩阵,B是n*1矩阵,C为m*1矩阵

回答3:

void main()
{
  int a[][4]={{10,16,87,65}, {14,32,11,108}, {10,25,12,37}};//a[3][4]

  int b[3], i, j, max;//有没有发现这里下标是3。所以可以提示是行排列。因为是三行所以最大的只会有3个对吧

  for(i=0;i<3;i++)

  {  max=a[i][0];//每一行的第一个

     for(j=1;j<4;j++)//每一行除第一个以外的也就要从第二个开始数了,那你看这里下标是不是第二个到最后一个?

     {if(a[i][j]>max)   
     //其实行排列就是列变行不变(这个是这个类型的题目的核心思想)              
     
      max=a[i][j];

     }

    b[i]=max; //依次输入到b数组中去

  }

/*输出矩阵a*/

 for(i=0;i<3;i++)

  {

    for(j=0;j<4;j++)

       printf("%5d",a[i][j]);

    printf(“\n”); 

   }//因为上面找每行最大的数没有改变这个数组的本质所以还会是原来的程序。其实先输出再进行上面那个循环的找数也是一样的结果。

 /*输出矩阵b*/

 for(i=0;i<=2;i++)

        printf("%5d",b[i]);

 printf("\n");//这里就是把三个最大数输出来的


}

回答4:

容易记住……你想什么呢??记住它有什么用