这道题同样没有太多好说的,总之要细心就好了!
AC的代码:
#include <stdio.h>
#include <string.h>//先输入到一个字符数组之后在进行处理char letters[22][202];//第一行代表列
char myInput[202];void testPrint(int n)
{//测试输出int i,j;for(j=0;j<(int)strlen(myInput)/n;j++){for(i=0;i<n;i++){printf("%c ",letters[i][j]);}printf("\n");}
}void process(int N)
{int row; //行数int i=0;int j;while(i<(int)strlen(myInput)){//先判断行数奇偶,确定输入方向row=i/N;if (row%2==0){//正向输入for(j=0;j<N;j++){letters[j][row]=myInput[i];i++;}}else{//反向输入for(j=N-1;j>=0;j--){letters[j][row]=myInput[i];i++;}}}//转换完毕,测试输出//testPrint(N); //ok
}void Print(int n)
{int i,j;for(i=0;i<n;i++){for(j=0;j<(int)strlen(myInput)/n;j++){printf("%c",letters[i][j]);}}printf("\n");
}int main()
{int N;//代表输入的字符数组排成多少列while(~scanf("%d",&N) && N!=0){scanf("%s",myInput);//将输入的数组变成二维字符数组process(N);//正式输出Print(N);}return 0;
}