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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一个函数,输入一行字符,将此字符串中最长单词输出。相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<string.h>

int main()

int i,j,k,l;
char a[80],b[80],c[80];
gets(a);
for(i=0;i<strlen(a);i++)

for(j=0,k=i;k<strlen(a);j++,k++)

if((a[i]!=' '&&a[i+1]==' ')||(a[i]!=' '&&a[i+1]=='\0'))

b[j]=a[k];
strcpy(c,b);
break;

else if(a[i]==' '&&a[i+1]!=' ')

b[j]=a[i+1];
break;

else if(a[i]!=' '&&a[i+1]!=' ')

b[j]=a[k];



for(l=0;l<strlen(c);l++)
printf("%c",c[l]);
return 0;

拜托帮我改一下,谢谢

参考技术A #include<stdio.h>
#include<string.h>

int main()

int i,j,k,l;
char a[80],b[80],c[80];
c[0]='\0';
gets(a);
for(i=0;i<strlen(a);i++)

for(j=0,k=i;k<strlen(a);j++,k++)

if((a[k]!=' '&&a[k+1]==' ')||(a[k]!=' '&&a[k+1]=='\0'))

b[j]=a[k];
b[j+1]='\0';
if (strlen(b)>strlen(c))

strcpy(c,b);

break;

else if(a[k]==' '&&a[k+1]!=' ')

//b[j]=a[i+1];
break;

else if(a[k]!=' '&&a[k+1]!=' ')

b[j]=a[k];


i=k;


for(l=0;l<strlen(c);l++)
printf("%c",c[l]);

gets(a);
return 0;


===============================

修改你的地方:
1、开头加上c[0]='\0';,将c长度置为0 。
2、你多处k写成了i,帮你改回来。
3、b[j]=a[k];后加上b[j+1]='\0';,否则b字符串无结束标记。
4、strcpy(c,b);加上strlen(b)>strlen(c)的条件,否则你输出的是最后一个单词。
5、else if(a[k]==' '&&a[k+1]!=' ')中的b[j]=a[i+1];我不知道有什么作用,把它注释掉了。
6、for(j=0,k=i;k<strlen(a);j++,k++)循环后加上i=k;

我对c语言也不是很熟,按照标题的要求改的,运行通过,希望对你有所帮助!本回答被提问者和网友采纳
参考技术B 你可以有len()方法试试.

以上是关于编写一个函数,输入一行字符,将此字符串中最长单词输出。的主要内容,如果未能解决你的问题,请参考以下文章

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

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

c++:写一函数,输入一行字符,将此字符串中最长的单词输出。

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

C语言编程:写一个函数,输入一行字符,将此字符串中最长的单词输出.

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