题干如下
2最长单词(35分)
题目内容:
输入一段英文句子(不包含标点符号),求期中最长的一个单词(如果有多个最长单词,以最左边的为准),并输出该单词。
主函数已给出,请编写函数longest( ),完善程序。
#include <iostream>
using namespace std;
int main()
{
char c1[1000];
char c2[100];
cin.getline(c1,1000);
longest(c1,c2);
cout<<c2<<endl;
return 0;
}
输入格式:
一段英文句子
输出格式:
英文句子中的最长单词
输入:in order to get true happiness,初始代码如下,输出结果为order;
#include <iostream>
using namespace std;
void longest(char *sentence,char *word)
{
int m=0,n=0,position=0;
for(int i=0;sentence[i]!='\0';i++)
{
if(sentence[i]>='A'&&sentence[i] <= 'z')
m++;
else
{
if(m>n)
{
n=m;
position=i-m;
}
m=0;
}
}
for(int i=0;i<n;i++)
{
word[i]=sentence[i+position];
}
word[n]=0;
}
int main()
{
char c1[1000];
char c2[100];
cin.getline(c1,1000);
longest(c1,c2);
cout<<c2<<endl;
return 0;
}
而改成以下代码后输出结果就变成happiness,请问初始代码为什么错了
#include <iostream>
using namespace std;
void longest(char *sentence,char *word)
{
int m=0,n=0,position=0;
for(int i=0;i==0||sentence[i-1]!='\0';i++)
{
if(sentence[i]>='A'&&sentence[i] <= 'z')
m++;
else
{
if(m>n)
{
n=m;
position=i-m;
}
m=0;
}
}
for(int i=0;i<n;i++)
{
word[i]=sentence[i+position];
}
word[n]=0;
}
int main()
{
char c1[1000];
char c2[100];
cin.getline(c1,1000);
longest(c1,c2);
cout<<c2<<endl;
return 0;
}