正文

直接把main函数定义成递归实现字符串逆序输出2009-12-13 11:49:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/shenjinggege/50358.html

分享到:

#include<stdio.h> char s[100];char *p=s;//这是一个递归算法实现多个字符串的逆序输出//以下为例//输入://s1 s2 s3//输出://s3 s2 s1//i表示命令行参数的个数//如果命令行没输入参数,默认参数有一个参数,是程序的路径//所以这里i=1int main(int i,char *q){    //加了参数trace函数的调用的变量    static int count_main=0;    static int count_if=0;    if(!--i)        //第一次判断的时候i=1,--i=0,!0=1,所以满足条件    {        gets(s);    //读入多个字符串        printf("第%d次进入if",++count_if);    //输出第几次进入if语句        while(*p)++p; //循环p向后移动,找到字符串的结尾,注意空格不是结尾            for(;p---s;*p==32?*p=0,main(i,p):0);    //循环使p往前移动,直到遇到一个空格                                                //这时候执行*p=0,main(i,p)                                                //*p=0把空格赋值成空字符\0                                                //此时i=0,p指向第三个字符串前的空字符                                                //这样就把最后一个字符串分离了出来                                                //然后再次调用main函数                                                //这时--i=-1,!-1==0条件不成立                                                //所以跳过条件语句进入下面的输出                                                //这样就把最后一个字符串第一个输出                                                //这时程序回到第一次调用的main函数继续for循环                                                //原理同上把倒数第二个字符串也输出        return main(i,p);    //输出第一个字符串    }    printf("\n第%d次调用main函数,i=%d,输出",++count_main,i);    //输出一个分离出来的字符串    *++q?putchar(*q),main(2,q):0;        ~i||putchar(32);   //输出空格}完全可以另外定义一个函数用递归实现直接把main定义成递归的真够懒的

阅读(4896) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册