1. 程式人生 > >C語言:找出一句話裡面的最長的單詞

C語言:找出一句話裡面的最長的單詞

C語言:找出一句話裡面的最長的單詞

我是一名在校大學生,初次寫部落格,希望各位大佬不喜勿噴,這個小程式,僅供參考,希望對大家有所幫助。
首先,分析題意,我們需要將一句話裡面的單詞數量統計出來,才能比較哪個單詞最長
所以,我們遍歷字串陣列,以空格為單詞的結束符標識,定義三個引數,start(單詞的開始下標位置),end(單詞的結束下標位置),length(單詞的長度)
在for迴圈執行的時候,我們先對end進行賦值,然後llength=end-start,最後對start賦值。具體程式碼如下所示。
在這個程式中,我們最後並沒有按照傳統的方法,使用**spilt()**函式將字串陣列按照單詞拆分插入到一個新的陣列中,而是定義一個引數 j

,儲存當前length最大的時候的start值,這樣我們最後就可以將最長單詞儲存並輸出出來。

#include <stdio.h>
//------------------------定義陣列長度
#define N 20
//------------------------函式宣告
void Entering(char *str,int n);
void Export(char str[],int n);
void LongestWord(char str1[],char *str2,int n,int *a);
int main(){
	int a=0;
	char str1[N];
	char str2[N];
	Entering(str1,N);
	LongestWord(str1,str2,N,&a);
	Export(str2,a);
	return 0;
}
//------------------------輸入
void Entering(char *str,int n){
	int i;
	printf("請輸入str:");
	for(i=0;i<n;i++)
	{
		scanf("%c",&str[i]);
	}
}
//------------------------輸出
void Export(char str[],int n)
{
	int i;
	for(i=0;i<=n;i++)
	{
		printf("%c",str[i]);
	}
	printf("\n");
}
//------------------------最長單詞
void LongestWord(char str1[],char *str2,int n,int *a)
{
    printf("---------最長單詞---------\n");
    int i,j,length=0,start=0,end=0;
    for(i=0,j=0;i<n;i++)
    {
        	if(str1[i]==' ')
        	{
        		end=i;
        		if(length<end-start)
        		{
        			j=start;
        			length=end-start;
        		}
        		start=i+1;
        	}
    }
    for(i=0,j;j<end;i++,j++)
    {
        	str2[i]=str1[j];
    }
    *a=length;
}
/*
(樣例輸入:)
請輸入str:I wrote a function. It was my first function.
(樣例輸出:)
function
*/

希望多多支援呦!
在這裡插入圖片描述