2. 用一个函数来实现将一行字符串中最长的单词输出。此行字符从主函数传递给该函数。C语言高手快出现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2. 用一个函数来实现将一行字符串中最长的单词输出。此行字符从主函数传递给该函数。C语言高手快出现相关的知识,希望对你有一定的参考价值。

2. 用一个函数来实现将一行字符串中最长的单词输出。此行字符从主函数传递给该函数。(1)把两个函数放在同一个程序文件中。
(2) 将两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行。
提示:
1. 寻找最长单词的起始位置函数:
int longest(charstring[])
//n为字符串的长度,len为每个单词的长度
//length为最长单词的长度,point为最长单词的起始位置
//函数返回最长单词的起始位置

int len=0,i,n,length=0,flag=,place=0,point;
n=strlen(string);
for(i=0;i<=n;i++)
ifstring[i]为英文字母
if(flag) point=i;flag=0;
else len++;
else

flag=1;
if(len>=length)

length=len;
place=point;
len=0;


return place;

在main函数中输入一行字符,然后调用上面函数取得最长字符的开始位置,从该位置开始输入数组元素,直到输出的数组元素不是英文字母时止。

把两个函数放在同一个程序文件中:

//函数返回最长单词的起始位置
int longest(char string[])

//n为字符串的长度,len为每个单词的长度
//length为最长单词的长度,point为最长单词的起始位置
int len,i,length=0,flag=0,place=0,point;
for(i=0;;++i)

if(string[i] >= 'a' && string[i] <= 'z' || string[i] >= 'A' && string[i] <= 'Z')

if(flag)

len=1;
point=i;
flag=0;

else

++len;


else

flag=1;
if(len>=length)

length=len;
place=point;


len=0;


if(string[i] == 0)
break;


return place;


int main(int argc, char* argv[])

longest(" fjfds  fjdsg fjsajg   fdhasg843 vhjgg gjagjgjfah f f   ");

return 0;




将两个函数分别放在两个程序文件中,作为两个文件进行编译、连接和运行:


将longest函数剪切后存放在另一个.c文件中,在int main前面加一行声明:

extern int longest(char string[]);

追问

八处错误啊亲

追答

哥们,俺用VC6编译通过了才贴上来的。

参考技术A 我看在abc()中楼主的思想是:把单词先一个个找出来存到d[50][50]中,然后再比较长短。
错误比较多,就不一一指出了,也难怪,楼主是新手。
我改了一下,贴在下面,请楼主对照自己的看吧。(我这个测试通过)

#include
#include
void abc(char c[],char e[50])

int i,j,k,x;
char d[50][50]=0;
for(i=0,j=0;;) //初始化,并开始无限循环,由内部决定何时跳出

k=0; //开始查找一个新单词
while(c[i]==' ') i++; //忽略开头的空格
while(c[i]!=' ' && c[i]!='\n') //记录这个单词直到遇到空格或回车

d[j][k]=c[i];
k++;
i++;

if(c[i]=='\n') break; //如果是回车,则所有单词都找完了,跳出循环
j++; //准备查下一个单词

strcpy(e,d[0]);
for(x=1;x<=j;x++)
if(strlen(e)<strlen(d[x])) strcpy(e,d[x]);

void main()

char a[200],b[50];;
printf("请输入一行字符串:");
for(int i=0;;i++)
a[i]=getchar();if(a[i]=='\n')break;
abc(a,b);
puts(b);

c语言输入一行字符将此字符串中最长的单词输出

这函数 我怎么没见过 是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(len>max_len)//之前累加的单词长度是否比上一个单词更长(第一次的话max_len初始化为0,len必大于max_len)

max_len=len;//将单词长度保存下来
max_point=point;//将最长单词的第一个英文字母在字符串中的位置保存下来

len=0;


return (max_point);
参考技术A #include <string>
#include <iostream>
using namespace std;

int main()

string s, t;
while (cin >> s)
if (s.size() > t.size()) t = s;
cout << t << endl;
return 0;

以上是关于2. 用一个函数来实现将一行字符串中最长的单词输出。此行字符从主函数传递给该函数。C语言高手快出现的主要内容,如果未能解决你的问题,请参考以下文章

编写一个函数,输和一行字符,将此字符串中最长的单词输出

写一个函数,输人一行字符,将此字符串中最长的单词输出

写一个函数,输人一行字符,将此字符串中最长的单词输出

c语言输入一行字符将此字符串中最长的单词输出

枚举--最长单词--蓝桥杯

一个c语言问题,编写一个函数,从键盘输入一行字符,将此字符串中最长和最短的单词输出