您的位置:程序门 -> c/c++ ->



菜鸟求助:我的这个递归函数哪里出了问题,关于字符串逆转的。。


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


菜鸟求助:我的这个递归函数哪里出了问题,关于字符串逆转的。。
发表于:2007-10-28 11:18:01 楼主
代码如下:

void   printstringreverse(char   *string,   int   i)
{
        if   (string[i]   !=   '\0')
        {
printstringreverse(string,   ++i);
        }
        else
return;
        printf("string[%d]   =   %c         ",   i,   string[i]);
}

int   main(void)
{
        char   a[]   =   "abcdef.";
        printstringreverse(a,   0);

        return   0;
}

是哪里出了问题呢   ?   再vc6上面运行结果为   :   string[7]   =   'a'     string[6]   =   '.'     ...................       string[1]   =   'b';
发表于:2007-10-28 11:28:151楼 得分:0
printstringreverse(string,   ++i);       //   把   ++i   改成   i   +   1
发表于:2007-10-28 11:43:392楼 得分:0
void   printstringreverse(char   *str,   int   i)  
{  
int   pos   =   i;
        if   (str[pos]   !=   '\0')  
        {  
if   (   (str[++pos])!=   '\0')
printstringreverse(str,   pos);
        }  
        printf("str[%d]   =   %c         ",   i,   str[i]);  
}  

int   main(void)  
{  
        char   a[]   =   "abcdef.";  
        printstringreverse(a,   0);  

        return   0;  
}  


vc6   通过
发表于:2007-10-28 13:09:503楼 得分:0
2楼的程序,我运行了下,出现的情况是吓了我一跳,一屏幕希奇古怪的字符...
发表于:2007-10-28 13:33:304楼 得分:0
c/c++ code
#include <stdio.h > void printstringreverse(char *string, int i) { ifstring[i] != '\0') { printstringreverse(string, i+1); } else return; printf("string[%d] = %c \n", i, string[i]); } int main(void) { char a[] = "abcdef."; printstringreverse(a, 0); return 0; }
发表于:2007-10-28 15:15:145楼 得分:0
c/c++ code
#include<stdio.h> void printstringreverse(char *string) { int i=strlen(string); while--i>=0) printf("string[%d] = %c \n", i, string[i]); } int main(void) { char a[]="abcdef."; printstringreverse(a); return 0; }
发表于:2007-10-28 17:22:476楼 得分:0
如4楼所说,printstringreverse(string,   ++i);   改变了i的值,
所以printf("string[%d]   =   %c         \n",   i,   string[i]);   就不是你所希望的值了。
改成   printstringreverse(string,   i+1);就行了。

而   if   (string[i]   !=     '\0   ')   不知道是你贴错了还是写错了,单引号中多了个空格。    
发表于:2007-10-28 22:58:047楼 得分:0
c/c++ code
http://www.cyberspace.org/~jhl/miscc.c /******************************************************************************* * function : char *strrvs(char *p); * author : lovecreatesbeauty@gmail_del.com [remove _del for email] * date : 2006.9 * description: make a copy of string s2 in reverse order, for example: * from 9876543210 to 0123456789 ******************************************************************************/
发表于:2007-10-29 00:23:058楼 得分:0
to   3楼
我的代码是经过检验的
贴上去可能会加多了空格
请你好好试下


快速检索

最新资讯
热门点击