用c语言怎么输出字符串中最长的单词?
//帮你改造一下:
创新互联主要从事网站建设、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务扶绥,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
#include stdio.h
#include string.h
void main()
{
char c[50];
void f(char c[50]);//不设返回值了,直接用函数f打印结果。
gets(c);
f(c);
}
void f(char c[50])
{
int len=0,lenth=0,i,flag=0;
for(i=0;c[i]!='\0';i++)
{
if(c[i]!=' ')
len++;
if(c[i]==' ')
{
if(lenlenth)
{
lenth=len;
flag = i - lenth;//当新的最长串出现时,用flag记录该串起始下标
}
len=0;
}
}
if(lenlenth)
{
lenth=len;
flag = i - lenth;//同理
}
printf("最长的子串长度为%d个字符,该子串为:",lenth);//打印子串长度
for(i = flag;i flag + lenth;i++)//打印子串,下标从flag到flag + lenth - 1
printf("%c",c[i]);
printf("\n");//换行
}
用c语言写一个函数,输入一行字符,将此字符串中最长的单词输出。要有详细解释
#include iostream
void main()
{
int word(char c);
int longest(char str[]);
int i;
char str[80];
printf("输入一行字符串\n\n");
gets(str);
printf("\n\n最长的单词为:\n\n");
for(i=longest(str);word(str[i]);i++)
printf("%c",str[i]);
printf("\n");
}
int word(char c)
{
if((c='a'c='z')||(c='A'c='Z')) return 1;
else return 0;
}
int longest(char str[])【这个函数几乎完全看不懂 望逐句详细解释其逻辑】
{
int i,flag=1,len=0,point,max_len=0,max_point;
for(i=0;i=strlen(str);i++)//解析每个字符
{
if(word(str[i])) //是英文字母的话
{
if(flag==1) //成立的话说明这个英文字母是单词的第一个
{
point=i; //单词第一个找到后改变标志
flag=0;
}
else len++; //开始对这个单词长度进行累加
}
else //非英文字母的话
{
flag=1; //等待第一个英文字母的出现,所以flag=1(要是下一个是英文字母的话就能执行上面的if)
if(lenmax_len)//之前累加的单词长度是否比上一个单词更长(第一次的话max_len初始化为0,len必大于max_len)
{
max_len=len;//将单词长度保存下来
max_point=point;//将最长单词的第一个英文字母在字符串中的位置保存下来
}
len=0;
}
}
return (max_point);
}
C语言用函数求字符串中最长单词.
#includestdio.h
#includestring.h
int main()
{
char str[100];
gets(str);
void findLongest(char str[]);
findLongest(str);
return 0;
}
void findLongest(char str[])
{
int currLen=0,maxLen=0,currStart=0,MaxStart=0;
int i=0,j=0;
for(i=0;str[i];i++)
{
if((str[i]='a'str[i]='z')||(str[i]='A'str[i]='Z'))
{
if(currLen==0)//当前长度等于0时,说明一个单词刚刚查找完,此时的位置为
currStart=i;//新单词的开始位置
currLen++;
}
if(currLenmaxLen)//当前单词的长度大于最大值,进行赋值
{
maxLen = currLen;
MaxStart = currStart;
}
if(str[i]==' ')//遇到空格,即一个单词已经结束。
{
currLen = 0;
}
}
for(j=MaxStart;jMaxStart+maxLen;j++)
printf("%c",str[j]);
}
运行效果:
扩展资料:
Return用法
1.含义:return表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,返回值可以是一个常量,变量,或是表达式。
2.作用:结束正在运行的函数,并返回函数值。
3.返回值:
计算结果表示函数执行的顺利与否(-1、0)返回值可以为各种数据类型,如:int,float,ouble,char,a[](数组),*a(指针),
结构或类(c++)返回类型规定了return后面所加的量的类型,如果返回类型声明为void,则不需要返回值。public static void Main()//程序入口只可以声明为void和int的返回
{
//不需要返回值就OK
}
public static void mm()
{
return;//有些时候,在void的方法中,你需要跳出它,可以直接用return而不能加任何量在后面
}
public static int cc()
{
return 321;//因为返回类型声明为int,所以返回一个整数
}
public static string msmsm()
{
return“asdfhasjghdg”;//因为返回类型声明为string,所以返回一个字符串
}
c语言函数的最长单词输出问题 新手求助大佬
void f(char a[])
{
int pos,tpos,len=0,tlen=0;
int i=0;
do
{
if ((a[i]='a' a[i]='z')||(a[i]='A' a[i]='Z'))
{
if (!tlen) tpos=i;
tlen++;
}
else
{
if (tlenlen)
{
pos=tpos;
len=tlen;
}
tlen=0;
}
}
while (a[i++]);
for (i=0;ilen;i++) printf("%c",a[pos+i]);
}
C语言求最长单词
#include stdio.h
#include string.h
int main(void)
{
char a[100];
char b[100];
int i,k,m;
int flag;
int t;
int count;
while(1)
{
flag = 0;
gets(a);
count = 0;
t = 0;
k = 0;
for(i = 0;i =strlen(a);i++)
{
if(a[i] != ' ' a[i] !='\0')
{
flag = 1;
count ++;
}
else
if(flag == 1)
{
if(t count)
{
t = count;
for(m = i-t; m i;m++)
{
b[k++] = a[m];
}
b[k] = '\0';
}
flag = 0;
count = 0;
k = 0;
}
}
puts(b);
}
}
分享文章:c语言函数最长单词 c++最长最短单词
分享网址:http://scgulin.cn/article/hijohe.html