#include<stdio.h> int main() { int i,j,n; char c; char board[1000][1000]; char T[1000][1000]; scanf("%d",&n); for(i=0;i<=n;i++) gets(board[i]); for(i=0;i<n;i++) { for(j=0;j<n;j++) { T[j][n-i]=board[i+1][j]; } } for(i=0;i<n;i++) //(1,0)->(0,2) { for(j=0;j<=n;j++) { printf("%c",T[i][j]); } printf("\n"); } return 0; }
时间: 2023-07-14 13:00:37 浏览: 49
这段代码是一个简单的矩阵旋转程序。它接受一个整数n作为输入,然后读取n+1行字符串作为矩阵的初始状态。然后,它将该矩阵逆时针旋转90度,并输出旋转后的结果。
具体来说,它使用了两个二维字符数组board和T来表示矩阵。首先,它通过循环读取输入的n+1行字符串,并将其存储在board数组中。然后,它使用两个嵌套的循环将board数组中的字符逆时针旋转90度,并将结果存储在T数组中。最后,它通过循环遍历T数组,并将结果逐行输出。
注意,这段代码有一些问题。首先,在读取输入字符串时,应该使用`scanf("%s", board[i])`而不是`gets(board[i])`来避免缓冲区溢出问题。其次,在旋转矩阵时,数组下标的计算不正确。应该使用`T[j][n-i-1]`而不是`T[j][n-i]`来将元素存储到正确的位置。最后,在输出结果时,应该使用`printf("%c", T[i][j])`而不是`printf("%c", T[i][j])`来输出字符。
修正后的代码如下所示:
```c
#include<stdio.h>
int main()
{
int i, j, n;
char c;
char board[1000][1000];
char T[1000][1000];
scanf("%d", &n);
for (i = 0; i <= n; i++) scanf("%s", board[i]);
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
T[j][n - i - 1] = board[i + 1][j];
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j <= n; j++)
{
printf("%c", T[i][j]);
}
printf("\n");
}
return 0;
}
```
这样修改后的代码应该能够正确地旋转矩阵并输出结果。