免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2967 | 回复: 6
打印 上一主题 下一主题

[函数] 面试题:编写一个函数subs(char *str)打印出str的所有子串 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-13 13:21 |只看该作者 |倒序浏览
编写一个函数subs(char *str)打印出str的所有子串
(例如1234的子串包括:1,2,3,4,12,13,14,23,24,34,123,234,1234)
不能使用系统提供的有关字符处理的类库,库函数.

论坛徽章:
0
2 [报告]
发表于 2005-08-13 14:08 |只看该作者

面试题:编写一个函数subs(char *str)打印出str的所有子串


  1. /* writed by kf701<kf_701@21cn.com>; */
  2. #include <stdio.h>;

  3. void subs(char *str){
  4.         unsigned long len = 0;
  5.         int i,j,k;
  6.         char *ptr1,*ptr2;

  7.         for(ptr1 = str;*ptr1 != 0;++ptr1)
  8.                 ++len;

  9.         for(i = 1;i<=len;++i){
  10.                 ptr1 = str;
  11.                 for(j = i;(len-(ptr1-str)) >;= j;++ptr1){
  12.                         k = j;
  13.                         ptr2 = ptr1;
  14.                         while(k-- >; 0){
  15.                                 putchar(*ptr2);
  16.                                 ++ptr2;
  17.                         }
  18.                         printf("\n");
  19.                 }
  20.         }
  21. }

  22. int main(int argc,char **argv){
  23.         subs(argv[1]);
  24.         exit(0);
  25. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2005-08-15 10:01 |只看该作者

面试题:编写一个函数subs(char *str)打印出str的所有子串

还不明白题目的意思.仔细看有点儿自相矛盾.
到底是求所有组合(可:为3时怎么只有123,234两组呢),还是要所有的子串(可是:13,14,24却不合题意).

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2005-08-15 10:35 |只看该作者

面试题:编写一个函数subs(char *str)打印出str的所有子串


  1. #include <stdio.h>;
  2. #include <stdlib.h>;

  3. void subs(char *str);

  4. int main(int argc, char *argv[])
  5. {
  6.         if (argc != 2) {
  7.                 printf("usage:%s input_string\n", argv[0]);
  8.                 exit(EXIT_FAILURE);
  9.         }
  10.         subs(argv[1]);
  11.         exit(EXIT_SUCCESS);
  12. }

  13. void subs(char *str)
  14. {
  15.         char    *start, *pos, *end;
  16.         start = pos = end = str;
  17.         do {
  18.                 while (*end) end++;     // put end pointer at the end of the str string.
  19.                 do {
  20.                         pos = start;
  21.                         while (pos != end) putchar(*pos++);
  22.                         putchar('\n');
  23.                 } while (--end != start);
  24.         } while (*(++start));
  25.         return ;
  26. }
复制代码

论坛徽章:
0
5 [报告]
发表于 2005-08-15 12:17 |只看该作者

面试题:编写一个函数subs(char *str)打印出str的所有子串

aero 你程序还是不行的,比如14 你程序就没打印出来

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
6 [报告]
发表于 2005-08-15 12:42 |只看该作者

面试题:编写一个函数subs(char *str)打印出str的所有子串

晕,没仔细看题,14也算子串啊?也不挨着啊?要是这样,可以直接写一个组合的程序了,然后找元素。

论坛徽章:
0
7 [报告]
发表于 2005-08-15 13:28 |只看该作者

面试题:编写一个函数subs(char *str)打印出str的所有子串

无聊的面试题,估计公司也不咋地
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP