c语言输入一个N*M的矩阵,要求将这个矩阵右转90度后输出。 例如矩阵:A B C 右转90度后变成: D A D E F E B F C 输入 第一行包含两个参数n和m,表示矩阵有n行m列,1<=n,m<=10 接下来输入n行数据,每行包含m个元素,每个元素用字母表示 输出 输出右转90度后的矩阵
时间: 2024-01-08 11:04:33 浏览: 135
下面是一个C语言的示例代码:
```c
#include <stdio.h>
#define MAX_N 10
#define MAX_M 10
int main() {
int n, m;
char matrix[MAX_N][MAX_M]; // 定义一个二维字符数组,存储矩阵
scanf("%d %d", &n, &m); // 输入矩阵的行数和列数
for (int i = 0; i < n; i++) {
scanf("%s", matrix[i]); // 输入每一行的数据
}
for (int j = 0; j < m; j++) {
for (int i = n - 1; i >= 0; i--) { // 从下往上遍历每一行
printf("%c", matrix[i][j]); // 输出右转90度后的字符
}
printf("\n"); // 每输出完一列换行
}
return 0;
}
```
输入样例:
```
3 3
ABC
DEF
GHI
```
输出样例:
```
GDA
HEB
IFC
```
相关问题
C语言输入一个N*M的矩阵,要求将这个矩阵右转90度后输出。 例如矩阵:A B C 右转90度后变成: D A 德英法乙 F C 输入 第一行包含两个参数n和m,表示矩阵有n行m列,1<=n,m<=10 接下来输入n行数据,每行包含m个元素,每个元素用字母表示 输出 输出右转90度后的矩阵
好的,这是一个比较典型的矩阵旋转问题。下面是一个简单的 C 语言实现:
```c
#include <stdio.h>
#define MAXN 10
int main() {
int n, m, i, j;
char a[MAXN][MAXN], b[MAXN][MAXN];
scanf("%d%d", &n, &m);
for (i = 0; i < n; ++i) {
for (j = 0; j < m; ++j) {
scanf(" %c", &a[i][j]); // 注意这里的空格,防止读入换行符
}
}
for (i = 0; i < n; ++i) {
for (j = 0; j < m; ++j) {
b[j][n-i-1] = a[i][j]; // 将 a 矩阵旋转到 b 矩阵
}
}
for (i = 0; i < m; ++i) {
for (j = 0; j < n; ++j) {
printf("%c ", b[i][j]); // 输出旋转后的矩阵
}
printf("\n");
}
return 0;
}
```
这个程序的主要思路是,首先读入原矩阵,然后将其旋转得到一个新的矩阵,最后输出该矩阵。需要注意的是,为了防止读入换行符,我们在读入每个字符时加上一个空格。
用c语言实现输入一个N*M的矩阵,要求将这个矩阵右转90度后输出
好的,针对你的问题,我可以给出如下的C语言代码实现:
```c
#include <stdio.h>
#define MAX_N 100
#define MAX_M 100
int main() {
int n, m;
int matrix[MAX_N][MAX_M];
// 读入矩阵的大小
scanf("%d %d", &n, &m);
// 读入矩阵的元素
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &matrix[i][j]);
}
}
// 将矩阵右转90度
for (int j = 0; j < m; j++) {
for (int i = n - 1; i >= 0; i--) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
```
这段代码中,我们首先读入了矩阵的大小和元素,然后通过两层循环将矩阵右转90度,并输出结果。其中,我们使用了一个二维数组 `matrix` 来存储矩阵,定义了两个常量 `MAX_N` 和 `MAX_M` 来限制矩阵的大小,避免内存溢出。
希望这个代码可以帮到你,如果还有其他问题,请随时问我。
阅读全文