| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 984 人关注过本帖
标题:看看这个代码有神马问题 感觉写的不对呢
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:100 回复次数:6 
看看这个代码有神马问题 感觉写的不对呢
代码功能:递归直接输出反转字符串

程序代码:
#include <stdio.h>

void output(char * a)
{
    if(*a=='\0') return;
    output(++a);
    printf("%c",*(a-1));
}

int main() 
{
    char * a="abcdefg";
    output(a);
    return 0;
}
搜索更多相关主题的帖子: 神马 字符串 
2016-02-29 10:15
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:34 
有什么问题吗,运行正常。
图片附件: 游客没有浏览图片的权限,请 登录注册

   唯实惟新 至诚致志
2016-02-29 10:40
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
运行当然正常了  否则我也不贴了

只是对这里的  printf("%c",*(a-1));  a-1 有些疑惑

DO IT YOURSELF !
2016-02-29 10:47
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:34 
这代码没问题,a-1是因为递归时是++a,已经改变a的值了,所以要输出当前a指向的值,必须a-1或printf("%c",*(--a))亦可,如果调用递归语句是output(a+1),则输出就是printf("%c",*a)了。

能编个毛线衣吗?
2016-02-29 10:56
wengbin
Rank: 10Rank: 10Rank: 10
来 自:陕西西安
等 级:贵宾
威 望:19
帖 子:370
专家分:1846
注 册:2015-5-8
收藏
得分:34 
学习下

[此贴子已经被作者于2016-2-29 11:00编辑过]

2016-02-29 10:59
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
开始运行的时候printf("%c",*(a-1))不执行,直到output递归结束后才反向执行。递归到最后到达'\0'位置时才结束,所以要退一位输出上一个字母'g',同理,到'g'位置时,退一位输出上一个字母'e'。这个只好意会不好言传,你再想想。

[此贴子已经被作者于2016-2-29 11:06编辑过]


   唯实惟新 至诚致志
2016-02-29 11:02
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
这递归很容易理解。递归的目的是首先找到字符串尾部,然后逆出。等效的循环代码如下:
        char * a="abcdefg",*p;
        p=a;
    for(;*a!='\0';++a);   //相当于递归进,到字符串尾部停止
    for(;a!=p;--a)printf("%c",*(a-1));  //相当于递归出,一直到返回主函数结束

能编个毛线衣吗?
2016-02-29 11:13
快速回复:看看这个代码有神马问题 感觉写的不对呢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018692 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved