A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 萧雨流风 中级黑马   /  2014-10-9 08:31  /  821 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词

为什么使用 if(*p == ' ') 只能输出第一个单词,如果换成if(*p == '-')就可以输出最大的单词,求大神解答!!!

#include<stdio.h>

int main()
{
    // 定义字符串变量
    char string[180],*p,*p2,*p3;
    int i=0,max=0;
   
    // 提示输入字符串,并接收
    printf("请输入一段字符串:\n");
    scanf("%s", string);
    p = string;
   
    // 遍历字符串
    while(*p!='\0')
    {
        // 以空格作为分隔点,并找出最大的单词
        if(*p == ' ')
        {
            if(max<i)
            {
                max=i;
                i=0;
                p2=p-max;
                p3=p2;
            }else
                i=0;
        }

            i++;
            p++;

    }
   
    // 判断最后一个单词的长度
    if(max<i)
    {
        max=i;
        p2=p-max;
        p3=p2;
    }
   
    // 打出最大的单词
    printf("字符串中最长的单词是:");
    while (p2<p3+max) {

        if (*p2=='-') {
            p2++;
            continue;
        }
        printf("%c", *p2);
        p2++;
    }
    printf("\n");
}


3 个回复

倒序浏览
没人会吗
回复 使用道具 举报
你写成  \32试试?
回复 使用道具 举报
Lizzie 发表于 2014-10-9 14:27
你写成  \32试试?

还是不可以
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马