旋转字符串

旋转句子
时间限制: 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;
}

  1. getline只能读入string不能读入char数组
  2. while(getline(cin,str))读入每一行空行也读入(读入空行时将结束符(默认‘\0’)读入字符串getline结束返回cin判断cin的流是否正常(这里别纠结))
  3. 判断一个字符是否为ASCII码为零如果是continue继续读入下一行
  4. 不过这道题貌似只能按照每一行都读入输出做(空行保留)(测试的范例给的太不清晰)
#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;  
}  
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值