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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HML 中级黑马   /  2014-7-26 13:24  /  1367 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. #include <stdio.h>
  2. #include <string.h>

  3. int main()
  4. {
  5.     char chang[]="nbitheimanb";
  6.    
  7.     char duan[]="itheia";      //要判断的字符串
  8.    
  9.     int i = 0, j = 0;
  10.    
  11.     printf("最大公式子是:");
  12.    
  13.     for (; i < strlen(duan);  ) {          //遍历数组chang[]所有元素
  14.         for (; j < strlen(chang);  ) {     //遍历数组duan[]所有元素
  15.             
  16.             if (duan[i] == chang[j]) {     //判断是否连续有相同的元素
  17.                 printf("%c", duan[i]);
  18.                 break;                     //只有第一次相同就结束当前判断
  19.             }
  20.             j++;                           //j加1
  21.             
  22.             if (i == (strlen(duan) - 1)) { //当i最大值式,判断结束,后面不需要了
  23.                 printf("\n");              //并退出main函数
  24.                 return 0;
  25.             }
  26.         }
  27.         i++;
  28.     }
  29.     return 0;
  30. }
复制代码
以上式小菜我,编写的代码;判断已知的两个字符串中的最大公式子,还能精简吗?

6 个回复

倒序浏览
先不说精简,你这算法就是错的,实现不了预期功能。如果chang[] = "nbitheimanb" duan[] = "aitheia",你的输出结果就是错的
回复 使用道具 举报
fantacyleo 发表于 2014-7-26 14:19
先不说精简,你这算法就是错的,实现不了预期功能。如果chang[] = "nbitheimanb" duan[] = "aitheia",你的 ...

可运行结果为“ithei”。。求详细解答{:3_69:}
回复 使用道具 举报
HML 发表于 2014-7-26 15:12
可运行结果为“ithei”。。求详细解答

按你设定的两个字符串,结果是对的。换成我给出的两个,结果就不对了
回复 使用道具 举报
fantacyleo 发表于 2014-7-26 15:32
按你设定的两个字符串,结果是对的。换成我给出的两个,结果就不对了

那要怎么办才能判断,任意2个字符串的最大公式子呢?如果2个字符串中有2个公式子,并且长度一样、都是最长的公式子,又要怎么判断,还有其他的一些,情况。越想越复杂,超出我所学范围了>_<
回复 使用道具 举报
HML 发表于 2014-7-27 16:06
那要怎么办才能判断,任意2个字符串的最大公式子呢?如果2个字符串中有2个公式子,并且长度一样、都是最长 ...

完全没有超出你所学的C语言知识范围。这不是编程的问题,而是思路的问题。你可以试着先用自然语言把思路写下来,我觉得你是没有形成思路或没有能确定思路是正确的就开始写代码了。
回复 使用道具 举报
HML 中级黑马 2014-7-27 17:49:45
7#
fantacyleo 发表于 2014-7-27 16:10
完全没有超出你所学的C语言知识范围。这不是编程的问题,而是思路的问题。你可以试着先用自然语言把思路 ...

确实比较赶时间,我想了一下你吧itheia前面加个字母a。确实问题大了,思路不对,写出的代码针对性太强。感谢指导!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马