用C语言编写一个输入3x3的二维数组再将它转置的程序
时间: 2024-02-23 11:57:57 浏览: 25
以下是一个简单的 C 语言程序,它从用户输入一个 3x3 的二维数组,然后将其转置。
```c
#include <stdio.h>
int main()
{
int a[3][3], b[3][3];
int i, j;
printf("Enter a 3x3 matrix:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
scanf("%d", &a[i][j]);
}
}
// 转置矩阵
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
b[i][j] = a[j][i];
}
}
// 打印转置矩阵
printf("Transposed matrix:\n");
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
printf("%d ", b[i][j]);
}
printf("\n");
}
return 0;
}
```
该程序首先要求用户输入一个 3x3 的矩阵,然后通过两个嵌套的循环将其转置到另一个矩阵中,最后打印转置矩阵。
相关问题
运用C语言的指针将一个3X3的整型二维数组转置
可以使用以下代码来实现一个3x3的整型二维数组转置:
```c
#include <stdio.h>
void transpose(int arr[][3], int size){
int i, j, temp;
for(i = 0; i < size; i++){
for(j = i+1; j < size; j++){
temp = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = temp;
}
}
}
int main(){
int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int i, j;
printf("Original array:\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++){
printf("%d ", arr[i][j]);
}
printf("\n");
}
transpose(arr, 3);
printf("\nTransposed array:\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++){
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
```
在这个代码中,我们定义了一个`transpose`函数来执行转置操作。该函数接受一个二维数组和数组的大小作为参数,并使用两个嵌套的循环来对数组进行转置。在主函数中,我们首先打印出原始的二维数组,然后调用`transpose`函数来转置它,最后再打印出转置后的数组。
运行这个程序,我们可以得到以下输出:
```
Original array:
1 2 3
4 5 6
7 8 9
Transposed array:
1 4 7
2 5 8
3 6 9
```
可以看到,原始的二维数组被成功地转置了。
c语言3x3二维数组转置
### 回答1:
可以使用两层循环来实现3x3二维数组的转置,具体代码如下:
int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int i, j, temp;
for(i = ; i < 3; i++){
for(j = i; j < 3; j++){
temp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = temp;
}
}
转置后的数组为:
1 4 7
2 5 8
3 6 9
### 回答2:
C语言中的3x3二维数组转置可以通过两层循环来实现。假设我们有一个二维数组matrix[3][3],其中保存了待转置的数据。
首先,我们创建一个新的二维数组result[3][3],用来保存转置后的结果。
接下来,我们使用两层循环来遍历原始数组,并将元素的行列交换后存入新的数组中。具体步骤如下:
```c
#include <stdio.h>
int main() {
int matrix[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int result[3][3];
// 转置操作
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
result[j][i] = matrix[i][j]; // 行列交换
}
}
// 打印转置后的结果
printf("转置后的数组:\n");
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
printf("%d ", result[i][j]);
}
printf("\n");
}
return 0;
}
```
运行上述代码,输出结果为:
```
转置后的数组:
1 4 7
2 5 8
3 6 9
```
以上就是使用C语言实现3x3二维数组转置的方法。
### 回答3:
C语言中,可以使用循环结构和临时变量来实现3x3二维数组的转置操作。
首先,我们声明一个3x3的二维数组,可以命名为`matrix`,并初始化它的元素:
```
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
```
接下来,我们使用两个嵌套的循环来遍历这个二维数组,并交换对应位置的元素:
```
for (int i = 0; i < 3; i++) {
for (int j = i + 1; j < 3; j++) {
int temp = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = temp;
}
}
```
第一个循环控制行的索引,从0到2,第二个循环则控制列的索引,从当前行的下一个元素开始到数组的末尾。通过使用一个临时变量`temp`来暂存要交换的元素值,可以确保元素值的正确交换。
将二维数组元素交换完成后,`matrix`中的元素已经完成了转置操作。我们可以使用一个嵌套的循环遍历这个转置后的二维数组,并打印输出转置后的结果:
```
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
```
这样,我们就可以将原来的3x3二维数组转置后的结果打印出来。运行程序,可以得到如下输出:
```
1 4 7
2 5 8
3 6 9
```
这就是3x3二维数组转置的结果。