7-280 逆时针旋转字符方阵
分数 10
作者 usx程序设计类课程组
单位 绍兴文理学院
给你一个n阶字符方阵,请你给出经过k次逆时针方向旋转后的结果。
输入格式:
输入数据的第一行为一个正整数T, 表示测试数据的组数。然后是T组测试数据。每组测试数据的第一行输入两个整数n,k(1<n<20,1<=k<200),接下来输入n行数据,每行包括n个小写英文字母。
输出格式:
对于每组测试,输出字符方阵经过k次逆时针方向旋转后的结果。
输入样例:
2
2 1
ab
ba
2 2
ab
ba
输出样例:
ba
ab
ab
ba
#include<stdio.h>
int main(){
int n, k, T;
scanf("%d", &T);
while(T--){ //T组数据
scanf("%d", &n); //n阶
scanf("%d", &k);//k次逆时针旋转
char arr[n][n];
char temp[n][n];
for(int i = 0; i < n; i++)
scanf("%s", arr[i]);
//逆时针旋转
int m = 0;
while(k--){
for(int i = n - 1; i >= 0; i--){
for (int j = 0; j < n; j++){
temp[m][j] = arr[j][i];
} //以列为单位逆置
m++;
}
m = 0; //m用完记得归零 用于下次使用
for(int i = 0; i < n; i++){
for (int j = 0;j < n;j++){
arr[i][j] = temp[i][j];
}
}
}
//输出
for(int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
printf("%c", temp[i][j]);
}
printf("\n");
}
}
return 0;
}
解题思路:
step1:以列单位逆置
step2:赋值方便再次逆置
注:输出格式
归属知识点:
数组
循环结构