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