为什么两次找出的单词不一样?

qq_36990442 2016-12-10 10:14:51
#include<stdio.h>//找出最长的单词
void p(char s[])
{
int i,k,start,max,max_start;char c1[100]={0};
i=0,max=0;
while(s[i]!='\0')
{
if( ('A'<=s[i]&&s[i]<='Z') || ('a'<=s[i]&&s[i]<='z') )
{
start=i;
k=0;
while( ('A'<=s[i]&&s[i]<='Z') || ('a'<=s[i]&&s[i]<='z') )
{
k++;
i++;
}
if(max<k)
{
max=k;
max_start=start;
}

}
else
i++;
}
printf("%c\n%c\n",s[max_start],s[max_start+k-1]);
for(i=0;i<k;i++)
c1[i]=s[max_start+i];
printf("%s\n",c1);
}
int main()
{
char c[100];
gets(c);
p(c);
return 0;
}


...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36990442 2016-12-10
  • 打赏
  • 举报
回复
找到了,刚刚看了很久就是找不出来,蒙了
pkuzhx 2016-12-10
  • 打赏
  • 举报
回复
for(i=0;i<k;i++) c1[i]=s[max_start+i]; i<max!!!! 自己调试程序是一个程序员的基本素养。
冬南风 2016-12-10
  • 打赏
  • 举报
回复
printf("%c\n%c\n",s[max_start],s[max_start+max-1]); for (i=0; i<max; i++) k改成max
northwesternwind 2016-12-10
  • 打赏
  • 举报
回复

for(i=0;i<k;i++)
c1[i]=s[max_start+i];
printf("%s\n",c1);
} 
k这个变量,是为了查找会改变的,为什么打印结果要用这个?难道不是max?

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧