C primer plus 第六版 第十一章 第十二題 程式設計練習答案

Aeron-A發表於2019-01-07

Github地址: φ(>ω<*)這裡這裡。

/*
    本次任務為編寫一個程式讀取輸入,直到讀到EOF,要求:
    1.統計並報告單詞數。
    2.統計並報告大寫字母數
    3.統計並報告小寫字母數
    4.統計並報告標點符號數
    5.統計並報告數字字元(數字)數
*/

#include<stdio.h>
#include<ctype.h>

int main(void)
{
	// 雖然可能設定一個函式處理會好一點,但是。。。。
	// 懶!!!!!!!!! -- 2019.January.7th
	char word = 0;  		// 單詞數量
	char capital = 0;		// 大寫字母
	char lowercase = 0; 	// 小寫字母
	char punctuation = 0;   // 標點符號
	char figure = 0;		// 數字
	
	char ch = 0;			// 讀取輸入
	char last = 0;			// 儲存上一個輸入,判斷是否為單詞用。

	printf("Please input :\n");

	while( (ch = getchar() ) != EOF )
	{	
		// 單詞篇
		if( (ch == ' ' || ch == '\n') && last != ' ' )
		{
			word++;
		}

		// 字母篇
		else if( isalpha(ch) )
		{
			// 小寫字母
			if( islower(ch) )
			{
				lowercase++;
			}
			// 大寫字母
			else if( isupper(ch) )
			{
				capital++;
			}
		}

		// 符號篇
		else if( ispunct(ch) )
		{
			punctuation++;
		}

		// 數字篇
		else if( isdigit(ch) )
		{
			figure++;
		}

		else		
		{
			printf("\nWorring !! Error : Line 61.\n");
		}

		last = ch;
	}


	printf("\nThere is %d words.\n", word);
	printf("\nThere is %d lowercases.\n", lowercase);
	printf("\nThere is %d capitals.\n", capital);
	printf("\nThere is %d punctuation.\n", punctuation);
	printf("\nThere is %d figures.\n", figure);

	printf("Bye ~!\n");
	getchar();

	return 0;
}

 

相關文章