http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=show_problem&problem=431
题意:把输入的多个字符串,顺时针旋转后输出。就像中国古文里竖着写字一样,要从右读到左。
解题:考虑到要好多空格,直接先格式化字符串数组为空格,输入字符串的时候只复制内容进去,再换个角度输出字符串数据。
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int MAXN = 100;
const int MAXLENGTH = 100;
int main()
{
char szStr[MAXN+1][MAXLENGTH+1];
char str[MAXLENGTH+1];
int nCount;
int max=0;
nCount = 0;
memset(szStr, ' ', (MAXN+1)*(MAXLENGTH+1));
while ( cin.getline(str, MAXLENGTH+1) )
{
int len = strlen(str);
if ( len > max )
{
max = len;
} // end if
for ( int i=0; i<len; i++ )
{
szStr[nCount][i] = str[i];
} // end for
nCount++;
} // end while
for ( int j=0; j<max; j++ )
{
for ( int i=nCount-1; i>=0; i-- )
{
cout <<szStr[i][j];
} // end for
cout <<endl;
} // end for
return 0;
}