一道c语言编程题,寻找字符串最长的单词并输出

编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词,输出最长的单词。#include<stdio.h>intmain(){chars[... 编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词, 输出最长的单词。
#include<stdio.h>
int main()
{
char s[50];
char *p1,*p2;
int i=0,b=1,j=0,MAX=0,flag=1;
printf("please input a string:");
gets(s);
for(i=0;s[i]!='/0';i++)
{
j++;
if(b==1) //程序第一次执行
if(s[i]==32)
{
p1=&s[0]; //第一次执行程序,p1默认指向第一个单词
MAX=i;//记录第一个单词的长度
j=0; //j要来计算一个单词的长度
b=0;
}
if(s[i]==32&&flag==1)
{
p2=&s[i+1];//p2记录下一个单词
flag=0;
}
if(s[i]==32)
{
if(j-1>MAX)
{
p1=p2;//让p1指向长的单词
j=0;
flag=1;//标志重置为1,方便p2记录下一个单词
}
}

}
while(*p1!='\0'&&*p1!=32) //输出最长的单词
printf("%c",p1++);
}
展开
 我来答
qwhuang2012
推荐于2016-09-16 · TA获得超过1664个赞
知道小有建树答主
回答量:1100
采纳率:0%
帮助的人:953万
展开全部
这一行写错了,p1前要加个*号:
printf("%c",p1++);
要改成
printf("%c", *p1++);

看别人写的程序很难懂,不如自己重写一下,已经测试通过:

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

int main()
{
char s[128];
char *p1, *p2;
int max=0, len=0;

printf("Input a string: ");
gets(s);

p1=s;
for (int i=0; i<strlen(s); i++)
{
if (s[i]==' ') // 如果当前字符为空格,则比较当前单词长度是否大于最大值,再将长度复位。
{
if (len>max)
{
max=len;
p2=p1;
}
len=0;
} else // 如果当前字符非空,如果当前长度为0,则表示新单词。
{
if (len==0)
p1=&s[i];
++len;
}
}
while (*p2 && *p2!=' ')
printf("%c", *p2++);
}
追问
额,你的程序我也觉得没问题,但运行的结果有错误,比如我输入the people,结果输出是the,不符合要求啊
追答
抱歉,是没把字符串结束符考虑进去,稍微改一下,请测试:

#include
#include

int main()
{
char s[128];
char *p1, *p2;
int max=0, len=0;

printf("Input a string: ");
gets(s);

p1=s;
for (int i=0; imax)
{
max=len;
p2=p1;
}
len=0;
} else // 如果当前字符非空,如果当前长度为0,则表示新单词。
{
if (len==0)
p1=&s[i];
++len;
}
}
while (*p2 && *p2!=' ')
printf("%c", *p2++);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式