日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C Primer Plus 第7章 C控制语句:分支和跳转 7.4 一个统计字数的程序

發(fā)布時間:2023/12/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C Primer Plus 第7章 C控制语句:分支和跳转 7.4 一个统计字数的程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

首先,這個程序應該逐個讀取字符,并且應該有些方法判斷何時停止;第二,它應該能夠識別并統(tǒng)計下列單位:字符、行和單詞。下面是偽代碼描述:

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

前面已經有輸入循環(huán)的模型了:

while ((ch=getchar())!=STOP) {.... }

這里的STOP代表通知輸入結束的ch取值。現(xiàn)在我們暫且選擇一個在文本中不常見的字符(|)。

現(xiàn)在來考慮一下循環(huán)體。因為程序使用getchar()來輸入字符,所以可以在每個循環(huán)周期通過遞增一個計數(shù)器的值來統(tǒng)計字符 。為了統(tǒng)計行數(shù),程序可以檢查換行符。如果字符 是換行符,程序就遞增行數(shù)計數(shù)器的值。有個問題是如果STOP字符出現(xiàn)在一行的中間該 怎么辦?行數(shù)計數(shù)應不應該增加呢?一種做法是將它作為一個不完整的行統(tǒng)計,也就是說,該行有字符 而沒有換行符。可以通過追蹤前一個字符來識別這種情況 。如果STOP之前所讀入的最后一個字符不是換行符,就計數(shù)一個不完整行。

最棘手的部分是識別單詞,首先,必須明確定義一個單詞意味著什么。讓我們以一個相對簡單的方法將一個單詞定義為不包含空白字符的一系列字符。一個單詞以程序首次遇到非空白字符開始,在下一個空白字符出現(xiàn)時結束。使用ctype.h中的isspace( )函數(shù)會更簡單。如果C是空白字符,isspace(c)為真,如果c不是空白字符!isspace(c)為真。

為了知道一個字符是不是在某單詞里,可以在讀入一個單詞的首字符時把一個標志(命名為inword)設置為1。也可以在此處遞增單詞的計數(shù)。

然后,只要inword保持為1,后續(xù)的非空白字符就不標記為一個單詞的開始。到出現(xiàn)下一個空白字符時,必須將此標志重置為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變?yōu)?時對單詞計數(shù)。

//word.c --統(tǒng)計字符、單詞和行 #include <stdio.h> #include <ctype.h> #include <stdbool.h> #define STOP '|' int main(void) {char c ; //讀入字符char prev; //前一個字符long n_chars=0L; //字符數(shù)int n_lines=0; //行數(shù)int n_words=0; //單詞數(shù)int p_lines=0; //不完整的行數(shù)bool inword=false; //如果c在一個單詞中,則inword等于trueprintf("Enter text to be analyzed(| to terminate): \n");prev='\n'; //用于識別完整的行while((c=getchar())!=STOP){n_chars++; //統(tǒng)計字符if(c=='\n')n_lines++; //統(tǒng)計行數(shù)if(!isspace(c)&&!inword){inword=true; //開始一個新單詞n_words++; //統(tǒng)計單詞}if(isspace(c)&&inword)inword=false; //到達單詞尾部prev=c; //保存字字符值}if(prev!='\n')p_lines=1;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

總結

以上是生活随笔為你收集整理的C Primer Plus 第7章 C控制语句:分支和跳转 7.4 一个统计字数的程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。