C語言求字串中最長單詞的長度問題

2021-07-01 01:19:30 字數 4322 閱讀 6671

1樓:

**文字:

#include "stdio.h"

#define n 1000

int main(int argc,char *argv){char s[n+1],ch;

int k,t,n;

printf("enter a text...\n");

for(n=0;nif((ch=getchar())=='\n')break;

s[n]=ch;

s[n]='\0';

for(t=k=0;n;n--){

if(s[n]>='a' && s[n]<='z' || s[n]>='a' && s[n]<='z')

t++;

else

t>k ? k=t,t=0 : t=0;

if(t>k)

k=t;

printf("%d\n",k);

return 0;

2樓:

這題目的意思不是很明確,單詞的定義是什麼?是否包含字母和其它非空格字元的串也算一個單詞?還有就是空輸入輸出的問題,圖上有no input!

和no output!字樣又是什麼意思?

比如我不輸入任何東西直接回車,或者只輸入一堆空格,這種情況下max就是0,要不要輸出?

試試我這個吧,有兩個假定:1、除了空格其它字元都算單詞;2、輸入空串直接返回,不輸出。

如果不行,那就假定其它字元不算單詞,把下面這部分

while ((*s != ' ') && (*s != 0)) //當非空格且字串未結束,累加l

替換成while ((('a' <= *s) && (*s <= 'z')) || (('a' <= *s) && (*s <= 'z'))) //當字母且字串未結束,累加l

if (*s)

s++; //非空格、非字母、非'\0',也跳過

再試試,反正各種假定都試一下

#include

void main()

if (l > max)

max = l;

}//if (max > 0) //也可以試試這個條件:輸入串中沒有任何單詞不輸出

printf("%d", max);}

3樓:羽絨服

是不是題目還有其他要求啊

c語言 在字串中找到最長單詞

4樓:匿名使用者

實現本功能,需要按以下步驟進行程式設計:

1、確定單詞分隔符,一般情況為空格和標點符號,根據題目情況來確定標點符號是否算在單詞中。 假定單詞不包括標點符號,即全由字母組成

2、根據上面的特點,讀取一個單詞

3、計算單詞長度

4、與當前最大單詞長度max(初值為0)比較,如果大於max,則記錄下當前單詞,並將其長度賦值給max

5、重複2-4,直到讀單詞結束(到字串尾)。

6、輸出最長單詞長度和單詞

7、例程:

#include

#include

#define m 1000

int main()

high_temp = i-1;

if(temp > count)

}for(i = low; i <= high; i++)return 0;}

5樓:匿名使用者

我新寫了一個,你看下吧, 主要用到了strtok()這個函式, 這個函式在做字串切割時很有用的...

/*問題描述:

c語言 在字串中找到最長單詞

*/#include

#include

#include

#define max_string_len 100void findthemaxlen(char* string)printf("最長的字串是: %s\n", buf);

free(buf);

buf = null;

}void main()

;printf("請輸入一個字串: \n");

gets(string);

findthemaxlen(string);}

6樓:匿名使用者

何必那麼複雜,一邊掃描輸入字串,一邊計算當前單詞的長度,如果當前單詞的長度大於記錄的長度,就把當前單詞存下來,看我的例程吧。(我的演算法判斷是否是單詞的依據是,只要不是英文字母的字元,就是單詞分割符,比如空格,逗號,句號,歎號之類都是分隔符)

函式 isalphabetic 的作用是判斷一個字元是否是26個英文字母中的一個, 函式 func 的作用是掃描輸入字串,找到最長的那個單詞並列印。

#include

#include

int isalphabetic(char ch)return 0;

}void func(char *pstr)if (max_len < (j - i))i = j;

}else

}if (max_len > 0)

printf("longest word is \'%s\'\n", result);

}int main()

7樓:匿名使用者

#include

#include

#include

#include

void p(char *cs)

if (cs[0]=='\0')

}printf("最長的單詞為:%s\n",mp);

}int main(void)

8樓:匿名使用者

#include "stdio.h"

#include "string.h"

void main()

}else

}printf("the longest string is:\n");

for(i=maxlength;i!=0;i--)}

9樓:

#include

#include

#include

void p(char ch[80])

else

}while(ch[i]!=0);

start=mark-maxlen;

for(i=0;i

printf("%s",out);

} int main()

c語言程式設計在一個一直的字串中查詢最長的單詞,

10樓:流浪兒

//申明一個字元陣列抄

char str[50];

//從鍵盤襲

輸入英文單

詞bai

gets(str);

int i=0;

int word=0;//標識是du否為單詞 0表示為單詞,zhi1表示不是單詞

int count=0;//統計單詞個數dao//printf("當前輸入的英文句子是:");

//puts(str);

//迴圈遍歷

while (str[i] != '\0') else if (word == 0)

i++;}

11樓:小猥瑣之葉子

給出**:

#include

#include

int main()

len=0;

} else // 如果當前字元非空,如果當前長度為0,則表示新單詞。

}while (*p2 && *p2!=' ')printf("%c", *p2++);}

12樓:異祣情思

#include

#include

int main()

len=0;

} else // 如果當前字元非空,如果當前長度為0,則表示新單詞。

}while (*p2 && *p2!=' ')printf("%c", *p2++);}

13樓:晴雨微暖

p代表泊車檔du,停車時使用(zhi

關閉發動機時和較長時dao間怠速停車)!

r代表回倒車檔!

n代表空檔

,和手動檔答的空檔一個意思,用於短暫停車時使用!

d表示前進檔,在d檔位下變速箱會在1~5檔根據速度和油門情況自動切換。

d3同樣是前進檔,可在交通不太通暢的時作為限制檔使用,可以避免3檔和4檔間的跳檔情況!

2表示2檔,此檔時,變速箱就在2檔上,用於溼滑路面起步,或者慢速前進時作為限制檔使用,可避免1和2檔以及2和3檔間的跳檔!

1就是1檔,此檔時,變速箱就在一檔。

C語言字串問題,C語言中,字串是什麼?

這迴圈需要執行4次,對應的字元就是0001,也就是說這個sc需要5個空間,加一個 0 for i 0 i 2.你這個程式每次執行的結果可能是不確定的,因為你沒有初始化sc陣列,printf以字串的形式輸出,他是遇到 0 字元才結束的,所以為了保證程式的結果是一致的,建議初始化陣列。sc 5 這樣就可...

C語言字串輸出亂碼,C語言,字串輸出是亂碼

輸出來亂碼是必須的,因為你的數源據型別搞錯了bai,你使用的是字元 du函式zhistringcopy 來拷貝字元 那麼要處理的數dao據當是char型別,然而你所定義的指標應當也是char型別 你應當修改的地方是 int str1,str2 請將int改為char 將你程式中的所有int替換為ch...

C語言字串問題

兩重圓括號純屬是多打了吧 你要是能看懂前面那條語句的話,後面那條語句其實差不多,賦值表示式的值等同於賦值號右端表示式的值,因此在str2 count2 0 的時候括號內表示式的值就是 0 也就是0,c中不存在布林型別,因此0表示假,非0皆為真。while str1 count1 str2 count...