C语言-获取字符串中最长的单词.doc
文本预览下载声明
获取字符串中最长的单词
题目:写一函数,输入一行字符,将字符串中最长的单词输出。
说明:i、k用来遍历,flag作为是否是字母的标志,max表示最长单词的字母的个数,str[100]用来存放输入的字符串,ch[10]用来暂时存放各个单词,最多可存放10个字母的单词,str1[10]用来存放最长的单词。
#include stdio.h
#include string.h
char word(char str[])
{int i,k,flag=0,max=0;
char str1[10],ch[10];
for(i=0;str[i]!=\0;i++)
if((65=str[i]str[i]=90)||(97=str[i]str[i]=122)) \\如果该字符是字母
{if(flag==0) \\如果该字符是字母,且新单词未开始
{
k=0;
ch[k]=str[i];
flag=1;}
else if(i==strlen(str)-1) \\如果该字符是字母,新单词已开始,且已到达字符串结尾
{k++;
ch[k]=str[i];
ch[k+1]=\0;
if(k+1max) \\ k+1表示单词的长度
{max=k+1;
strcpy(str1,ch);
}
}
else \\如果该字符是字母,新单词已开始,且未到达字符串结尾
{k++;
ch[k]=str[i];
}
}
else if(flag==1) \\如果上一个单词已结束
{ch[k+1]=\0;
flag=0;
if(k+1max)
{max=k+1;
strcpy(str1,ch);
}
}
printf(输入的字符串中,最长的单词有%d个字母,该单词是%s\n,max,str1);
}
main()
{char a[100];
printf(请输入一行字符:\n);
gets(a);
word(a); \\调用word函数
}
函数大致流程图如下(“=”是赋值):
在C-FREE5.0上的运行结果:
从实参数组a中获取数据到数组str中。
i=0
Str[i]是字母
Flag==0
k=0
ch[k]=str[i]
flag=1
i=i+1
i==strlen(str)-1
Flag==1
k=k+1
ch [k]=str[i]
ch[k+1]=’\0’
k=k+1
ch [k]=str[i]
flag=1
ch [k+1]=’\0’
k+1max
max=k+1
strcpy(strl, ch)
是
是
是
是
否
是
否
否
Str[i]不等于结
束符’\0’
是
输出str1,结束
否
显示全部