设计一个程序,将任何输入的字符串中的最长单词输出,并计算出其在字符串中的位置。

设计一个程序,将任何输入的字符串中的最长单词输出,并计算出其在字符串中的位置。最好用c语言
谢谢了

自己写的
#include <stdio.h>

int isLetter(char c);

void main()
{
char str[50]="";
char *p, *q;
int i=0; /*临时位置*/
int pos=0; /*最长单词位置*/
int len=0; /*临时长度*/
int max=0; /*最长单词长度*/

gets(str);
// printf("%s\n",str);

for(p=str; *p!='\0';)
{
if(isLetter(*p)==1)
{
for(q=p; isLetter(*q); q++)
{
i++;
len++;
}
if(len>max)
{
max = len;
pos = i-len;
}
p = q;
}
else
{
p++;
i++;
len = 0;
}
}

printf("\nthe position of the longest word is %d\n",pos);
printf("\nit has %d charactors,they are:\n\n",max);
for (int j=pos; j<pos+max; j++)
{
printf("%c",str[j]);
}
printf("\n");
}

int isLetter(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return 1;
else
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-01-01
 
 
 
可以好好利用 strtok 函数:

#include <stdio.h>
#include <string.h>

int main() {
    char input[99],
         copyOfInput[99],
         *token;
    size_t positionOfLongest = 0,
           lengthOfLongest = 0;

    gets(input);
    strcpy(copyOfInput, input);
    for (token = strtok(input, " \t"); token; token = strtok(NULL, " \t"))
        if (strlen(token) > lengthOfLongest) {
            lengthOfLongest = strlen(token);
            positionOfLongest = strstr(copyOfInput, token) - copyOfInput;
        }

    printf("\nPosition of the longest string: %d.\n", positionOfLongest + 1);
}