版本一:
输入英文句子(字符串),求句子中最长英文单词的长度
#include<stdio.h>
#define MAX 255
int main()
{
char str[MAX]; //设置数组能存放最大的空间
int i = 0;
int j = 0;
int max = 0;
gets(str); //输入字符串 例如: I love China!
while(str[i] != '\0' && str[j] != '\0' ){
while(str[i] == ' ') //定位单词首字母
i++;
j = i; //把j定位到i的位置,准备扫描str[i]后面的字母
while(str[j] != ' ' && str[j] != '\0') //定位单词尾字母的后一位
j++;
if(max < j - i) //如果单词长度比前面的都大,则记录
max = j - i;
i = j; //把i定位到j的位置,准备扫描str[j]后面的空格
}
printf("max = %d\n",max);
return 0;
}
输出结果为:
版本二:
求句子中最长英文单词的长度 + 打印最长单词
#include<stdio.h>
#define MAX 255
int main()
{
char str[MAX]; //设置数组能存放最大的空间
char str_1[MAX]; //用于存储最长单词
int i = 0;
int j = 0;
int k = 0;
int max = 0;
gets(str); //输入字符串 例如: I love China!
while(str[i] != '\0' && str[j] != '\0' ){
while(str[i] == ' ') //定位单词首字母
i++;
j = i; //把j定位到i的位置,准备扫描str[i]后面的字母
while(str[j] != ' ' && str[j] != '\0') //定位单词尾字母的后一位
j++;
if(max < j - i){
//如果单词长度比前面的都大,则记录
max = j - i;
for( ; i <= j ; ++i){
//把最长单词保存下来
str_1[k++] = str[i];
}
str_1[k] = '\0';
k = 0;
}
i = j; //把i定位到j的位置,准备扫描str[j]后面的空格
}
printf("\n");
printf("输出:\n");
printf("max = %d\n",max);
printf("%s\n",str_1);
return 0;
}
输出结果: