c语言编写程序先输入两个矩阵A和B然后输入替换位置左上角编写程序将矩阵A中从替换位置开始的子矩阵与B同样大小替换为B并输出替换后的矩阵。从控制台先输入矩阵A的行数和列数行数和列数均大于等于1小于等于20然后在新的行上输入矩阵A的各行数字以一个空格分隔的整数。再以同样的方式输入矩阵B。最后输入替换位置用一个空格分隔的两个整数表示行数和列数都从1开始计数因此两个整数都大于等于1。若替换位置超出了矩阵A
下面是一个用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;
}
希望对你有帮助
原文地址: https://www.cveoy.top/t/topic/hS20 著作权归作者所有。请勿转载和采集!