OpenJudge-17:文字排版

#本人大一软件工程在读,妥妥的小菜鸟一枚,以下仅是我自己的学习心得,用来整理笔记用的,要是有什么错误,跪请各位大佬指正!!!🙏🙏🙏#

描述

给一段英文短文,单词之间以空格分隔(每个单词包括其前后紧邻的标点符号)。请将短文重新排版,要求如下:

每行不超过80个字符;每个单词居于同一行上;在同一行的单词之间以一个空格分隔;行首和行尾都没有空格。

输入

第一行是一个整数n,表示英文短文中单词的数目. 其后是n个以空格分隔的英文单词(单词包括其前后紧邻的标点符号,且每个单词长度都不大于40个字母)。

输出

排版后的多行文本,每行文本字符数最多80个字符,单词之间以一个空格分隔,每行文本首尾都没有空格。

解答:

不晓得为啥子系统显示我presentation error,大概是格式上有个什么小错吧,可是我对照输出没发现有啥问题,要是有大佬帮我看出来了,也可以告诉我鸭。现在我自己先记下来了。

我主要想着用的是scanf的缓存机制,把整篇文章放进了字符串数组中,这个地方可以看一下这篇文章https://blog.csdn.net/GuLeng______/article/details/120241297?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164119956016780271913192%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=164119956016780271913192&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-120241297.first_rank_v2_pc_rank_v29&utm_term=scanf缓存区&spm=1018.2226.3001.4187

然后就是简单的字数统计啦!

代码:

#include <stdio.h>
#include <string.h>
int main(){
	int num[100]={0};
	char a[100][40]={0};
	int word,sum=0;
	int i=0;
	scanf("%d", &word);
	for(i=0;i<word;i++){
		scanf("%s", a[i]);
		num[i]=strlen(a[i]);
	}
	for(i=0;i<word;i++){
		printf("%s",a[i]);
		sum=sum+num[i];	
		if(sum<=80 && (sum+num[i+1]+1)>80){
			printf("\n");
			sum=0;
			continue;
		}
		sum=sum+1;//这个地方把空格的计数放在后面,是怕空格计数影响转行判断(毕竟行末不放空格)
		printf(" ");//这个地方把空格放在外面,是为了不给行末放空格
	}
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值