输入
一个以'.'结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式和其它特殊形式
输出
该句子中最长的单词。如果多于一个,则输出第一个
样例输入
I am a student of Peking University.
样例输出
University
#include <stdio.h>
#include <string.h>
int main(void)
{
char ch[200][20];
int len[200]; // 每个单词的长度
int max = 0, i = 0; // 最长单词、循环变量
int max_i = 0; //最长单词的index
for (i = 0; ; ++i)
{
scanf("%s", ch[i]);
len[i] = strlen(ch[i]);
if (len[i] > max)
{
max = len[i];
max_i = i;
}
if (ch[i][len[i] - 1] == '.')
break;
}
int l = strlen(ch[max_i]);
if (ch[max_i][l-1] != '.')
{
printf("%s\n", ch[max_i]);
}
else
{
ch[max_i][l-1] = '\0';
printf("%s\n", ch[max_i]);
}
return 0;
}
找到原因了a b cdd eff.会输出eff,应该输出第一个最长的,
这里eff就是最长的,因为我把标点符号算到长度里去了。
#include <stdio.h>
#include <string.h>
int main(void)
{
char ch[200][20];
int len[200];
int max = 0;
int max_i = 0, i = 0;
for (i = 0; ; ++i)
{
scanf("%s", ch[i]);
len[i] = strlen(ch[i]);
if (len[i] > max)
{
max = len[i];
max_i = i;
}
if (ch[i][len[i] - 1] == '.')
{
ch[i][len[i] - 1] = '\0';
break;
}
}
int k = strlen(ch[max_i]);
for ( i = 0; i <= max_i; ++i)
{
if (len[i] == k)
{
max_i = i;
}
}
printf("%s\n", ch[max_i]);
return 0;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。