我写了一个统计一个字符串中最长的单词的程序,但是总是上几不对,请赐教!!

来源:百度知道 编辑:UC知道 时间:2024/06/15 08:53:44
#include"stdio.h"
#include"string.h"
main()
{
int len;
int max;
char line[20];
char longest[20];
max=0;
while((len=strlen(getword(line,20)))>0)
if(len>max){
max=len;
copy(longest,line);
}

if(max>0)
printf("%s",longest);
return 0;
}
char getword(char s[],int lim)
{
int c,i;
for(i=0;(c=getchar())!=' '&&c!='\0'&&i<lim;i++)
s[i]=c;
return s[i];
}
void copy(char to[],char from[])
{
int i;
i=0;
while((to[i]=from[i])!='\0')
i++;
}

while((len=strlen(getword(line,20)))>0) //getword返回的是一个字符,不应该对字符求strlen而应该是指针.
if(len>max){
max=len;
copy(longest,line);
}

if(max>0)
printf("%s",longest);
return 0;
}
//可以这样改.
char getword(char s[],int lim) //char 改为char *
{
int c,i;
for(i=0;(c=getchar())!=' '&&c!='\0'&&i<lim;i++)
s[i]=c;
//这里面要进s加一个结束符.s[i]='\0';当然上面的i<lim改为i<lim-1;
return s[i]; //此处为return s;
}

用不着那么复杂,完全可以使用string.h和conio.h中提供的库函数,修改如下:
#include "stdio.h"
#include "string.h"
#include "conio.h"

#define N 80

main()
{
int len;
int max;
char line[N]; // 数组声明的长一点,因为一行有80个字符
char longest[N];
max=0;
do {
gets(line); // 从控制台读取一行,以回车为该行的结束符。
len = strlen(line);
if( max < len ) { // 若最大行比当前行长度短
max = len;

我写了一个统计一个字符串中最长的单词的程序,但是总是上几不对,请赐教!! C++编程:统计一个英文字符串中最长单词及其长度 写一个函数,由实参传来一个字符串,统计字符串中的字母,数字,空格和其他字符的个数,在主函数中输入字符串 vb 统计一个字符串中每种字符出现的频次 写一个C函数 要求找出字符串中最长的由相同字符组成的子串 输出 写一个函数,统计或判断通过键盘输入的字符串中的字母.要求在主函数中输入、输出字符串以及其中的字母个数. 编写程序读入一个字符串,统计该字符串中出现的字符及次数,输出结果。 编一个函数由实参传来一个字符串,统计此字符串中字母,数字,和其他字符个数。 编写一个程序,用于接受一个字符串,并统计某字符在该字符串中出现的次数 编写一个程序,统计一个字符串中包含多少个汉字?