C语言的一个题目

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

写高手帮忙,帮忙把注释写下哈~!小弟感谢啦

第1个回答  2010-01-24
1、在同一个程序文件中编译和运行
#include <stdio.h>
#include <string.h>
main()
{
char string[80];
int longest(char string[80]),i,j,m,n;
printf("输入一个字符串:");
gets(string);
n=strlen(string);
i=longest(string);
for(j=i;j<=n;j=j+1)
if (string[j]==' '|| j==n)
{
m=j;
break;
}
printf("该字符串中最长的单词是");
for (j=i;j<=m;j=j+1)
printf("%c",string[j]);
}

int longest(char string[80])
{
int i,j=0,point,flag=1,len=0,lenth=0,n;
n=strlen(string);
for (i=0;i<=n;i=i+1)
if (string[i]!=' ')
if(flag)
{
point=i;
flag=0;
len=1;
}
else
len=len+1;
else
{
flag=1;
if(len>=lenth)
{
lenth=len;
j=point;
len=0;
}
}
return(j);
}
2、在不同程序文件中进行编译、连接和运行
File1.c
#include <stdio.h>
#include <string.h>
void main()
{
char string[80];
int i,j,m,n;
extern longest(char string[80]);
printf("输入一个字符串:");
gets(string);
n=strlen(string);
i=longest(string);
for(j=i;j<=n;j=j+1)
if (string[j]==' '|| j==n)
{
m=j;
break;
}
printf("该字符串中最长的单词是");
for (j=i;j<=m;j=j+1)
printf("%c",string[j]);
}
File2.c
#include <stdio.h>
#include <string.h>
int longest(char string[80])
{
int i,j=0,point,flag=1,len=0,lenth=0,n;
n=strlen(string);
for (i=0;i<=n;i=i+1)
if (string[i]!=' ')
if(flag)
{
point=i;
flag=0;
len=1;
}
else
len=len+1;
else
{
flag=1;
if(len>=lenth)
{
lenth=len;
j=point;
len=0;
}
}
return(j);
}
第2个回答  2010-01-20
#include <stdio.h>
#include <string.h>

#define MAX 256 //允许输入的最大字符数为256,可以更改

int main (void)
{
char str[MAX];
int i, tmp;
str[0] = ' ';
for (i = 1; (tmp = getchar()) != '\n'; i++) //将输入结果保存到str[MAX]中
str[i] = tmp;
str[i] = '\0';

char *pstr[MAX] ; //定义指针数组,用来保存每个单词的首地址
tmp = 0;
for (i = 0; i < strlen (str) - 1; i++) //将每个单词的首地址放到指针数组中
{
if (str[i] == ' ' && str[i+1] != ' ')
pstr[tmp++] = &str[i+1];
}

int len = strlen (str); //将输入的字符串中的所有空格替换为 \0,比较容易计算单词长度
for (i = 0; i < len; i++)
{
if (*(str+i) == ' ')
*(str+i) = '\0';
}
int maxlen_id = 0; //最大单词长度的指针数组下标
int maxlen = 0; //最大长度
for (i = 0; i < tmp; i++) //依次计算所有单词长度,并保存到 maxlen_id 和maxlen中
{
if (strlen (pstr[i]) > maxlen)
{
maxlen_id = i;
maxlen = strlen (pstr[i]);
}
}

printf ("The word is %s\n", pstr[maxlen_id]);

return 0;
}本回答被网友采纳
相似回答