文字排版(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;
}
版权声明:转载请注明出处,谢谢。

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

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

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

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

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

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

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

第5周:阅读教材第4章(p88-133),主要内容是函数(回到C02-程序设计基础提高班(C++)学习安排)1. 求满足条件n=a!+b!+c!的所有三位数n并输出,要求用自定义函数实现求阶乘。参考程...

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

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

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

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

QAQWQS文字排版程序.lsp

  • 2014年05月24日 20:48
  • 5KB
  • 下载

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

四项基本设计原理,对比、重复、对齐、亲密性被设计师广泛应用。它们在网页设计中对文字的排版也经常用到。   1.对比   我们将对比分为三类,有标题和正文中的字体、字号对比,文字颜色的对比,以及...
  • bwf_erg
  • bwf_erg
  • 2016年11月11日 09:51
  • 193

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

三、对齐   在网页设计中,页面上的元素不能随意摆放,每一项都要与页面内容存在某种联系。对齐也是网页设计必不可缺少的一部分,它可以帮助设计师做出非常吸引眼球的设计,这也是是优秀网页设计的潜在要求。...
  • bwf_erg
  • bwf_erg
  • 2017年03月07日 18:08
  • 72

Tomorrow never knows? (C程序设计进阶 第2周)

编程题#4:Tomorrow never knows? 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。) 注意: 总时间限制: 1000ms 内...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文字排版(C程序设计进阶第5周)
举报原因:
原因补充:

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