这道题目很水很水,就是输入一个字符串和整数n,对该字符串进行逆时针旋转,每次旋转45°,n代表旋转的次数。刚开始没读懂题目,以为是对字符串中的字符错位输出,wa了一次。重新写完代码还是pe一次。想要顺利的ac,还需要注意一下两点:1.整数n可以是负数;2.竖直输出字符串时需要输出字符串左边的空格(解决pe)。
下面就是我的ac代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
char s[85];
int main() {
int n;
while(~scanf("%s %d", s, &n)) {
int len = strlen(s);
n %= 8;
if(n == 0)
printf("%s\n", s);
else if(n == 7 || n==-1) {
for(int i =0; i<len; i++) {
for(int j=0; j<i; j++)
printf(" ");
printf("%c\n", s[i]);
}
}
else if(n==6 || n==-2){
for(int i =0; i<len; i++){
for(int j=0; j<len/2; j++)
printf(" ");
printf("%c\n", s[i]);
}
}
else if(n==5 || n==-3){
for(int i =0; i<len; i++) {
for(int j=len-1; j>i; j--)
printf(" ");
printf("%c\n", s[i]);
}
}
else if(n==4 || n==-4){
for(int i=len-1; i>=0; i--)
printf("%c", s[i]);
printf("\n");
}
else if(n==3 || n==-5){
for(int i =len-1; i>=0; i--) {
for(int j=0; j<len-i-1; j++)
printf(" ");
printf("%c\n", s[i]);
}
}
else if(n==2 || n==-6){
for(int i =len-1; i>=0; i--){
for(int j=0; j<len/2; j++)
printf(" ");
printf("%c\n", s[i]);
}
}
else if(n==1 || n==-7){
for(int i =len-1; i>=0; i--) {
for(int j=len-1; j>len-i-1; j--)
printf(" ");
printf("%c\n", s[i]);
}
}
}
return 0;
}