C語(yǔ)言-輸出一個(gè)句子中最長(zhǎng)的單詞
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
int longest_i(char * p);
char str[1000];
gets(str);//輸入
int max_i,i;
max_i = longest_i(str);//獲取最長(zhǎng)單詞的首字母下標(biāo)
//輸出這個(gè)最長(zhǎng)的單詞
for (i = max_i; isalpha(str[i]); i++)
printf("%c", str[i]);
puts("");//輸出一個(gè)換行
return 0;
}
//找到字符串中最長(zhǎng)單詞的起始下標(biāo)
int longest_i(char * p){
int maxs_index=0,i,count=0,maxl=0,dqs_index=0;
int flag=0;//1在一個(gè)單詞內(nèi) 0未在單詞內(nèi)
for (i = 0; i <= strlen(p); i++){
if(isalpha(*(p+i))){
//當(dāng)前字符是字母
if(!flag){ //如果是單詞的第一個(gè)字母
flag=1; //標(biāo)記進(jìn)入一個(gè)單詞
dqs_index = i; //這個(gè)單詞的起始下標(biāo)是i
}
count++;
}else{
//當(dāng)前字符不是字母
//如果最大長(zhǎng)度有值且當(dāng)前單詞的長(zhǎng)度大于之前的最大長(zhǎng)度,或者最大長(zhǎng)度還沒(méi)有值(當(dāng)前是第一個(gè)單詞)
if((maxl && count>maxl) || !maxl){
maxl = count;
maxs_index = dqs_index;
}
flag = 0;//標(biāo)記為非單詞狀態(tài)
count=0;//單詞長(zhǎng)度計(jì)數(shù)變量賦0
}
}
return maxs_index;
}

浙公網(wǎng)安備 33010602011771號(hào)