网站首页 > 技术文章 正文
题目描述
给出一个 n?m 的整数矩阵,将这个矩阵顺时针旋转 90° 后输出。
输入
第一行输入两个整数 n,m。(1≤n,m≤200)
接下来 n行,每行输入 m 个元素,表示输入的矩阵。矩阵中的元素都是绝对值小于 10000的整数。
输出
输出 m行,每行 n个元素,表示旋转后的矩阵。
#include<stdio.h>
int main(){
int n,m;
scanf("%d%d", &n, &m);
int arr[205][205];
int i,j;
for (i = 0; i <n; i++){
for (j = 0; j < m; j++){
scanf("%d",&arr[i][j]);
}
}
// 分割线
printf("=================\n");
for (i = 0; i < m; i++){
for(j = 0; j < n; j++){
printf("%d", arr[n-j-1][i]); //难点?
// 如果 列数不是最后一个,则打印空格
if (j != n-1){
printf(" ");
}
}
// 如果行数不是最后一个,则打印换行
if (i != m -1){
printf("\n");
}
}
return 0;
}
变体一:矩阵水平翻转
#include<stdio.h>
// 矩阵的水平反转
int main(){
int n,m,i,j;
// 输入行与列
scanf("%d%d", &n, &m);
int arr[205][205];
// 输入矩阵
for (i =0; i < n; i++){
for (j = 0; j < m; j++){
scanf("%d", &arr[i][j]);
}
}
//打印分割线
printf("===================\n");
// 水平翻转
for (i = 0; i < n; i++) {
for (j = m-1; j >= 0; j--){
printf("%d", arr[i][j]);
// 空格
if (j != 0){
printf(" ");
} else {
printf("\n");
}
}
}
return 0;
}
变体二:竖直翻转
#include<stdio.h>
// 矩阵的竖直翻转
int main(){
int n,m;
scanf("%d%d", &n, &m);
int arr[205][205];
int i,j;
// 依次输入矩阵元素
for (i = 0; i < n; i++){
for (j = 0; j < m; j++){
scanf("%d", &arr[i][j]);
}
}
// 分割线
printf("=====================\n");
// 矩阵的竖直翻转, n: 行元素变化; m; 列元素不变;
for (i = n -1; i >= 0; i--){
for (j = 0; j < m; j++){
printf("%d", arr[i][j]);
// 空格
if (j != m-1){
printf(" ");
} else {
printf("\n");
}
}
}
return 0;
}
变体三、选择翻转类型
#include<stdio.h>
int main(){
int n,m, i,j, mode;
// 输入行与列
scanf("%d%d", &n, &m);
int arr[205][205];
//依次输入矩阵的元素
for (i =0; i < n; i++){
for (j=0; j <m; j++){
scanf("%d",&arr[i][j]);
}
}
scanf("%d", &mode);
printf("===================\n");
if (mode == 1){
// 水平翻转
for (i = 0; i < n; i++) {
for (j = m-1; j >= 0; j--){
printf("%d", arr[i][j]);
// 空格
if (j != 0){
printf(" ");
} else {
printf("\n");
}
}
}
}
else if (mode == 0){
// 矩阵的竖直翻转, n: 行元素变化; m; 列元素不变;
for (i = n -1; i >= 0; i--){
for (j = 0; j < m; j++){
printf("%d", arr[i][j]);
// 空格
if (j != m-1){
printf(" ");
} else {
printf("\n");
}
}
}
}
return 0;
}
- 上一篇: 大话C语言:逗号运算符及运算法优先级
- 下一篇: 大话C语言:函数(c语言函数视频讲解)
猜你喜欢
- 2024-09-12 c++ printf 到 std::cout(c++怎么用printf输出整数)
- 2024-09-12 C 语言未初始化的局部变量是多少?
- 2024-09-12 大话C语言:函数(c语言函数视频讲解)
- 2024-09-12 大话C语言:逗号运算符及运算法优先级
- 2024-09-12 C语言学习篇(14)-----sizeof运算符
- 2024-09-12 C语言 include的用法(c语言include的用法与搭配)
- 2024-09-12 C语言的位运算基本操作演示(c语言位运算的运算规则)
- 2024-09-12 编写一个C程序,输入a,b,c三个值,输出其中最大值
- 2024-09-12 C语言如何实现大数相加(c语言大数相加思路)
- 2024-09-12 看了这几个C语言例子,你一定会说5个哇塞,声音一次比一次大
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)