旋转句子
时间限制: 1S类别: 二维数组->简单
晚于: 2020-12-19 23:55:00后提交分数乘系数50%
问题描述 :
旋转句子,要求把输入的句子按顺时针旋转90度。即输入时的句子是从左至右和自上而下的显示方式,输出时变成从上到下和从右到左的显示方式。换句话说,就是输入的最后一句输出在最左边的列,输入的第一句输出在最右边的列。
输入说明 :
输入时最多100个句子(1句即一行),每句不超过100个字符。合法字符包括:换行符、空格、任何标点符、数字、小写和大写英文字母。
注意:一个句子可能不包含任何字符,即空行。
输出说明 :
按顺时针旋转90度后的那些句子。
注意:如果输入了n个句子,则输出就有n列,输出的最下面一行也有n列。可参见输出范例,每一行都有4个字符,最下面一行的第1、3、4个字符都是空格。
输入范例 :
Rene Decartes once said,
“I think, therefore I am.”
Sample Input
输出范例:
S" R
aI e
m n
pt e
lh
ei D
n e
Ik c
n, a
p r
ut t
th e
e s
r
e o
f n
o c
r e
e
s
I a
i
a d
m ,
.
"
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str[105];int m=0,strmax=0;
while(getline(cin,str[m]))
{
if(str[m].length()>strmax)
strmax=str[m].length();
m++;
}
for(int i=0;i<strmax;i++)
{for(int j=m-1;j>=0;j--)
{
if(str[j].length()>i)cout<<str[j][i];
else cout<<" ";
}
cout<<endl;}
return 0;
}
- getline只能读入string不能读入char数组
- while(getline(cin,str))读入每一行空行也读入(读入空行时将结束符(默认‘\0’)读入字符串getline结束返回cin判断cin的流是否正常(这里别纠结))
- 判断一个字符是否为ASCII码为零如果是continue继续读入下一行
- 不过这道题貌似只能按照每一行都读入输出做(空行保留)(测试的范例给的太不清晰)
#include<stdio.h>
#include<string.h>
char str[110][110];
int main()
{
int i,j,n,k;
memset(str,0,sizeof(str)); //叹为观止//
int size=0,max=0;
while(gets(str[size])){
n=strlen(str[size]);
if(n>max)
max=n;
size++;
}
for(i=0;i<size;i++)
for(j=0;j<max;j++)
if(!str[i][j])//*******奇妙至//
str[i][j]=' ';
for(j=0;j<max;j++)
{
for(i=size-1;i>=0;i--)
printf("%c",str[i][j]);
printf("\n");
}
return 0;
}
版权声明:本文为m0_50690578原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。