qq_36424540 2017-03-07 15:34 采纳率: 87.5%
浏览 2687
已采纳

找出语句中中最长的单词

#include
#include
void function(char str[]); /*函数声明在外面*/
void main()
{
char str[100];
printf("请输入一行字符串:");
gets(str);
str[strlen(str)]='#';
function(str);
}

void function(char str[])
{
int i=0,j=0,k=0;
char str1[30][30],str2[100];
int state = 0; //设制一个状态记录str[i]是不是字母, 0表示不是 1 表示是

for(i=0;str[i]!='\0';i++)
{
if((str[i]>='a' && str[i]<='z') || (str[i]>='A' && str[i]<='Z'))
{
str1[j][k]=str[i];
k++;
str1[j][k] ='\0'; /*字符串都以'\0'结尾所以每次都保持str1[i]是一个字符串, 复制给str2就不会出现少'\0'的情况啦*/
state = 1; //及时设置状态
}
else
{
if(state == 1) {j++;} //仅仅让单词存进去 别的字符就别存到str1中了
state = 0; //及时设置状态
k=0;
}
}
strcpy(str2,str1[0]);

for(i=1;i {
if(strlen(str1[i])>strlen(str2)) /*总是让str2保持是最长的字符串*/

strcpy(str2,str1[i]);
}
printf("该字符串中最长的单词是:%s\n",str2);
}
这段代码中为什么需要str[strlen(str)]='#'的目的是什么?

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-03-07 15:35
    关注

    为了处理文章的最后一个单词,必须让这个单词后面还有字符(否则没有界符,最后一个要单独判断)
    而#符号是一个基本正常输入不会遇到的字符,很适合作为这个字符,设置在输入文本的最后。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Pwm双极模式H桥驱动控制电机
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题