用一个函数来实现将一行字符串中最长的单词输出。我是初学者,不要太复杂
2个回答
展开全部
#include<stdio.h>
#include<string.h>
/*以下6行,函数alphabetic,判断是否为字母*/
int alphabetic(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return(1);
else return(0);
}
/*以下30行,函数longest,计算最长单词的起始位置。*/
int shortest(char string[])
{
int len=1,i,flag,length=strlen(string),place=0,point;
/*flag表示单词是否开始,flag=0表示未开始,flag=1表示单词开始;
len表示单词以累计的字母个数;length表示先前单词中最短单词的长度;
point表示当前单词的起始位置;place表示最长单词的起始位置.*/
for(i=0;i<=strlen(string);i++)
{
if(alphabetic(string[i]))/*判断是否为字母*/
{
if(flag)/*是,开始*/
{
flag=0; point=i;
}
else len++;/*进入计算,+1*/
}
else/*不是,比较已统计*/
{
flag=1;
if(len<=length)
{
length=len;
place=point;
}
len=0;
}
}
return(place);
}
/*以下14行,主函数,调用shortest计算最长单词的起始位置,并输出*/
void main()
{
char line[1024];
int i,n=0;
printf("please input one line:\n");
gets(line);
printf("The shortest word is :");
for(i=shortest(line);alphabetic(line[i]);i++)
{
printf("%c",line[i]);
n++;
}
printf("\nThe length is %d.\n",n);
}
赞同0| 评论
#include<string.h>
/*以下6行,函数alphabetic,判断是否为字母*/
int alphabetic(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return(1);
else return(0);
}
/*以下30行,函数longest,计算最长单词的起始位置。*/
int shortest(char string[])
{
int len=1,i,flag,length=strlen(string),place=0,point;
/*flag表示单词是否开始,flag=0表示未开始,flag=1表示单词开始;
len表示单词以累计的字母个数;length表示先前单词中最短单词的长度;
point表示当前单词的起始位置;place表示最长单词的起始位置.*/
for(i=0;i<=strlen(string);i++)
{
if(alphabetic(string[i]))/*判断是否为字母*/
{
if(flag)/*是,开始*/
{
flag=0; point=i;
}
else len++;/*进入计算,+1*/
}
else/*不是,比较已统计*/
{
flag=1;
if(len<=length)
{
length=len;
place=point;
}
len=0;
}
}
return(place);
}
/*以下14行,主函数,调用shortest计算最长单词的起始位置,并输出*/
void main()
{
char line[1024];
int i,n=0;
printf("please input one line:\n");
gets(line);
printf("The shortest word is :");
for(i=shortest(line);alphabetic(line[i]);i++)
{
printf("%c",line[i]);
n++;
}
printf("\nThe length is %d.\n",n);
}
赞同0| 评论
展开全部
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 80
///////////////////////////////////////////////////////
//从line中找出最左边的最长的一个字符串,存放到r中
void compute(const char line[],char r[]);
///////////////////////////////////////////////////////
int main()
{
char line[N],r[N];
printf("Enter a string: "); gets(line);
compute(line,r);
printf("\nThe First Longest Word in the String is : %s\n\n",r);
system("pause"); return 0;
}
void compute(const char line[],char r[])
{
char c; int l=0,i,j,k;
char a[80][80];
//for(i=0;i<=strlen(line);i++) 去掉=
for(i=0;i<strlen(line);i++)
{
if(line[i]==' ');
else
{ //这里要加上括号
for(j=0;line[i]!=' ';i++,j++)
{
a[l][j]=line[i];
}
//a[l][j+1]='\0';
a[l][j]='\0';
l=l+1;
}
}
strcpy(r,a[0]);
//for(i=1;i<80;i++)
for(i=1;i<l;i++)
{
//if(strcmp(a[i],r)>0)
if( strlen(a[i]) > strlen(r) ) //要的是最长的,不是最大的!!
strcpy(r,a[i]);
}
}
#include <string.h>
#include <stdlib.h>
#define N 80
///////////////////////////////////////////////////////
//从line中找出最左边的最长的一个字符串,存放到r中
void compute(const char line[],char r[]);
///////////////////////////////////////////////////////
int main()
{
char line[N],r[N];
printf("Enter a string: "); gets(line);
compute(line,r);
printf("\nThe First Longest Word in the String is : %s\n\n",r);
system("pause"); return 0;
}
void compute(const char line[],char r[])
{
char c; int l=0,i,j,k;
char a[80][80];
//for(i=0;i<=strlen(line);i++) 去掉=
for(i=0;i<strlen(line);i++)
{
if(line[i]==' ');
else
{ //这里要加上括号
for(j=0;line[i]!=' ';i++,j++)
{
a[l][j]=line[i];
}
//a[l][j+1]='\0';
a[l][j]='\0';
l=l+1;
}
}
strcpy(r,a[0]);
//for(i=1;i<80;i++)
for(i=1;i<l;i++)
{
//if(strcmp(a[i],r)>0)
if( strlen(a[i]) > strlen(r) ) //要的是最长的,不是最大的!!
strcpy(r,a[i]);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询