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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 人生充满期待 中级黑马   /  2015-4-28 17:23  /  1421 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include <stdio.h>
//在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词
int main()
{
  char str[]="heima wo mashang lai le";
    //定义数组来存放字符串
    int max=0;
    //定义max为最长单词的个数

    char *p;
    char *p2;
    int i=0;
    //定义当前字符下标
   while(str[i]!='\0')
       //遍历当前字符串
    {
        int n=0;
        //定义当前单词长度,碰到空格重新归0
        while (str[i] != ' ' && str[i] != '\0')
        {
            n++;
            p=&str[i];
        }
        if (max < n)
            
        {
            max = n;
            p2=p;
        }
        //如果当前单词长度大于max,就把当前长度值n赋值给max,并且记录当前最长单词的首尾字母下标
        i++;
    }
   
    //最长的单词字符个数即为max

    printf("最长的单词是:");
    for(int m = 0; m < max ;m++)
        //用for循环输出最长单词的每个字符
    {
        printf("%c",*(p2+m));
    }
    printf("\n");
    return 0;
}

   
   

2 个回复

倒序浏览
  1. #include <stdio.h>
  2. //在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词
  3. int main()
  4. {
  5.   char str[]="heima wo mashang lai le";
  6.     //定义数组来存放字符串
  7.     int max=0;
  8.     //定义max为最长单词的个数

  9.     char *p;
  10.     char *p2;
  11.     int i=0;
  12.     //定义当前字符下标
  13.    while(str[i]!='\0')
  14.        //遍历当前字符串
  15.     {
  16.         int n=0;
  17.         //定义当前单词长度,碰到空格重新归0
  18.         while (str[i] != ' ' && str[i] != '\0')
  19.         {
  20.             n++;
  21.             p=&str[i];
  22.         }
  23.         if (max < n)
  24.             
  25.         {
  26.             max = n;
  27.             p2=p;
  28.         }
  29.         //如果当前单词长度大于max,就把当前长度值n赋值给max,并且记录当前最长单词的首尾字母下标
  30.         i++;
  31.     }
  32.    
  33.     //最长的单词字符个数即为max

  34.     printf("最长的单词是:");
  35.     for(int m = 0; m < max ;m++)
  36.         //用for循环输出最长单词的每个字符
  37.     {
  38.         printf("%c",*(p2+m));
  39.     }
  40.     printf("\n");
  41.     return 0;
  42. }

  43.    
  44.    
复制代码
回复 使用道具 举报
        //定义当前单词长度,碰到空格重新归0
        while (str[i] != ' ' && str[i] != '\0')
        {
            n++;
            printf("%d\n", n);   // 加上这句你就知道了,死循环
            p=&str[i];
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马