思路
1.先将字符串里的字符按位置从左到右竖着存到一个二维数组之中
2.再将二维数组,从右到左输出即可
注意:最左面第一列输出会存在多余的空格问题,而在输入的字符串数组中,这些位置已经溢出,没有值。所以可以将原字符串,再向后拓展N(最大100)个空格符号即可。
代码
#include<stdio.h>
#include<math.h>
#include<string.h>
char a[110][110];
char b[1010];
int main() {
int n,m,l;
scanf("%d",&n);
getchar();
gets(b); //gets不用c++
l=strlen(b);
for(int i=0;i<100;i++)
b[l+i]=' ';
//存二维数组
int k=1,t=0;
while(t<l){
for(int i=1;i<=n;i++){
a[i][k]=b[t++]; //当t超过l之后,不会立即跳出,会继续赋值
}k++;
}
//从右到左输出
for(int i=1;i<=n;i++){
for(int j=k-1;j>=1;j--)
printf("%c",a[i][j]);
if(i!=n)printf("\n");
}
return 0;
}