青海网站建设价格低,小米发布会后多久可以买到新机,wordpress 主题 移动,wordpress自定义内容的小工具2019独角兽企业重金招聘Python工程师标准 首先#xff0c;这个程序应该逐个读取字符#xff0c;并且应该有些方法判断何时停止#xff1b;第二#xff0c;它应该能够识别并统计下列单位#xff1a;字符、行和单词。下面是伪代码描述#xff1a; read a cha… 2019独角兽企业重金招聘Python工程师标准 首先这个程序应该逐个读取字符并且应该有些方法判断何时停止第二它应该能够识别并统计下列单位字符、行和单词。下面是伪代码描述 read a character
while there is more inputincrement character count if a line has been read ,increment line countif a word has been read ,increment word countread next character前面已经有输入循环的模型了 while ((chgetchar())!STOP)
{....
} 这里的STOP代表通知输入结束的ch取值。现在我们暂且选择一个在文本中不常见的字符(|)。 现在来考虑一下循环体。因为程序使用getchar()来输入字符所以可以在每个循环周期通过递增一个计数器的值来统计字符 。为了统计行数程序可以检查换行符。如果字符 是换行符程序就递增行数计数器的值。有个问题是如果STOP字符出现在一行的中间该 怎么办行数计数应不应该增加呢一种做法是将它作为一个不完整的行统计也就是说该行有字符 而没有换行符。可以通过追踪前一个字符来识别这种情况 。如果STOP之前所读入的最后一个字符不是换行符就计数一个不完整行。 最棘手的部分是识别单词首先必须明确定义一个单词意味着什么。让我们以一个相对简单的方法将一个单词定义为不包含空白字符的一系列字符。一个单词以程序首次遇到非空白字符开始在下一个空白字符出现时结束。使用ctype.h中的isspace( )函数会更简单。如果C是空白字符isspace(c)为真如果c不是空白字符!isspace(c)为真。 为了知道一个字符是不是在某单词里可以在读入一个单词的首字符时把一个标志命名为inword设置为1。也可以在此处递增单词的计数。 然后只要inword保持为1后续的非空白字符就不标记为一个单词的开始。到出现下一个空白字符时必须将此标志重置为0并且程序准备搜索下一个单词。 if c is not whitespace and inword is falseset inword to true and count the word
if c is whitespace and inword is trueset inword to false 这种方法在每个单词开始时将inword设置为1而在每个单词结束时将其设置为0.仅在该标志从0变为1时对单词计数。 //word.c --统计字符、单词和行
#include stdio.h
#include ctype.h
#include stdbool.h
#define STOP |
int main(void)
{char c ; //读入字符char prev; //前一个字符long n_chars0L; //字符数int n_lines0; //行数int n_words0; //单词数int p_lines0; //不完整的行数bool inwordfalse; //如果c在一个单词中则inword等于trueprintf(Enter text to be analyzed(| to terminate): \n);prev\n; //用于识别完整的行while((cgetchar())!STOP){n_chars; //统计字符if(c\n)n_lines; //统计行数if(!isspace(c)!inword){inwordtrue; //开始一个新单词n_words; //统计单词}if(isspace(c)inword)inwordfalse; //到达单词尾部prevc; //保存字字符值}if(prev!\n)p_lines1;printf(characters%ld,words%d,lines%d,,n_chars,n_words,n_lines);printf(partial lines %d\n,p_lines);return 0;
}转载于:https://my.oschina.net/idreamo/blog/693719