免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 C/C++ help me
12下一页
最近访问板块 发新帖
查看: 1614 | 回复: 11
打印 上一主题 下一主题

help me [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-10-16 10:26 |只看该作者 |倒序浏览
#include <stdio.h>;
char *combine( char *seqa , char *seqb )
{
    char *tmpstr="" ;
    int  seqalen = strlen( seqa );
    int  seqblen = strlen( seqb );
    int  i = 0;
    int j = 0;
    int k = 0;
//    fprintf(stdout , "seqa=[%s]  seqb=[%s]\n" , seqa, seqb);
    /*为什么有上面这一行seqa的值不变,否则就变了*/
    while ( ( i < seqalen ) && ( j < seqblen ))
    {
        if( seqa < seqb[j] )
        {
            tmpstr[k] = seqa;
            i++;
            k++;
        }
        else
        {
            tmpstr[k] = seqb[j];
            k++;
            j++;
        }
    }
    while ( i < seqalen )
    {
            tmpstr[k] = seqa;
            i++;
            k++;
    }
    while ( j < seqblen )
    {
            tmpstr[k] = seqb[j];
            k++;
            j++;
    }
    tmpstr[k] = '\0' ;
    return tmpstr;
}
main()
{
     char *seq_a="bdfkxz";
     char *seq_b="celmt";
     char *seq_c;

     int seqclen=0;
     fprintf(stdout , "seq_a is [%s]  \n" , seq_a );
     seq_c = combine( seq_a , seq_b );
     seqclen = strlen(seq_c);
     fprintf(stdout , "seq_a is [%s]  \n" , seq_a );
     fprintf(stdout , "seq_b is [%s]  \n" , seq_b );
     fprintf(stdout , "seq_c is [%s]  seqclen=[%d]\n" , seq_c, seqclen );
}
程序如上,运行时,发现seq_a的值在调用combine后变了,为什么?

论坛徽章:
0
2 [报告]
发表于 2003-10-16 10:36 |只看该作者

help me


  1. #include <stdio.h>;
  2. char *combine( char *seqa , char *seqb )
  3. {
  4.         static char tmpstr[1024]="" ;
  5.         int seqalen = strlen( seqa );
  6.         int seqblen = strlen( seqb );
  7.         int i = 0;
  8.         int j = 0;
  9.         int k = 0;

  10. //        fprintf(stdout , "seqa=[%s] seqb=[%s]\n" , seqa, seqb);
  11.         /*为什么有上面这一行seqa的值不变,否则就变了*/
  12.         while ( ( i < seqalen ) && ( j < seqblen ))
  13.         {
  14.                 if ( seqa[i] < seqb[j] )
  15.                 {
  16.                         tmpstr[k] = seqa[i];
  17.                         i++;
  18.                         k++;
  19.                 } else
  20.                 {
  21.                         tmpstr[k] = seqb[j];
  22.                         k++;
  23.                         j++;
  24.                 }
  25.         }
  26.         while ( i < seqalen )
  27.         {
  28.                 tmpstr[k] = seqa[i];
  29.                 i++;
  30.                 k++;
  31.         }
  32.         while ( j < seqblen )
  33.         {
  34.                 tmpstr[k] = seqb[j];
  35.                 k++;
  36.                 j++;
  37.         }
  38.         tmpstr[k] = '\0' ;
  39.         return tmpstr;
  40. }

  41. main()
  42. {
  43.         char *seq_a="bdfkxz";
  44.         char *seq_b="celmt";
  45.         char *seq_c;

  46.         int seqclen=0;
  47. //        fprintf(stdout , "seq_a is [%s] \n" , seq_a );
  48.         seq_c = combine( seq_a , seq_b );
  49.         seqclen = strlen(seq_c);

  50.         fprintf(stdout , "seq_a is [%s] \n" , seq_a );
  51.         fprintf(stdout , "seq_b is [%s] \n" , seq_b );
  52.         fprintf(stdout , "seq_c is [%s] seqclen=[%d]\n" , seq_c, seqclen );
  53. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2003-10-16 10:53 |只看该作者

help me

干什么的程序?

论坛徽章:
0
4 [报告]
发表于 2003-10-16 11:17 |只看该作者

help me

谢谢HopeCao

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

help me

[quote]原帖由 "思一克"]干什么的程序?[/quote 发表:

这个应该是把两个字符串按升序排序吧。

论坛徽章:
0
6 [报告]
发表于 2003-10-16 12:12 |只看该作者

help me

不知道干啥。
因为:
seq_a = "zabcyd";
seq_b = "ybafdskkk";
调用了,什么结果,我没看出来。

论坛徽章:
0
7 [报告]
发表于 2003-10-16 13:24 |只看该作者

help me

楼上是想说
seq_a = "zabcyd";
seq_b = "ybafdskkk";

是用常量字符串赋值的?

论坛徽章:
0
8 [报告]
发表于 2003-10-16 13:47 |只看该作者

help me

程序是将两个顺序串按升序合并的

论坛徽章:
0
9 [报告]
发表于 2003-10-17 08:45 |只看该作者

help me

char *tmpstr="" ;
......
tmpstr[k] = seqb[j];
......
tmpstr[k] = seqb[j];
......
tmpstr不是连续空间啊
居然还可以活着
点解,点解

论坛徽章:
0
10 [报告]
发表于 2003-10-17 10:06 |只看该作者

help me

char *tmpstr="" ; 这也能定义出来??

这个是定义指针啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP