一、需求分析:
統計程式中有的字元個數,行數以及單詞數量。
思路設計:
通過對題目要求個人了解和同學的讨論,我認為通過對行,字元和詞數分别用函數統計:
行數的統計我用了:int isrand(char c, int &randnum)。
對單詞的統計我用了這個函數:int isWord(char c, int &wordnum)。單個字母和由多個字母組成的預設為都是單詞。
對字元的統計運用了這個函數:int ischaracter(char c)。字元統計時兩個單詞之間的空格,括弧,等号等也算為一個字元了。
在主函數(main函數)中分别調用這三個函數可以簡單的實作對字元、行數和單詞的統計。
二、關鍵詞的解釋:
rand=0:初始化行數為零,rand含義為行數的統計。
word=0:初始化單詞為零,word含義為單詞的數量。
character=0:初始化字元數為零,character為字元的統計。
三、運作調試:
1.當輸入所有源程式時運作結果和系統統計結果一樣,行數為:63.單詞為:111.字元總數為:905.
2.用簡單的輸入檢測字元和單詞的統計是否正确。
輸入:c = getchar()
理論輸出結果:
行數:1
單詞輸出:2
字元輸出:13
運作截圖:
3.在進行其他的幾組資料的運作檢驗:
運作如圖:
四、個人心得體會:
題目的基本要求不是太困難,就是對基礎知識的要求很高。一開始想着将要檢測的資料存儲在檔案裡,但是折騰了整整半天在vs2013環境下無法将檔案資料打開,但是在vc6.0中同樣的代碼可以運作,這要求我要積極去深入了解vs2013編譯環境,不明白的一些問題在網上也有一些解釋,需要自己去了解和消化。
程式設計中每一次要将自己的代碼風格标準化,模仿别人的程式設計習慣,慢慢培養自己的習慣,要堅持。标準化自己函數的定義,既友善了自己将來的閱讀,又為别人讀懂自己的代碼做了必要的工作。每一次程式設計都是對自己的一次鍛煉。
源代碼:
#include <stdio.h>
#include<Windows.h>
int isrand(char c, int &randnum)//判斷是否換行
{
if (c == '\n')
{
randnum++;
if (randnum == 1)
return 1;
else
return 0;
}
else
if (randnum>0)
randnum = 0;
return 0;
}
int isWord(char c, int &wordnum)//判斷是否單詞
if ((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z'))
wordnum++;
if (wordnum == 1)
if (wordnum>0)
wordnum = 0;
int ischaracter(char c)//判斷是否字元
if ((c<'0' || c>'9') && c != '\n')
return 1;
}
int main()
system("color 9B");
int rand = 0, word = 0, character = 0;//初始化總行數 ,單詞數 ,字元數
int randnum = 0, wordnum = 0;//randnum為行數 ,wordnum為次數
char c;
printf("請輸入要檢測的程式\n");
while (randnum<2)//如果不是空行則循環
c = getchar();
rand += isrand(c, randnum);
word += isWord(c, wordnum);
character += ischaracter(c);
printf("總行數:%d\n", rand);
printf("單詞數:%d\n", word);
printf("字元數:%d", character);
system("pause");
return 0;