标签:22 int 练习 pos sign 空格 ++ 程序设计 array
问题描述
练习1-22 编写一个程序,把较长的输入行“折”成短一些的两行或者多行,折行的位置在输入行的第N列之前的最后一个非空格之后。要保持程序能够智能地处理输入行很长以及在制定的列前没有空格或者制表符时的情况。
Write a program to "fold" long input lines into two or more shorter lines after the last non-blank character that occurs before the n-th column of input. Make sure your program does something intelligent with very long lines, and if there are no blanks or tabs before the specified column.
解题思路
我写的程序和答案有些出入,标准答案我大致浏览了一下,感觉很麻烦,所以下面的代码是我自己的思路,并且运行结果符合题目要求
首先,我们先来分析一下题目要求:
1.把长行分成两行或几行,例如把10个a,分成两行5个a
把下面这一行:
aaaaaaaaaa
变成:
aaaaa
aaaaa
2.把空格分开的同一行的几段分为几行:
11111 22222 33333 分为: 11111 22222 33333
了解了题目要求后,我们知道要规定一个值,当字符串长度大于这个值之后要分行,还有,遇到第一个空格要分行
代码如下
#include<stdio.h> #define MAXLEN 1024 #define MAX 10//字符串长度大于这个值后要分行 int getlines(int array[] , int maxlen);//将输入读入数组,并且在回车后输出结果 int getlines(int array[] , int maxlen) { int c,i; for ( i = 0; i < maxlen-1 && (c=getchar())!=EOF && c!='\n'; i++) { array[i] = c; } if (c=='\n') { array[i] = c; i++; } array[i] = '\0'; return i; } int main() { int array[MAXLEN]; int len; int i; int sign=1;//若是第一个空格,值为1,否则为0 int pos=0;//连续字符个数计数器 while ((len=getlines(array , MAXLEN)) > 0) { for(i = 0 ; i < len ; i++) { if (array[i]==' ') { if (sign==1) { putchar('\n'); sign=0; pos = 0; } }else { pos++; if (pos>MAX) { putchar('\n'); pos = 0; } putchar(array[i]); sign=1; } } pos = 0; } return 0; }
运行结果
标签:22,int,练习,pos,sign,空格,++,程序设计,array 来源: https://www.cnblogs.com/jerryleesir/p/12827973.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。