c语言编程 写一个函数,输入一行字符,将此字符串中最长的单词输出.用最简单的方法

如题所述

#include "string.h"
#include "ctype.h"
main()
{
char str[50];
char str1[50][20];
char str2[20];
int i,j,t;

gets(str);

j=0,t=0;
for(i=0;str[i];i++) /*提取字符串中的单词,但是输入时每个单词之间只允许*/
{ /*有一个字符如空格,逗号只有句末才能用句号*/
if(isalnum(str[i]))
{
str1[j][t]=str[i];
t++;
}
if(str[i]==' '||str[i]==',')
{
str1[j][t]='\0';
j++;t=0;
}
}
str1[j][t]='\0';

for(i=0;i<j;++i) /*从提取出的单词中挑选其中最长的*/
{
if(strlen(str1[i])>=strlen(str1[i+1]))
{
strcpy(str2,str1[i]);
}
else
{
strcpy(str2,str1[i+1]);
}
}

printf("%s",str2); /*输出最长的单词*/
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-21
#include <stdio.h>
#include <string.h>
int main(void)
{
char st[121],*mx,*p;
scanf("%120[^\n]%*c",st);
mx=strtok(st," .,?!\t");
while (p=strtok(NULL," .,?!\t"))
if (strlen(mx)<strlen(p)) mx=p;
printf("%s",mx);
return 0;
}追问

很正确,我刚刚试了好几个都可以运行,但运行结果不正确。
你的很正确,但对我这个初学者来说 看不懂啊

追答

关键之处是strtok()函数的应用,您可以自行查找一下该函数的说明。

追问

strtok()函数是什么时候学 ?在大学课程里。 我还没有接触过。

追答

真正的学习是在课堂之外的,大学的初级C语言课堂几乎学不到任何C语言的高级知识。当你看过《C语言教程》、读过《C专家编程》、参考过《C语言核心技术》等著作后,就会明白真正的C语言是什么样子。

第2个回答  2012-12-21
用strlen这个函数函数获取字符串的长度,再比较就行了追问

还是不太清楚,刚接触,还不够了解。

追答

输入两个字符串a,b,这样判断if(strlen(a)<strlen(b))就可以

追问

谢谢啊

第3个回答  2012-12-21
strlen这个函数
第4个回答  2012-12-21
//测试过了,应该没问题
#include<stdio.h>
#include<string.h>
#include<ctype.h>
/*isalpha
函数名称: isalpha   
函数原型: int isalpha(int ch);   
函数功能: 检查ch是否是字母.   
函数返回: 是字母返回非0 ,否则返回 0.*/
int main()
{
char str[2048];
gets(str);
int i,max=0,begin=0,end=-1,b,e;
int flag=0;
for(i=0;str[i]!='\0';i++)
{
if(!isalpha(str[i])){
if(flag){
flag=0;
}
}else{
if(!flag){
flag=1;
begin=i;
}else{
end=i;
if(end-begin+1>max){
max=begin-end+1;
b=begin;
e=end;
}
}
}
}
str[e+1]='\0';
printf("%s\n",str+b);
return 0;
}本回答被网友采纳
相似回答