关于#c语言#的问题:定义一个 N×M(N 和 M 为常量或宏)的整型二维数组

定义一个 N×M(N 和 M 为常量或宏)的整型二维数组,随机生成 N×M 个 0~100之间的整数,放进二维数组中。计算并输出二维数组周边元素之和;查找并输出二维数组中最大元素及其下标。

int a[5][10],用rand方法随机生成。


#include "stdio.h"
#include <time.h>
#include <stdlib.h>
#define N 5
#define M 5
void main()
{
    int a[N][M];
    int i,j,sum=0;
    int max = 0 ,index1 = 0,index2 = 0;
    srand(time(NULL));
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++){
            a[i][j] = rand()%101;
            if(i==0 || j==0 || i==N-1 || j== M-1){
                sum += a[i][j];    
            }
        }
    }  
    //显示数据数
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++){
            printf("%d\t",a[i][j]);
            if(a[i][j]>max){
                max = a[i][j];
                index1 = i;
                index2 = j;
            }
        }
        printf("\n");
    }
    printf("sum=%d\n",sum);
    printf("max = %d ,i=%d,j=%d",max,index1,index2);
    
}

周边元素之和计算统计第一行最后一行所有元素和中间行首尾元素
你题目的解答代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 5
#define M 6
void main()
{
    srand((unsigned)time(NULL));
    int a[N][M], i, j, x=0, y=0, s=0;
    for (i = 0; i<N; i++)
    {
        for (j = 0; j<M; j++)
        {
            a[i][j] = rand() % 101;
            printf("%4d", a[i][j]);
            if (i==0 || j==0 || i==N-1 || j==M-1)
                s += a[i][j];
            if (a[i][j]>a[x][y])
                x=i, y=j;
        }
        printf("\n");
    }
    printf("数组周边元素之和 %d\n", s);
    printf("最大元素 %d   下标 %d %d\n", a[x][y],x,y);
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

周边就是i或j为0