69,371
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<string.h>
int main(int argc, char* argv[])
{
char s[100],a[10][10],b[10];
int i,j,k,len,flag;
gets(s); //输入一字符串:good morning teacther
len=strlen(s); //取得字符串的长度值
j=0;k=0;flag=0; //初始化
for(i=0;i<len+1;i++) //注意i<len+1
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')//判断是否是字母,是就是单词,一个一个字符去判断
{
a[k][j]=s[i]; //把每个单词的每个字符记录到a[0][1]...a[0][10],一个单词一行.
j++; //good a[0][0-10]
flag=1; //morning a[1][0-10]
} //teacther a[2][0-10]
else if(flag==0) //如果不是字母,判断是否是单词的头部
continue;
else //否则就是尾部
{
a[k][j]='\0'; //每个单词的结束符
k++; //进入下一个单词准备
j=0; //a[k][0]
flag=0; //标志复位
}
/*上面这段代码执行完,数组a中的结果:a[10][10]={"good\0",
"morning\0",
"teacther\0"
}
*/
for(i=0;i<k;i++) //输出字符串中的单词,一个单词一行
puts(a[i]); //a[0][0]..... good
//a[1][0] morning
//a[2][0] teacther
strcpy(b,a[0]); //把a[0]数组中第一个单词拷贝到数组b中,作为比较单词长度的初始值
for(i=1;i<k;i++)
if(strlen(a[i])>strlen(b))//与数组a中其他单词比较长度
strcpy(b,a[i]); // 找到最长单词,放入b数组中
puts(b); //输出最长的单词 teacther
return 0;
}
#include<stdio.h>
#include<string.h>
void main()
{
char s[100],a[10][10],b[10];
int i,j,k,len,flag;
gets(s);//输入字符串
len=strlen(s); //取字符串长度
j=0;k=0;flag=0;
for(i=0;i<len+1;i++) //逐个字符处理输入字符串
if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z') //凡是引文字母,即认为此字符为单词一部分
{
a[k][j]=s[i]; //单词的字符逐个存入二维数组a, 一共10个单词,每单词长不超过10个字符, 所以a[10][10]
j++;
flag=1; //不是单词结尾
}
else if(flag==0) //继续取下一个单词
continue;
else //一个单词结束保存
{
a[k][j]='\0';
k++;
j=0;
flag=0;
}
for(i=0;i<k;i++)
puts(a[i]); //输出得到的每个单词
strcpy(b,a[0]);//求最长单词
for(i=1;i<k;i++) //遍历每个单词
if(strlen(a[i])>strlen(b)) //每个单词和b里保存单词比较长度
strcpy(b,a[i]); //如果比b里单词长, 取代b里单词
puts(b); //输出最长单词
}