P216 10.写一个函数,输入一行字符,将此字符串中最长的单词输出
#include<stdio.h>
#include<string.h>
int main() {
int if_letter(char c);//判断该元素是否是一个字母
int longest(char str[]);//求出最长单词的起始位置
char string[100] = { 0 };
int i = 0;
printf("请输入一行字符:");
gets(string);
printf("最长的单词为:");
//输出"最长的单词
for (i = longest(string); if_letter(string[i]); i++) {
printf("%c", string[i]);
}
printf("\n");
return 0;
}
//判断该元素是否是一个字母
int if_letter(char c) {
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
return 1;
}
else {
return 0;
}
}
//求出最长单词的起始位置
int longest(char str[]) {
int i = 0, flag = 1, point = 0, place = 0,len=0, length = 0;
for (i = 0; i < strlen(str); i++) {
if (if_letter(str[i])) {//当元素是字母时
if (flag) {
point = i;//记录字母的起始位置
flag = 0;//遇到字母,flag=0,开始计数
}
else {
len++;//计算单词的字母个数
}
}
else {
flag = 1;//使flag=1,准备计算下一个单词
if (len >= length) {//将每个单词的长度比较
place = point;//记录较长单词的起始位置
length = len;//最长单词的长度
len = 0;//清零,重新计算下一个单词的长度
}
}
}
return place;//返回最长单词的起始位置
}
运行结果: