2301_81195852 2023-12-04 21:23 采纳率: 44.4%
浏览 9
已结题

C语言的二维数组问题

//知识点:二维数组
用两个二维数组分别来表示人脸和口罩,
用两个正整数表示口罩戴在人脸的位置,
要求你计算最美的逆行者压痕
input:
输入M以及MxM个元素,表示人脸;(1<=M<=100)
输入N以及NxN个元素,表示口罩;(1<=N<=100)
输入正整数x,y,表示口罩左上角对应人脸的位置。(0<=x,y<=M-1)
output:
输出人脸和口罩叠加后的压痕数据

  • 写回答

3条回答 默认 最新

  • 柒-寒 2023-12-04 22:03
    关注
    #include <stdio.h>
    
    // 计算最美的逆行者压痕
    void calculateBeauty(int M, int face[M][M], int N, int mask[N][N], int x, int y) {
        // 遍历口罩数组
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++) {
                // 如果口罩范围超出人脸范围,则跳过
                if (x + i >= M || y + j >= M) {
                    continue;
                }
                // 更新人脸数组
                face[x + i][y + j] += mask[i][j];
            }
        }
    }
    
    int main() {
        int M, N;
        scanf("%d", &M);
    
        // 输入人脸数组
        int face[M][M];
        for (int i = 0; i < M; i++) {
            for (int j = 0; j < M; j++) {
                scanf("%d", &face[i][j]);
            }
        }
    
        scanf("%d", &N);
    
        // 输入口罩数组
        int mask[N][N];
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++) {
                scanf("%d", &mask[i][j]);
            }
        }
    
        int x, y;
        scanf("%d %d", &x, &y);
    
        // 计算最美的逆行者压痕
        calculateBeauty(M, face, N, mask, x, y);
    
        // 输出人脸和口罩叠加后的压痕数据
        for (int i = 0; i < M; i++) {
            for (int j = 0; j < M; j++) {
                printf("%d ", face[i][j]);
            }
            printf("\n");
        }
    
        return 0;
    }
    

    你可以在输入中依次提供 M、人脸数组、N、口罩数组和 x、y 的值,然后程序会输出人脸和口罩叠加后的压痕数据。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月31日
  • 创建了问题 12月4日