#include<stdio.h>
#include<string.h>
int main()
{
//void max(char[], char[]);
char a[100], b[100],c[100];
int i, j= 0, k = 0, n,m;
gets(a);
n = strlen(a);
for (i = 0; i<n; i++)
{
if ((a[i] >= 'A'&&a[i] <= 'Z') || (a[i] >= 'a'&&a[i] <= 'z'))
{
b[j++] = a[i];
}
else if (j > k)
{
for (m = 0; m < j; m++)
{
c[m] = b[m];
}
k = m;
j = 0;
}
else if (j <= k)
j = 0;
}
c[k] = '\0';
printf("%s", c);
}
楼主的代码修改如下,供参考:
#include<stdio.h>
#include<string.h>
int main()
{
//void max(char[], char[]);
char a[100], b[100],c[100];
int i, j=0, k=0, n,m;
gets(a);
n = strlen(a);
for (i = 0; i<n+1; i++)//for (i = 0; i<n; i++)
{
if ((a[i] >= 'A'&&a[i] <= 'Z') || (a[i] >= 'a'&&a[i] <= 'z'))
{
b[j++] = a[i];
}
else if (j > k)
{
for (m = 0; m < j; m++)
{
c[m] = b[m];
}
k = j;//k = m;
j = 0;
}
else if (j <= k)
j = 0;
}
c[k] = '\0';
printf("%s\n", c);
}
#include <stdio.h>
#include <string.h>
int main()
{
char s[128];
char *p1, *p2;
int max=0, len=0;
printf("Input a string: ");
gets(s);//此处用get更好,get会将空格也输入
p1=s;
for (int i=0; i<=strlen(s); i++)
{
if ((s[i]==' ') || (s[i]=='\0')) // 如果当前字符为空格或结束,则比较当前单词长度是否大于最大值,再将长度复位。
{
if (len>max)
{
max=len;
p2=p1;
}
len=0;
}
else // 如果当前字符非空,如果当前长度为0,则表示新单词。
{
if (len==0)
p1=&s[i];
len++;
}
}
while (*p2 && *p2!=' ')
printf("%c", *p2++);
}
代码直接用VS2010调试,除了gets需要改为gets_s外,输入 hello chinese yes ok,输出的c内容是chinese,没啥问题啊
判断的时候,字符串最后一个单词没有识别出来,最简单的修改方式是,在你读取的字符串末尾加一个空格,然后长度+1,这样就可以了。代码修改如下,如有帮助,请采纳一下,谢谢。
#include<stdio.h>
#include<string.h>
int main()
{
//void max(char[], char[]);
char a[100], b[100],c[100];
int i, j= 0, k = 0, n,m;
gets(a);
n = strlen(a);
//修改的地方:在字符串最后加一个空格,然后长度+1
a[n] = ' ';
n = n+1;
for (i = 0; i<n; i++)
{
if ((a[i] >= 'A'&&a[i] <= 'Z') || (a[i] >= 'a'&&a[i] <= 'z'))
{
b[j++] = a[i];
}
else if (j > k)
{
for (m = 0; m < j; m++)
{
c[m] = b[m];
}
k = m;
j = 0;
}
else if (j <= k)
j = 0;
}
c[k] = '\0';
printf("%s", c);
}
您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~
ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓
【电脑端】戳>>> https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】 戳>>> https://mall.csdn.net/item/52471?utm_source=1146287632