UVA 490 Rotating Sentences
题意:将n(n<100)行字符串顺时针旋转90度输出,每行字符数少于100个。
Sample Input:
Rene Decartes once said,
“I think, therefore I am.”
Sample Output:
“R
Ie
n
te
h
iD
ne
kc
,a
r
tt
he
es
r
eo
fn
oc
re
e
s
Ia
i
ad
m,
.
“
题解:原本想着用动态数组的,但是查了下题解发现,用二维数组更加方便,就是 使用二维数组的时候gets(a [ i ] ) 就是把a [ i ] 看成一个数组名,然后进行gets。但是,在初始化数组的时候,memset(a , 0 , sizeof( a ))这里就是 对全部的 a 进行初始化。 然后需要记录一下 最长字符串长度,为接下来输出的时候做好准备,其实输出才是重头戏,就注意第二个循环怎么写就好了。
//UVA 490
//Rotating Sentences
//by Yanx
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
char a[110][110]; //这个二维数组都是字符型的,不过字符 ‘ 1 ’ + 1 = ‘ 2 ’
int i=0;
int max=0,count=0;
memset(a,\0,sizeof(a)); //整个二维数组初始化
while(gets(a[i])!='\0') //二维数组 所以用gets的时候有一个变量不写。
{
int len=strlen(a[i]);
if(len>max) max=len;
count++; i++;
}
for(int j=0;j<max;j++)
{
for(int k=i-1;k>=0;k--)
{
if(a[k][j]=='\0') printf(" ");
else printf("%c",a[k][j]);
}
printf("\n");
}
}