#include<stdio.h>
#include<string.h>
int main()
{
int pd(char x);
int longest(char y[80]);
char a[80];
int i;
printf("输入一行字符:\n");
gets(a);
printf("其中最长的单词为:\n");
for(i=longest(a);pd(a[i]);i++)
printf("%c",a[i]);
return 0;
}
int pd(char x) //判断是否为字母
{
int z;
if(x>='a'&&x<='z'||x>='A'&&x<='Z')
z=1;
else z=0;
return z;
}
int longest(char y[80])
{
int n,i,start=1,length=0,point,len=0,place=0; //start=1表示开始一个新单词
n=strlen(y); //length表示单词长度,len用来存放单词的最大长度,point表示新单词的位置
for(i=0;i<=n;i++) //place表示最长单词的位置
{
if(pd(y[i]))
{

if(start) //如果出现一个新单词,记录它的位置
{
point=i;
start=0; //归为一个单词
}
else length++;
}
else
{
start=1;
if(length>=len)
{
len=length;
place=point;
length=0;
}
}
}
return place;
}

#include<stdio.h>
#include<string.h>
int main()
{
int pd(char x);
int longest(char y[]);
char a[80];
int i;
printf("输入一行字符:\n");
gets(a);
printf("其中最长的单词为:\n");
for(i=longest(a);pd(a[i]);i++)
printf("%c",a[i]);
return 0;
}
int pd(char x) //判断是否为字母
{
int z;
if(x>='a'&&x<='z'||x>='A'&&x<='Z')
z=1;
else z=0;
return z;
}
int longest(char y[]) {
int i = 0, len = 0, max_len = 0, start_idx = 0, max_start_idx = 0;
while(y[i] != '\0') {
if(pd(y[i])) {
if(len == 0) {
start_idx = i; // 记录新单词的起始下标
}
len++;
} else {
if(len > max_len) {
max_len = len;
max_start_idx = start_idx; // 记录最大单词起始下标
}
len = 0;
}
i++;
}
// 如果最后一个单词比其他单词更长,则更新 max_len 和 max_start_idx
if(len > max_len) {
max_len = len;
max_start_idx = start_idx;
}
return max_start_idx;
}