1. 程式人生 > >單詞長度(中國大學MOOC)(C語言)(Java)

單詞長度(中國大學MOOC)(C語言)(Java)

題目內容:
你的程式要讀入一行文字,其中以空格分隔為若干個單詞,以‘.’結束。你要輸出這行文字中每個單詞的長度。這裡的單詞與語言無關,可以包括各種符號,比如“it's”算一個單詞,長度為4。注意,行中可能出現連續的空格。
輸入格式:
輸入在一行中給出一行文字,以‘.’結束,結尾的句號不能計算在最後一個單詞的長度內。
輸出格式:
在一行中輸出這行文字對應的單詞的長度,每個長度之間以空格隔開,行末沒有最後的空格。
輸入樣例:
It's great to see you here.
輸出樣例:

4 5 2 3 3 4

問題分析及難點:

採用逐個字元讀入的方式"%c",並進行判斷,只有3種情況

  1. 字元為' ',為空格,此時需要輸出字元的計數,然後歸零
  2. 字元為'.',為結尾符,此時輸出字元的計數,而且不用再加上空格了
  3. 字元為字母的字元,此時字元計數量加一
#include<stdio.h>
int main()
{
	int cnt = 0;			//字元計數量 
	char c;					//字元變數 
	scanf("%c",&c);
	while(c!='.'){			//只要不為結尾符,就迴圈讀入 
		if(c==' '){
			if(cnt)			//考慮極端情況,所以不為零才輸出 
				printf("%d ",cnt);
					
			cnt = 0;		//計數歸零 
		}
		else
			cnt++;
		scanf("%c",&c);		//迴圈讀入 
	}
	
	if(cnt)					//此時遇到結尾符退出迴圈了 
		printf("%d",cnt);
		
	return 0;
} 
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		String str;	
		str = in.nextLine();
		int cnt = 0;
		for(int i = 0;i<str.length();i++) {
			char c = str.charAt(i);
			if(c == ' ') {
				if(cnt != 0) {
					System.out.print(cnt);
					System.out.print(" ");
				}					
				cnt = 0;
			}
			else if(c=='.') {
				if(cnt != 0)
					System.out.print(cnt);
			}
			else 
				cnt++;
		}
	}

}