睡觉觉觉得 2023-09-04 22:58 采纳率: 85.2%
浏览 11
已结题

(相关搜索:程序设计)

描述
壮壮研学结束后,写了一篇英文论文,这篇论文共有N个单词(1≤N≤100),单词之间用空格分隔。
每个单词的长度在1到15之间,仅由大写和小写字母组成。
他想尝试投稿,杂志社给出了一个特殊的排版要求:每一行包含的字符不超过K个(1<= K <=80),空格不计。
请写一个程序,以处理这样的要求,它会按照如下的方式进行排版:
如果壮壮输入了一个单词,这个单词能够放进当前行,就放在当前行;否则,将这个单词放到下一行,然后继续向下一行添加单词;
当然,同一行中的单词之间仍然用一个空格分隔。每一行的结尾都不应当有空格。
输入
输入共两行。
第一行,两个空格分隔的整数N和K。(1 <= N <= 100,1 <= K <= 80)
第二行,包含N个单词,单词之间用单个空格分隔。所有单词的长度都不超过一行中的字符上限数K。
输出
若干行。
按要求输出正确排版的论文。
输入样例 1
10 7
he1lo my name is Zhuang and this is my essay
输出样例 1
hello my
name is
Zhuang
and this
is my
essay
提示
第一行包含7个非空格字符,包括"hello”以及“my"。再加入"name"会使得第一行包含11>7个非空格字符,所以这个单词会被放到下一行。
来源
2023 广西中小学生程序设计挑战赛入门组复赛
语言: C++

  • 写回答

4条回答 默认 最新

  • threenewbee 2023-09-04 23:11
    关注
    #include <stdio.h>
    #include <string.h>
    int main()
    {
        int N, K;
        scanf("%d%d", &N, &K);
        char words[100][100];
        for (int i = 0; i < N; i++)
            scanf("%s", &words[i][0]);
        int pre = 0;
        for (int i = 0; i < N; i++)
        {
            int curr = strlen(words[i]);
            if (pre + curr > K)
            {
                printf("\n%s", words[i]);
                pre = curr;
            }
            else
            {
                if (pre > 0) printf(" ");
                printf("%s", words[i]);
                pre += curr;
            }
        }
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月14日
  • 已采纳回答 9月6日
  • 创建了问题 9月4日

悬赏问题

  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画
  • ¥15 TeleScan不能修改bar
  • ¥100 请问我基于逐飞库写的这个有关于mp u6050传感器的函数,为什么输出的值是固定的?
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息
  • ¥15 Spring Boot离线人脸识别
  • ¥15 使用Ant Design Pro vue的时候,使用环境变量的时候,构建报错是什么原因