MT2034竖直打印机 百度之星码题集OJ

一.问题

1.题目

小码哥买了一台很神奇的打印机,它能竖直地打印单词,给一个字符串,他能按单词出现的顺序竖直返回单词。

单词应该以字符串列表的形式返回,必要时用空格补位,但输出尾部的空格需要删除(不允许尾随空格)。

必要时以空格补位指的是:在竖直打印单词过程中,若出现中间的单词长度小于相邻两个单词长度,会有某行该单词没有字母的情况,这时用空格补位。

输出尾部空格的删除指的是:输出最后一行的末尾没有空格。

现要求你按照要求复制一个打印机。

2.格式

输入格式:

一行含空格的字符串。

输出格式:

按列输出的字符串(以每行为字符串的形式输出)。

3.样例 1

输入:

CONTEST IS COMING

输出:

CIC
OSO
N M
T I
E N
S G
T

4.备注

1≤s.length≤2001≤s.length≤200,保证两个单词之间只有一个空格,且全是大写字母。

5.本题相关知识点: 算法基础:模拟

6.难度:黄金

二.解题

#include<iostream>
#include<cstring>

int main(){
char arry[200][200],temp[200];
int j=0,max=0;//用j记录用空格隔开的字符串数量,用max记录最大字符串的长度

while(1){
    scanf("%s",temp);//每次循环按顺序输入一个用空格隔开的字符串
    for(int i=0;i<strlen(temp);i++){
arry[i][j]=temp[i];//字符串每个字母竖着赋值给二维数组
    }
    j++;//更新字符串数量
    max=strlen(temp)>max?strlen(temp):max;//更新每个字符串的最大长度
       if(getchar()=='\n'){//当输入为换行时跳出循环
        break;
    } 
}


for(int x=0;x<max;x++){//按行输出字符串,当数组未赋值字符时输出空格
    for(int y=0;y<j;y++){
    	if(arry[x][y]>='A')
    	printf("%c",arry[x][y]);
        else
         printf(" ");
        
    }
    printf("\n");
}
    return 0;
}

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值