文字排版(C程序设计进阶第5周)

原创 2015年11月19日 23:52:40

问题描述
给一段英文短文,单词之间以空格分隔(每个单词包括其前后紧邻的标点符号)。请将短文重新排版,要求如下:
每行不超过80个字符;每个单词居于同一行上;在同一行的单词之间以一个空格分隔;行首和行尾都没有空格。
输入
第一行是一个整数n,表示英文短文中单词的数目. 其后是n个以空格分隔的英文单词(单词包括其前后紧邻的标点符号,且每个单词长度都不大于40个字母)。
输出
排版后的多行文本,每行文本字符数最多80个字符,单词之间以一个空格分隔,每行文本首尾都没有空格。
样例输入

84
One sweltering day, I was scooping ice cream into cones and told my four children they could "buy" acone from me for a hug. Almost immediately, the kids lined up to make their purchases. The three youngest each gave me a quick hug, grabbed their cones and raced back outside. But when my teenage son at the end of the line finally got his turn to "buy" his ice cream, he gave me two hugs. "Keep the changes," he said with a smile.

样例输出

One sweltering day, I was scooping ice cream into cones and told my fourchildren they could "buy" a cone from me for a hug. Almost immediately, the kidslined up to make their purchases. The three youngest each gave me a quick hug,grabbed their cones and raced back outside. But when my teenage son at the endof the line finally got his turn to "buy" his ice cream, he gave me two hugs."Keep the changes," he said with a smile.

源码
源码一:

//注意在windows下编程控制台默认为80字符宽度,到了80个字符会自动换行,其他环境下不一定如此,所以不用作特殊处理
#include <iostream>
#include<string.h>
using namespace std;

int main()
{
    int words = 0, sum = 0;
    cin >> words;
    char str[41]={0};
    for (int i = 0; i < words; i++)
    {
        cin >> str;
        if (sum + 1 + strlen(str) > 80)
        {
            cout << endl;               
            sum = 0;        
        } 
        else if(i>0)
        {
            cout << " ";
            sum++;  
        }
        cout << str;
        sum += strlen(str);
    }
    return 0;
}

源码二:

#include<stdio.h>
#include<string.h>
#define MAX 40
#define LINE 80

int main()
{
int i, n, len;
int end = 0;
char word[MAX+1];
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%s", word);
len = strlen(word);
if (end + len +1 > LINE)
{
printf("\n");
end = 0;
} 
else if(i>0)
{
printf(" ");
end++;
}
printf("%s", word);
end += len;
}
return 0;
}
版权声明:转载请注明出处,谢谢。

相关文章推荐

[土狗之路]coursera C语言进阶习题 文字排版

编程题#3:文字排版 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。) 注意: 总时间限制: 1000ms 内存限制: 65536kB ...

[土狗之路]Coursera 北京大学C++ 魔兽世界:备战

这个是有错误的,测试案例可以通过,但是如果power给的数据大了则会崩溃,发上来是求路过的各位大侠帮忙指出错误! 题目在下面: 编程题#4:魔兽世界之一:备战 来源: POJ (Courser...

文字排版 (Coursera 程序设计与算法 专项课程2 C程序设计进阶 李戈;OpenJudge)

编程题#3:文字排版来源: POJ (http://pkuic.openjudge.cn/zz/3)注意: 总时间限制: 1000ms 内存限制: 65536kB描述给一段英文短文,单词之间以空格分隔...

Chindle文字自动排版设计

设计目标: 根据给定的轮廓和扩展函数生成中文图片。 设计思路: 从内向外逐步穷举,最坏情况下:逐个点进行测试。 基本算法: main: while not finish: ...
  • maray
  • maray
  • 2011-10-07 18:32
  • 3205

指针与二维数组练习-文字排版(C程序设计进阶 第5周)

编程题#3:文字排版 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。) 注意: 总时间限制: 1000ms 内存限制: 65536kB ...

指针与二维数组练习-计算矩阵边缘元素之和(C程序设计进阶 第5周)

编程题#1:计算矩阵边缘元素之和 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。) 注意: 总时间限制: 1000ms 内存限制: 65536k...

文字排版中的设计四原则(二)

2.重复   设计中的每一个元素都可以在整个网页中重复出现,那么对文字来说,有可能字体、字号、样式的重复,也可能是同一种类型的图案装饰、文字和图片整体的排版布局方式等。重复会给用户一种有组织和一致...

怎样设计才能让文字排版更好看(二)

二、重复   设计中的每一个元素都可以在整个网页中重复出现,那么对文字来说,有可能字体、字号、样式的重复,也可能是同一种类型的图案装饰、文字和图片整体的排版布局方式等。重复会给用户一种有组...

C02-程序设计基础提高班(C++)第5周上机任务

第5周:阅读教材第4章(p88-133),主要内容是函数(回到C02-程序设计基础提高班(C++)学习安排)1. 求满足条件n=a!+b!+c!的所有三位数n并输出,要求用自定义函数实现求阶乘。参考程...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)