單詞長度(中國大學MOOC)(C語言)(Java)
阿新 • • 發佈:2019-01-03
題目內容:
你的程式要讀入一行文字,其中以空格分隔為若干個單詞,以‘.’結束。你要輸出這行文字中每個單詞的長度。這裡的單詞與語言無關,可以包括各種符號,比如“it's”算一個單詞,長度為4。注意,行中可能出現連續的空格。
輸入格式:
輸入在一行中給出一行文字,以‘.’結束,結尾的句號不能計算在最後一個單詞的長度內。
輸出格式:
在一行中輸出這行文字對應的單詞的長度,每個長度之間以空格隔開,行末沒有最後的空格。
輸入樣例:
It's great to see you here.
輸出樣例:
你的程式要讀入一行文字,其中以空格分隔為若干個單詞,以‘.’結束。你要輸出這行文字中每個單詞的長度。這裡的單詞與語言無關,可以包括各種符號,比如“it's”算一個單詞,長度為4。注意,行中可能出現連續的空格。
輸入格式:
輸入在一行中給出一行文字,以‘.’結束,結尾的句號不能計算在最後一個單詞的長度內。
輸出格式:
在一行中輸出這行文字對應的單詞的長度,每個長度之間以空格隔開,行末沒有最後的空格。
輸入樣例:
It's great to see you here.
輸出樣例:
4 5 2 3 3 4
問題分析及難點:
採用逐個字元讀入的方式"%c",並進行判斷,只有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++; } } }