c语言输入一个二维数组,找出每行的最大值输出

不要用c++

#include<stdio.h>

//首先指定M和N的值

#define M 3

#define N 3  

int main()

{

printf("There are %d rows %d columns.\n", M, N); //输出到屏幕的提示信息  

int a[M][N] = { 0 }; //声明一个M行N列的数组,并将全部元素赋初值为0  

int i, j; //for循环中要用到  

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

{

printf("input %d row's %d values: ", i + 1, N); //输出到屏幕的提示信息

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

scanf("%d", &a[i][j]); //对第i行第j列的元素赋值

int maxArr[M] = { 0 }; //声明一个含有M个元素的一维数组来存储M个行最大值 

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

{

int max = a[i][0]; //先将每一行的第一个数作为最大值

for (j = 1; j < N; j++) //关键步骤——找出行最大值

if (max < a[i][j])

max = a[i][j];

maxArr[i] = max; //将行最大值存入行最大值数组中

}

for (i = 0; i < M; i++) //将每行最大的数输出

printf("%d ", maxArr[i]);

return 0;

}

扩展资料:

分析

1、for循环输入一个二维数组a[M][N]。

2、使用一个一维数组存储二维数组每行的最大值,一维数组的大小为M。  

3、嵌套for循环找出二维数组每行的最大值,并将最大值传递给一维数组。

4、输出存储最大值的数组。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-07-10

#include<stdio.h>

#define M 3

#define N 3  

int main()

{

printf("There are %d rows %d columns.\n", M, N); //输出到屏幕的提示信息 

int a[M][N] = { }; //声明一个M行N列的数组,并将全部元素赋初值为 

int i, j; //for循环中要用到

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

{

//输出到屏幕的提示信息

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

printf("%d ", a[i][j]); //对第i行第j列的元素赋值

}

printf("\n");

int maxArr[M] = { 0 }; //声明一个含有M个元素的一维数组来存储M个行最大值

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

{

int max = a[i][0]; //先将每一行的第一个数作为最大值

for (j = 1; j < N; j++) //关键步骤——找出行最大值

if (max < a[i][j])

max = a[i][j];

maxArr[i] = max; //将行最大值存入行最大值数组中

}  

printf("每行最大分别为:\n");

for (i = 0; i < M; i++) //将每行最大的数输出

printf("%d ", maxArr[i]);

return 0;

}

扩展资料:

数组使用规则

1.数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。

2.数组名的书写规则应符合标识符的书写规定。

3.数组名不能与其它变量名相同。

参考资料:

百度百科-数组

本回答被网友采纳
第2个回答  2015-05-26
/*
输入 6 个整数:2 3 4 5 6 9
  2   3   4
  5   6   9
max : a[1][2] = 9
Press any key to continue
#include <stdio.h>
 
int const M = 2;
int const N = 3;
 
void Show(int a[][N],int m) {
    int i,j;
    for(i = 0; i < m; ++i) {
        for(j = 0; j < N; ++j)
            printf("%3d ",a[i][j]);
        printf("\n");
    }
}
 
int main() {
    int i,j,a[M][N];
    int maxi = 0,maxj = 0;
    printf("输入 %d 个整数:",M * N);
    for(i = 0; i < M; ++i) {
        for(j = 0; j < N; ++j)
            scanf("%d",&a[i][j]);
    }
    Show(a,M);
    for(i = 0; i < M; ++i) {
        for(j = 0; j < N; ++j) {
            if(a[i][j] > a[maxi][maxj]) {
                maxi = i;
                maxj = j;
            }
        }
    }
    printf("max : a[%d][%d] = %d\n",maxi,maxj,a[maxi][maxj]);
    return 0;
}

第3个回答  2015-05-26
#include<stdio.h>
#include<stdlib.h>

int main()
{
    int a[2][3]={{1,2,3},{4,5,6}};
    int i,j;
    for(i=0;i<2;i++){
        for(j=0;j<3;j++){
            scanf("%d",&a[i][j]);
        }
    }
    int max;
    for(i=0;i<2;i++){
        max=a[i][0];
        for(j=1;j<3;j++){
            if(a[i][j]>max){
                max=a[i][j];
            }
        }
        printf("第%d行最大值:%d\n",i+1,max);
    }
    system("pause");
    return 0;
}

 

追问

二维数组预先是不知道。咋改

追答

大小不知道吗?

追问

就是几行几列是不知道的

大小没有关系

追答#include<stdio.h>
#include<stdlib.h>
 
int main()
{
    //int a[2][3]={{1,2,3},{4,5,6}};
    int a[1024][1024];
    int m,n;
    printf("请输入二维数组的维数:");
    scanf("%d%d",&m,&n);
    int i,j;
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            scanf("%d",&a[i][j]);
        }
    }
    int max;
    for(i=0;i<m;i++){
        max=a[i][0];
        for(j=1;j<n;j++){
            if(a[i][j]>max){
                max=a[i][j];
            }
        }
        printf("第%d行最大值:%d\n",i+1,max);
    }
    system("pause");
    return 0;
}

追问

//int a[2][3]={{1,2,3},{4,5,6}};这个是啥意思?为啥要有这个?

追答

这个可以没有,注释掉了

本回答被提问者采纳
第4个回答  2017-12-02
如果几行几列也不知道呢
相似回答