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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© WANGJIAO 中级黑马   /  2014-10-23 19:43  /  683 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 WANGJIAO 于 2014-10-24 10:29 编辑

这样写为什么有时候可以,有时候不可以?大神快来救我~
  1. // 在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。(C语言)

  2.    #include <stdio.h>

  3.    #include <string.h>

  4.    int main(int argc, const char * argv[]) {
  5.       
  6.    //提示输入
  7.    printf("输入已知字符串:\n");
  8.    //接收数据
  9.    char str[200];
  10.    gets(str);
  11.    //分别定义变量来存储需要数据
  12.    int a = 0, b = 0, m = 0, max = 0;
  13.    //判断是否空格,以此来计算单词长度
  14.    for (int i = 0; i < strlen(str); i++) {
  15.       
  16.         if (str[i] == ' '||str[i]=='\0'){
  17.             //b = 0,第一次出现空格的下标减去零再减1,得到的字符串长度
  18.             a = (i - b)-1 ;
  19.             //把第一个空格的下标值赋给变量b保存
  20.             b = i;
  21.             //判断并存储最大值
  22.             if (max < a) {//把每一个字符串的长度与之前定义字符串长度的最大值比较
  23.                 //储存最大值
  24.                 max = a;
  25.                 //存储最长字符串后面空格的下标
  26.                 m = i;
  27.             }
  28.         }
  29.     }
  30.     printf("最长的单词是:");
  31.     for (int i = m-max; i < m; i++) {
  32.         //输出最长单词
  33.         printf("%c", str[i]);
  34.     }
  35.     //换行,美观
  36.     printf("\n");
  37.     //输出长度
  38.     printf("长度为:%d\n",max);
  39.     return 0;
  40.     }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马