下面是一个用C语言编写的程序,实现了上述要求:

#include <stdio.h>

int main() {
    int a[20][20], b[20][20];
    int row_a, col_a, row_b, col_b;
    int replace_row, replace_col;
    
    // 输入矩阵A的行数和列数
    scanf("%d %d", &row_a, &col_a);
    
    // 输入矩阵A的各行数字
    for (int i = 0; i < row_a; i++) {
        for (int j = 0; j < col_a; j++) {
            scanf("%d", &a[i][j]);
        }
    }
    
    // 输入矩阵B的行数和列数
    scanf("%d %d", &row_b, &col_b);
    
    // 输入矩阵B的各行数字
    for (int i = 0; i < row_b; i++) {
        for (int j = 0; j < col_b; j++) {
            scanf("%d", &b[i][j]);
        }
    }
    
    // 输入替换位置
    scanf("%d %d", &replace_row, &replace_col);
    
    // 判断替换位置是否超出矩阵A的行数或列数
    if (replace_row < 1 || replace_row + row_b - 1 > row_a || replace_col < 1 || replace_col + col_b - 1 > col_a) {
        // 替换位置超出了矩阵A的行数或列数,原样输出矩阵A
        for (int i = 0; i < row_a; i++) {
            for (int j = 0; j < col_a; j++) {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }
    } else {
        // 替换位置在矩阵A的范围内,进行替换操作
        for (int i = 0; i < row_b; i++) {
            for (int j = 0; j < col_b; j++) {
                a[replace_row-1+i][replace_col-1+j] = b[i][j];
            }
        }
        
        // 输出替换后的矩阵
        for (int i = 0; i < row_a; i++) {
            for (int j = 0; j < col_a; j++) {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }
    }
    
    return 0;
}

希望对你有帮助

c语言编写程序先输入两个矩阵A和B然后输入替换位置左上角编写程序将矩阵A中从替换位置开始的子矩阵与B同样大小替换为B并输出替换后的矩阵。从控制台先输入矩阵A的行数和列数行数和列数均大于等于1小于等于20然后在新的行上输入矩阵A的各行数字以一个空格分隔的整数。再以同样的方式输入矩阵B。最后输入替换位置用一个空格分隔的两个整数表示行数和列数都从1开始计数因此两个整数都大于等于1。若替换位置超出了矩阵A

原文地址: https://www.cveoy.top/t/topic/hS20 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录