编写一个函数 void transpose(int (*matrix)[10], int n),实现对一个矩阵的前n行和前n列转置。先在主函数中初始化如下矩阵,然后输入n(n<10),调用transpose函数前n行n列的转置。C语言
时间: 2024-04-04 11:35:34 浏览: 83
好的,我来给您编写一个程序,实现对一个矩阵的前n行和前n列转置:
```c
#include <stdio.h>
void transpose(int (*matrix)[10], int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < i; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
}
int main() {
int matrix[10][10] = {
{2, 4, 6, 8, 10, 12, 14, 16, 18, 20},
{3, 6, 9, 12, 15, 18, 21, 24, 27, 30},
{4, 8, 12, 16, 20, 24, 28, 32, 36, 40},
{5, 10, 15, 20, 25, 30, 35, 40, 45, 50},
{6, 12, 18, 24, 30, 36, 42, 48, 54, 60},
{7, 14, 21, 28, 35, 42, 49, 56, 63, 70},
{8, 16, 24, 32, 40, 48, 56, 64, 72, 80},
{9, 18, 27, 36, 45, 54, 63, 72, 81, 90},
{10, 20, 30, 40, 50, 60, 70, 80, 90, 100},
{11, 22, 33, 44, 55, 66, 77, 88, 99, 110}
};
int n, i, j;
printf("请输入n的值:");
scanf("%d", &n);
printf("原始矩阵:\n");
for (i = 0; i < 10; i++) {
for (j = 0; j < 10; j++) {
printf("%d\t", matrix[i][j]);
}
printf("\n");
}
transpose(matrix, n);
printf("转置后的矩阵:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%d\t", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
程序的详细解释如下:
1. 在主函数中定义了一个10行10列的矩阵,并初始化了其元素的值。
2. 通过`scanf()`函数从标准输入流中读取n的值。
3. 输出原始矩阵。
4. 调用`transpose()`函数,对前n行和前n列进行转置。
5. 输出转置后的矩阵。
其中,`transpose()`函数的作用是对前n行和前n列进行转置,具体实现为使用两个循环嵌套遍历前n行和前n列的元素,并将第i行第j列的元素和第j行第i列的元素进行交换。
阅读全文