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 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献