//知识点:二维数组
用两个二维数组分别来表示人脸和口罩,
用两个正整数表示口罩戴在人脸的位置,
要求你计算最美的逆行者压痕
input:
输入M以及MxM个元素,表示人脸;(1<=M<=100)
输入N以及NxN个元素,表示口罩;(1<=N<=100)
输入正整数x,y,表示口罩左上角对应人脸的位置。(0<=x,y<=M-1)
output:
输出人脸和口罩叠加后的压痕数据
C语言的二维数组问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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 的值,然后程序会输出人脸和口罩叠加后的压痕数据。
解决 无用评论 打赏 举报