簡單的字串處理

weixin_47661140發表於2020-12-26

小菜雞第一次被迫寫個題解,請大佬批評指正

**題目:**你的程式要讀入一行文字,其中以空格分隔為若干個單詞,以.結束。你要輸出每個單詞的長度。這裡的單詞與語言無關,可以包括各種符號,比如it’s算一個單詞,長度為4。注意,行中可能出現連續的空格;最後的.不計算在內。
輸入格式:
輸入在一行中給出一行文字,以.結束

提示:用scanf("%c",…);來讀入一個字元,直到讀到.為止。

輸出格式:
在一行中輸出這行文字對應的單詞的長度,每個長度之間以空格隔開,行末沒有最後的空格。

輸入樣例

It’s great to see you here.

輸出樣例:

4 5 2 3 3 4

#include <bits/stdc++.h>
using namespace std;

int main()
{

char c;
int n,flag=1;
char jump=' ';
char end='.';
scanf("%c",&c);//先輸讀一個人字元,就不要擔心後面輸出要減一
while(c!=end)//讀到字元'.'程式就截止
{
	if(c==jump)
	{
	      if(n!=0)//判斷遇見的空格後判斷是不是多個空個
		if(flag==1)//判斷是不是第一個字元
		{
				printf("%d",n);
				flag=0;
		}
	   else
	   {
	   	printf(" %d",n);//如果不是第一個字元則先輸出空格
	   }
	   n=0; //每遇到一次空格就清零
		
	}
	else
	{
		n++;//遇到的不適空格則加一
	}
	scanf("%c",&c);//持續輸入字元直到遇到end
}
if(n!=0)//當遇到end時候最後一次的單詞個數沒有輸出,所以再做一次判斷輸出最後一個的單詞個數
{
	if(flag==1)
	printf("%d",n);
	else
	printf(" %d",n);
}

return 0;

}

在這裡插入圖片描述連續多個空格卡了這個測試點是我沒想到的,所以被卡了蠻久了
解題思路:
根據題目給的提示用%c,一個字元一個字元的讀取,然後考慮每遇到一次空格就要輸出一次並且清零,然後就是要判斷是否是第一個字元,是就不輸出空格,直接輸出個數。最後就是多空格問題了,這裡多空格要忽略只當遇到一個空格處理。

相關文章