空格问题,逗号问题都考虑到了,就是不给过,实在找不到坑在哪,求大神来解答
描述
输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。
试输出第1个最长的单词和第1个最短单词。
输入
一行句子。
输出
两行输出:
第1行,第一个最长的单词。
第2行,第一个最短的单词。
样例输入
I am studying Programming language C in Peking University
样例输出
Programming
I
代码:
#include <stdio.h>
#include <string.h>
int main(){
char x[200000],y,z; //y为最大单词的起始地址 z为最小单词的起始地址
gets(x);
int i,count,max=-1,min=101;
for(i=0;i<strlen(x);i++)
{
count=0; //单词长度置为0
while(x[i]!=' '&&x[i]!='\0'&&x[i]!=',') //当字符不为空格 逗号 和 \0时词长度加一
{
count++;
i++;
}
if(count>max) //如果单词长度大于max就替换
{
max=count;
y=i-count; //同时把该单词的开始地址记为y
}
if(count<min&&count!=0) //如果单词长度小于min就替换
{
min=count;
z=i-count; //同时把该单词的开始地址记为z
}
}
for(i=y;x[i]!=' '&&x[i]!='\0'&&x[i]!=',';i++) //最大单词输出
printf("%c",x[i]);
printf("\n");
for(i=z;x[i]!=' '&&x[i]!='\0'&&x[i]!=',';i++) //最小单词输出
printf("%c",x[i]);
return 0;
}
你可以把逗号全部替换成空格,这样的只需要按照空格去截取字符串,获取每个字符串的长度,然后比较就可以了
坑就坑在你定义的y和z是char