下面的代码为什么不能实现我想要的输出字符串的最长数
比如 i am a student
输出 student
c
# include <stdio.h>
# include <string.h>
int length=0;
void main()
{
char line[20];
gets(line);
int longest(char[]);
for (int i=longest(line);i<8;i++)
printf("%C",line[i]);
}
int longest (char str[])
{
int place=0;
int count=0;
for (int i=0;i<strlen(str);i++)
{if(str[i]!=' ')
count++;
else
if(count>length)
{length=count;
place=i;
}
count=0;
}
return place;
}
for (int i=longest(line);i<8;i++)
打错了
是 for (int i=longest(line);i<length;i++)
第1个回答 推荐于2018-05-10
你犯的都是一些小错误,在你程序基础上,帮你改过调试成功的程序
#include <conio.h>
# include <stdio.h>
# include <string.h>
int length=0;
int main()
{
char line[20];
int longest(char[],int *count);
int count = 0;
int j;
int i= 0;
gets(line);
i = longest(line,&count);
for (j = i;j<i+count;j++)
printf("%c",line[j]);
getch();
}
int longest (char str[],int *len)
{
int place=0;
int count=0;
for (int i=0;i<strlen(str);i++)
{
if(str[i]!=' ')
count++;
else if(count>length)
{
length=count;
place=i;
count=0;
}
}
*len = count;
place +=1;
return place;
}本回答被网友采纳
#include <conio.h>
# include <stdio.h>
# include <string.h>
int length=0;
int main()
{
char line[20];
int longest(char[],int *count);
int count = 0;
int j;
int i= 0;
gets(line);
i = longest(line,&count);
for (j = i;j<i+count;j++)
printf("%c",line[j]);
getch();
}
int longest (char str[],int *len)
{
int place=0;
int count=0;
for (int i=0;i<strlen(str);i++)
{
if(str[i]!=' ')
count++;
else if(count>length)
{
length=count;
place=i;
count=0;
}
}
*len = count;
place +=1;
return place;
}本回答被网友采纳
第2个回答 2019-07-04
1
在c语言中空字符用'\0'表示
2
扩展
'\0'对应的整型值是0,所以给一个字符变量赋值为空字符时,以下两种都是可以的
char ch='\0';char ch=0;
在c语言中空字符用'\0'表示
2
扩展
'\0'对应的整型值是0,所以给一个字符变量赋值为空字符时,以下两种都是可以的
char ch='\0';char ch=0;
第3个回答 2008-04-11
你的longest(line)返回的是最长单词的起始位置,那么i最终达到的位置就不是length,而是longest(line)+length
你的程序我给改了,输入要求最后一个单词后面也有一个空格,你看看吧
# include <stdio.h>
# include <string.h>
int longest(char*); //添加
int length=0;
void main()
{
int i=0,j=0;
char line[20];
gets(line);
j=longest(&line[0]);//添加
for (i=j-length;i<j;i++) //修改
printf("%C",line[i]);
}
int longest (char *str) //修改
{
int place=0;
int count=0;
int i=0;
for (i=0;i<strlen(str);i++)
{if(str[i]!=' ')
count++;
else if(count>length)
{length=count;
place=i;
count=0;
}
}
return place;
}
你的程序我给改了,输入要求最后一个单词后面也有一个空格,你看看吧
# include <stdio.h>
# include <string.h>
int longest(char*); //添加
int length=0;
void main()
{
int i=0,j=0;
char line[20];
gets(line);
j=longest(&line[0]);//添加
for (i=j-length;i<j;i++) //修改
printf("%C",line[i]);
}
int longest (char *str) //修改
{
int place=0;
int count=0;
int i=0;
for (i=0;i<strlen(str);i++)
{if(str[i]!=' ')
count++;
else if(count>length)
{length=count;
place=i;
count=0;
}
}
return place;
}
第4个回答 2008-04-11
你的int longest (char str[]) 表明返回值为一个整形数,而你需要的是一个整形指针指向一个字符串。本回答被提问者采纳
第5个回答 2020-04-11
1
在c语言中空字符用'\0'表示
2
扩展
'\0'对应的整型值是0,所以给一个字符变量赋值为空字符时,以下两种都是可以的
char
ch='\0';
char
ch=0;
在c语言中空字符用'\0'表示
2
扩展
'\0'对应的整型值是0,所以给一个字符变量赋值为空字符时,以下两种都是可以的
char
ch='\0';
char
ch=0;