C语言新手问个问题
编写一个函数,输入一行字符,将字符串中最长的单词输出。大家帮忙看下我的代码错在哪里,我查了很久都没看出来 #include<stdio.h>
#include<conio.h>
#include<string.h>
int zsh(char str[])
{
int i,j=0,n=0,c;
for(i=0;i<strlen(str);i++)
{
if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z'))
j++;
else
{
if(j>n)
{n=j;
c=i-n;}
j=0;
}
}
return (c);
}
int main(void)
{
char str[80];
int i;
printf("请输入一个字符串:\n");
gets(str);
printf("字符串中最长的单词为:\n");
for(i=zsh(str);(str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z');i++)
printf("%c",str[i]);
printf("\n");
getch();
}
我看了标准答案下,标准答案是以下代码:
#include<conio.h>
#include<stdio.h>
#include<string.h>
void main()
{
int alphabetic(char);
int longest(char []);
int i;
char line[100];
printf("input onr line:\n");
gets(line);
printf("The longest word is:");
for(i=longest(line);alphabetic(line[i]);i++)
printf("%c",line[i]);
printf("\n");
getch();
}
int alphabetic(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return (1);
else
return (0);
}
int longest(char string[])
{int len=0,i,length=0,flag=1,place=0,point;
for(i=0;i<=strlen(string);i++)
if(alphabetic(string[i]))
if(flag)
{point=i;
flag=0;
}
else
len++;
else
{
flag=1;
if(len>=length)
{
length=len;
place=point;
len=0;
}
}
return(place);
}
这个代码在alphabetic(string[i])返回0的时候,并且len<length的情况下根本没有初始化len,所以我觉得是错的,但是我运行了下,发现这个代码是正确的,谁能告诉下是怎么回事啊?
哪个大哥能解决我的疑问啊?我完全是自学,非常需要你们的帮助,谢谢了啊