#本人大一软件工程在读,妥妥的小菜鸟一枚,以下仅是我自己的学习心得,用来整理笔记用的,要是有什么错误,跪请各位大佬指正!!!🙏🙏🙏#
描述
给一段英文短文,单词之间以空格分隔(每个单词包括其前后紧邻的标点符号)。请将短文重新排版,要求如下:
每行不超过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(" ");//这个地方把空格放在外面,是为了不给行末放空格
}
}